wiki-viewer 3.0.5 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +3 -3
  16. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js +9 -8
  24. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js +1 -1
  28. package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/share/[token]/route.js +9 -8
  30. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/wiki/app/route.js +4 -3
  41. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/[slug]/route.js +5 -4
  53. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/[slug]/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/route.js +5 -4
  55. package/.next/standalone/.next/server/app/api/wiki/hosted-apps/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/wiki/preview-token/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/wiki/scratch/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/app/[slug]/[[...rest]]/route.js +5 -4
  69. package/.next/standalone/.next/server/app/app/[slug]/[[...rest]]/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/s/[token]/page/react-loadable-manifest.json +6 -3
  73. package/.next/standalone/.next/server/app/s/[token]/page.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_12q-bgc.js +3 -0
  77. package/.next/standalone/.next/server/chunks/{[externals]__0pbxe4i._.js → [externals]__0k160xp._.js} +2 -2
  78. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-eaqv1._.js +4 -0
  79. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0490w4y._.js +3 -0
  80. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d619fd._.js +3 -0
  81. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__128augu._.js → [root-of-the-server]__0i9yw0.._.js} +3 -3
  82. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k2nouu._.js +1 -1
  83. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0skgiv0._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z5f4h8._.js +3 -0
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~-~tiv._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/[root-of-the-server]__101dr96._.js +4 -4
  87. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10gr1bo._.js +20 -0
  88. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11ltgmp._.js +4 -4
  89. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12xtht5._.js +3 -0
  90. package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_10cht08._.js → 0~w0_katex_dist_katex_mjs_0q62ivk._.js} +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0cvdst3._.js → [root-of-the-server]__01rzr4_._.js} +2 -2
  92. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gvf9ub._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/ssr/_0_j0j3f._.js +187 -0
  94. package/.next/standalone/.next/server/chunks/ssr/_0x_nhpz._.js +3 -0
  95. package/.next/standalone/.next/server/chunks/ssr/_0ydcz3a._.js +3 -0
  96. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0dir6h3._.js → node_modules__pnpm_02ffwq1._.js} +1 -1
  97. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0tc8zr6._.js → node_modules__pnpm_050~9nq._.js} +2 -2
  98. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t6xsn9._.js → node_modules__pnpm_08m7m-a._.js} +1 -1
  99. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ue8lv5._.js → node_modules__pnpm_0_.yify._.js} +2 -2
  100. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0g.7k_n._.js → node_modules__pnpm_0aqjih7._.js} +1 -1
  101. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_00tpvdu._.js → node_modules__pnpm_0d49_zw._.js} +1 -1
  102. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0a6kqvf._.js → node_modules__pnpm_0dp1x47._.js} +1 -1
  103. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0djcgeo._.js → node_modules__pnpm_0eorjeh._.js} +1 -1
  104. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gh6xw7._.js → node_modules__pnpm_0gsozg1._.js} +1 -1
  105. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0v~pnm.._.js → node_modules__pnpm_0i4r.y0._.js} +2 -2
  106. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_05jxr.d._.js → node_modules__pnpm_0ibur64._.js} +2 -2
  107. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0qhuwah._.js → node_modules__pnpm_0m241jl._.js} +1 -1
  108. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0h5~9y~._.js → node_modules__pnpm_0mempoh._.js} +1 -1
  109. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0mus7ah._.js → node_modules__pnpm_0ourokm._.js} +1 -1
  110. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_00b2ftc._.js → node_modules__pnpm_0r.tt1v._.js} +2 -2
  111. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_029sanw._.js → node_modules__pnpm_0raxwvs._.js} +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0-y2e10._.js → node_modules__pnpm_0t4fzpm._.js} +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t9_wi1._.js → node_modules__pnpm_0tfz13_._.js} +1 -1
  114. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w.m8_8._.js → node_modules__pnpm_0u3pcuw._.js} +1 -1
  115. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0mwe-i3._.js → node_modules__pnpm_0um58j1._.js} +1 -1
  116. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_05m3zxe._.js → node_modules__pnpm_0uuq018._.js} +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0oqzhc1._.js → node_modules__pnpm_0w9yy9l._.js} +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0g_0et~._.js → node_modules__pnpm_0whqcle._.js} +1 -1
  119. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09h4wu8._.js → node_modules__pnpm_0zf4hna._.js} +1 -1
  120. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_01mrx7s._.js → node_modules__pnpm_0~ifp4a._.js} +2 -2
  121. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hptidd._.js → node_modules__pnpm_10j.ii0._.js} +2 -2
  122. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~ycrqy._.js → node_modules__pnpm_13xyy7r._.js} +1 -1
  123. package/.next/standalone/.next/server/chunks/ssr/src_app_s_[token]_page_tsx_0_fzrmd._.js +3 -0
  124. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  125. package/.next/standalone/.next/server/middleware.js +2 -2
  126. package/.next/standalone/.next/server/pages/500.html +1 -1
  127. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  129. package/.next/standalone/.next/static/chunks/0.4z79b01ogty.js +185 -0
  130. package/.next/standalone/.next/static/chunks/04rw10yyyszwm.js +1 -0
  131. package/.next/standalone/.next/static/chunks/{136jk6_h2z_jw.js → 0atu_qcd~4ox3.js} +1 -1
  132. package/.next/standalone/.next/static/chunks/0awx2jmztt7~v.js +1 -0
  133. package/.next/standalone/.next/static/chunks/0azp.ftsp.56w.js +1 -0
  134. package/.next/standalone/.next/static/chunks/{0lsw6lsaj7lby.js → 0ebe2favul_io.js} +1 -1
  135. package/.next/standalone/.next/static/chunks/0f8vcij0xcgfj.css +1 -0
  136. package/.next/standalone/.next/static/chunks/0gcwvlawxhe9m.js +1 -0
  137. package/.next/standalone/.next/static/chunks/0geoueeyd9~sr.js +12 -0
  138. package/.next/standalone/.next/static/chunks/0vf2x0i9qqll7.js +1 -0
  139. package/.next/standalone/.next/static/chunks/{0ccw-uc_3ao.w.js → 0wk88u86juf-9.js} +1 -1
  140. package/.next/standalone/.next/static/chunks/{12-umagms5yro.css → 0~~v9pq1icp09.css} +15 -15
  141. package/.next/standalone/.next/static/chunks/16m10irvo-y13.js +1 -0
  142. package/.next/standalone/.next/static/chunks/{0_6~i5v43qpgh.js → 1700k0l32z3_f.js} +1 -1
  143. package/.next/standalone/package.json +1 -1
  144. package/.next/standalone/server.js +1 -1
  145. package/package.json +1 -1
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ovz0q._.js +0 -4
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05h6fe-._.js +0 -20
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07757zz._.js +0 -4
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ah~dki._.js +0 -3
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pftyle._.js +0 -4
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qwikxp._.js +0 -4
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~q~4xc._.js +0 -4
  153. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_chunk-EIO257PC_0bbzsue.js +0 -24
  154. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_data_image-GAAHSSAO_02qfk03.js +0 -3
  155. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ar-SA-G6X2FPQ2_0bgz3ij.js +0 -12
  156. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_az-AZ-76LH7QW2_0l.fl3a.js +0 -3
  157. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_bg-BG-XCXSNQG7_04hl.7k.js +0 -7
  158. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_bn-BD-2XOGV67Q_01xbnnb.js +0 -7
  159. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ca-ES-6MX7JW3Y_0wojdyn.js +0 -10
  160. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_cs-CZ-2BRQDIVT_033w-8o.js +0 -13
  161. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_da-DK-5WZEPLOC_0p28n6z.js +0 -7
  162. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_de-DE-XR44H4JA_091-v9i.js +0 -10
  163. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_el-GR-BZB4AONW_0e~_nvm.js +0 -12
  164. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_en-B4ZKOASM_0re7gz~.js +0 -3
  165. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_es-ES-U4NZUMDT_0.ma57u.js +0 -11
  166. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_eu-ES-A7QVB2H4_0-3jlza.js +0 -13
  167. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_fa-IR-HGAKTJCU_0kyo75j.js +0 -10
  168. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_fi-FI-Z5N7JZ37_03~-wak.js +0 -8
  169. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_fr-FR-RHASNOE6_0vj4.6m.js +0 -11
  170. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_gl-ES-HMX3MZ6V_0ge3k2a.js +0 -12
  171. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_he-IL-6SHJWFNN_02mvq6w.js +0 -12
  172. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_hi-IN-IWLTKZ5I_0ykyas7.js +0 -6
  173. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_hu-HU-A5ZG7DT2_0qes2r3.js +0 -9
  174. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_id-ID-SAP4L64H_10-q2pe.js +0 -12
  175. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_it-IT-JPQ66NNP_0v01xnc.js +0 -13
  176. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ja-JP-DBVTYXUO_0.eic25.js +0 -10
  177. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_kaa-6HZHGXH3_13id57-.js +0 -3
  178. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_kab-KAB-ZGHBKWFO_0jqbq6p.js +0 -10
  179. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_kk-KZ-P5N5QNE5_0y68938.js +0 -3
  180. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_km-KH-HSX4SM5Z_0t81hs4.js +0 -13
  181. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ko-KR-MTYHY66A_00hd9ok.js +0 -11
  182. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ku-TR-6OUDTVRD_0aj9zjv.js +0 -11
  183. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_lt-LT-XHIRWOB4_01n4nxs.js +0 -5
  184. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_lv-LV-5QDEKY6T_09th_og.js +0 -9
  185. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_mr-IN-CRQNXWMA_0f.mmnm.js +0 -15
  186. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_my-MM-5M5IBNSE_0cmji~9.js +0 -3
  187. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_nb-NO-T6EIAALU_0ku81lh.js +0 -12
  188. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_nl-NL-IS3SIHDZ_014e40r.js +0 -10
  189. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_nn-NO-6E72VCQL_0__ozrm.js +0 -10
  190. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_oc-FR-POXYY2M6_10wf8hz.js +0 -10
  191. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_pa-IN-N4M65BXN_0_-oitq.js +0 -6
  192. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_percentages-BXMCSKIN_0zq.~3u.js +0 -3
  193. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_pl-PL-T2D74RX3_0iycp0l.js +0 -11
  194. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_pt-BR-5N22H2LF_13u2gn5.js +0 -11
  195. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_pt-PT-UZXXM6DQ_06zpa4y.js +0 -11
  196. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ro-RO-JPDTUUEW_0smzsn~.js +0 -13
  197. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ru-RU-B4JR7IUQ_0k7tnk..js +0 -11
  198. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_si-LK-N5RQ5JYF_0smiu._.js +0 -3
  199. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_sk-SK-C5VTKIMK_0mw.bwx.js +0 -8
  200. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_sl-SI-NN7IZMDC_0a~zfj2.js +0 -8
  201. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_sv-SE-XGPEYMSR_13eyd19.js +0 -12
  202. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_ta-IN-2NMHFXQM_0gro~.p.js +0 -11
  203. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_th-TH-HPSO5L25_0g9-jlz.js +0 -4
  204. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_tr-TR-DEFEU3FU_0hz_ysn.js +0 -9
  205. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_uk-UA-QMV73CPH_0a-1zm_.js +0 -8
  206. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_vi-VN-M7AON7JQ_064lk16.js +0 -7
  207. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_zh-CN-LNUGB5OW_0tjfdi9.js +0 -12
  208. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_zh-HK-E62DVLB3_02lyow7.js +0 -3
  209. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_locales_zh-TW-RAJ6MFWO_0_w~-rv.js +0 -11
  210. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_subset-shared_chunk_0ul_fou.js +0 -3
  211. package/.next/standalone/.next/server/chunks/ssr/0e-l_@excalidraw_excalidraw_dist_prod_subset-worker_chunk_0zcuc2..js +0 -3
  212. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_directory-open-01563666_07ib74n.js +0 -3
  213. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_directory-open-4ed118d0_0b4y6i6.js +0 -3
  214. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_file-open-002ab408_0ez_z90.js +0 -3
  215. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_file-open-7c801643_0y_pemm.js +0 -3
  216. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_file-save-3189631c_0n_ka1t.js +0 -3
  217. package/.next/standalone/.next/server/chunks/ssr/0ga5_browser-fs-access_dist_file-save-745eba88_0zl-ssm.js +0 -3
  218. package/.next/standalone/.next/server/chunks/ssr/0lk~_image-blob-reduce_dist_image-blob-reduce_esm_mjs_12flbzg._.js +0 -3
  219. package/.next/standalone/.next/server/chunks/ssr/0o~2_canvas-roundrect-polyfill_roundRect_0e3y_~n.js +0 -3
  220. package/.next/standalone/.next/server/chunks/ssr/0sd7_pica_dist_pica_05egg_..js +0 -3
  221. package/.next/standalone/.next/server/chunks/ssr/0~w0_katex_dist_katex_mjs_0gmvgrf._.js +0 -3
  222. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0d89mrm._.js +0 -14
  223. package/.next/standalone/.next/server/chunks/ssr/_0d28.zp._.js +0 -3
  224. package/.next/standalone/.next/server/chunks/ssr/_0e1uo~z._.js +0 -3
  225. package/.next/standalone/.next/server/chunks/ssr/_0k6g8yo._.js +0 -187
  226. package/.next/standalone/.next/server/chunks/ssr/_0sr4wj.._.js +0 -110
  227. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0045hhh._.js +0 -3
  228. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_02uqova._.js +0 -3
  229. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_06xoojz._.js +0 -3
  230. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_085kv-l._.js +0 -3
  231. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0883ifk._.js +0 -17
  232. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_08wjj_6._.js +0 -3
  233. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_098q_0q._.js +0 -3
  234. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0_rahb~._.js +0 -26
  235. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0cxv0mk._.js +0 -17
  236. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0d34dhx._.js +0 -11
  237. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0deg.gs._.js +0 -31
  238. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0fbxocr._.js +0 -17
  239. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0fk6r5-._.js +0 -3
  240. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0gict7y._.js +0 -17
  241. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0mtv_af._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0orvks9._.js +0 -3
  243. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0oupw24._.js +0 -3
  244. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0rqsp1j._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0tnriso._.js +0 -17
  246. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0tz8-2x._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0uap1~z._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0w5u-~w._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0ws7ot~._.js +0 -3
  250. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0yect_i._.js +0 -45
  251. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0ygdthn._.js +0 -42
  252. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_0z7wvui._.js +0 -3
  253. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_1032cax._.js +0 -3
  254. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_107~rhn._.js +0 -17
  255. package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_13icm5c._.js +0 -3
  256. package/.next/standalone/.next/static/chunks/03d9mze.e_uaz.js +0 -12
  257. package/.next/standalone/.next/static/chunks/05cs75jhm80il.js +0 -185
  258. package/.next/standalone/.next/static/chunks/0_7f_-q0ts6hi.js +0 -1
  259. package/.next/standalone/.next/static/chunks/0dbqnlb6493qs.js +0 -1
  260. package/.next/standalone/.next/static/chunks/0drn9l.ihdwh-.js +0 -1
  261. package/.next/standalone/.next/static/chunks/0rows7ykoflq3.js +0 -1
  262. package/.next/standalone/.next/static/chunks/0ujpqxim7iqme.js +0 -1
  263. package/.next/standalone/.next/static/chunks/13yj3_o5lzr7c.css +0 -1
  264. /package/.next/standalone/.next/static/{RC2yGgJpI7BPjsVect9PK → UIhlbM5yWbVS3aIHrh_He}/_buildManifest.js +0 -0
  265. /package/.next/standalone/.next/static/{RC2yGgJpI7BPjsVect9PK → UIhlbM5yWbVS3aIHrh_He}/_clientMiddlewareManifest.js +0 -0
  266. /package/.next/standalone/.next/static/{RC2yGgJpI7BPjsVect9PK → UIhlbM5yWbVS3aIHrh_He}/_ssgManifest.js +0 -0
@@ -1,110 +0,0 @@
1
- module.exports=[373116,(a,b,c)=>{var d;b.exports=d={},d.simpleFilter=function(a,b){return b.filter(function(b){return d.test(a,b)})},d.test=function(a,b){return null!==d.match(a,b)},d.match=function(a,b,c){c=c||{};var d,e=0,f=[],g=b.length,h=0,i=0,j=c.pre||"",k=c.post||"",l=c.caseSensitive&&b||b.toLowerCase();a=c.caseSensitive&&a||a.toLowerCase();for(var m=0;m<g;m++)d=b[m],l[m]===a[e]?(d=j+d+k,e+=1,i+=1+i):i=0,h+=i,f[f.length]=d;return e===a.length?(h=l===a?1/0:h,{rendered:f.join(""),score:h}):null},d.filter=function(a,b,c){return b&&0!==b.length?"string"!=typeof a?b:(c=c||{},b.reduce(function(b,e,f,g){var h=e;c.extract&&(h=c.extract(e));var i=d.match(a,h,c);return null!=i&&(b[b.length]={string:i.rendered,score:i.score,index:f,original:e}),b},[]).sort(function(a,b){var c=b.score-a.score;return c||a.index-b.index})):[]}},739639,(a,b,c)=>{var d=0/0,e=/^\s+|\s+$/g,f=/^[-+]0x[0-9a-f]+$/i,g=/^0b[01]+$/i,h=/^0o[0-7]+$/i,i=parseInt,j=a.g&&a.g.Object===Object&&a.g,k="object"==typeof self&&self&&self.Object===Object&&self,l=j||k||Function("return this")(),m=Object.prototype.toString,n=Math.max,o=Math.min,p=function(){return l.Date.now()};function q(a){var b=typeof a;return!!a&&("object"==b||"function"==b)}function r(a){if("number"==typeof a)return a;if("symbol"==typeof(b=a)||b&&"object"==typeof b&&"[object Symbol]"==m.call(b))return d;if(q(a)){var b,c="function"==typeof a.valueOf?a.valueOf():a;a=q(c)?c+"":c}if("string"!=typeof a)return 0===a?a:+a;a=a.replace(e,"");var j=g.test(a);return j||h.test(a)?i(a.slice(2),j?2:8):f.test(a)?d:+a}b.exports=function(a,b,c){var d,e,f,g,h,i,j=0,k=!1,l=!1,m=!0;if("function"!=typeof a)throw TypeError("Expected a function");function s(b){var c=d,f=e;return d=e=void 0,j=b,g=a.apply(f,c)}function t(a){var c=a-i,d=a-j;return void 0===i||c>=b||c<0||l&&d>=f}function u(){var a,c,d,e=p();if(t(e))return v(e);h=setTimeout(u,(a=e-i,c=e-j,d=b-a,l?o(d,f-c):d))}function v(a){return(h=void 0,m&&d)?s(a):(d=e=void 0,g)}function w(){var a,c=p(),f=t(c);if(d=arguments,e=this,i=c,f){if(void 0===h)return j=a=i,h=setTimeout(u,b),k?s(a):g;if(l)return h=setTimeout(u,b),s(i)}return void 0===h&&(h=setTimeout(u,b)),g}return b=r(b)||0,q(c)&&(k=!!c.leading,f=(l="maxWait"in c)?n(r(c.maxWait)||0,b):f,m="trailing"in c?!!c.trailing:m),w.cancel=function(){void 0!==h&&clearTimeout(h),j=0,d=i=e=h=void 0},w.flush=function(){return void 0===h?g:v(p())},w}},973220,a=>{"use strict";let b,c;var d,e=a.i(674164),f=a.i(739159),g=a.i(410672),h=a.i(237407),i=a.i(235549),j=a.i(715190),k=a.i(827647),l=a.i(463788),m=a.i(333481),n=a.i(710149),o=a.i(699570),p=a.i(866718),q=a.i(591119),r=a.i(301148),s=a.i(681204),t=a.i(335732),u=a.i(713033);function v({className:a}){let b=(0,u.useViewWidthStore)(a=>a.width),c=(0,u.useViewWidthStore)(a=>a.setWidth),d=(0,u.useViewWidthStore)(a=>a.align),f=(0,u.useViewWidthStore)(a=>a.setAlign);return(0,e.jsxs)(t.DropdownMenu,{children:[(0,e.jsx)(t.DropdownMenuTrigger,{asChild:!0,children:(0,e.jsx)(o.Button,{size:"sm",variant:"ghost",className:`h-7 w-7 p-0 ${a??""}`,title:`Content width: ${u.VIEW_WIDTH_LABEL[b]}`,children:(0,e.jsx)(s.AlignJustify,{className:"h-3.5 w-3.5"})})}),(0,e.jsxs)(t.DropdownMenuContent,{align:"end",className:"w-36",children:[(0,e.jsx)(t.DropdownMenuLabel,{className:"text-[11px] text-muted-foreground",children:"Width"}),u.VIEW_WIDTH_ORDER.map(a=>(0,e.jsxs)(t.DropdownMenuItem,{onClick:()=>c(a),className:"flex items-center justify-between text-xs",children:[u.VIEW_WIDTH_LABEL[a],a===b&&(0,e.jsx)(l.Check,{className:"h-3.5 w-3.5"})]},a)),(0,e.jsx)(t.DropdownMenuSeparator,{}),(0,e.jsx)(t.DropdownMenuLabel,{className:"text-[11px] text-muted-foreground",children:"Alignment"}),u.VIEW_ALIGN_ORDER.map(a=>(0,e.jsxs)(t.DropdownMenuItem,{onClick:()=>f(a),className:"flex items-center justify-between text-xs",children:[u.VIEW_ALIGN_LABEL[a],a===d&&(0,e.jsx)(l.Check,{className:"h-3.5 w-3.5"})]},a))]})]})}var w=a.i(796873),x=a.i(453590),y=a.i(111939);function z({className:a}){let{resolvedTheme:b,setTheme:c}=(0,y.useTheme)();return(0,e.jsx)(o.Button,{size:"sm",variant:"ghost",className:`h-7 w-7 p-0 ${a??""}`,title:"dark"===b?"Switch to light":"Switch to dark",onClick:()=>c("dark"===b?"light":"dark"),children:"dark"===b?(0,e.jsx)(x.Sun,{className:"h-3.5 w-3.5"}):(0,e.jsx)(w.Moon,{className:"h-3.5 w-3.5"})})}var A=a.i(765021),B=a.i(360878),C=a.i(211789),D=a.i(175853),E=a.i(393282),F=a.i(756763),G=a.i(66623),G=G,H=a.i(996578),I=a.i(613646),J=a.i(421999),K=a.i(119349),L=m;let M={get url(){return`file://${a.P("node_modules/.pnpm/jotai@2.11.0_@types+react@19.2.14_react@19.2.5/node_modules/jotai/esm/vanilla.mjs")}`}},N=0;function O(a,b){let c=`atom${++N}`,d={toString(){return(M.env?M.env.MODE:void 0)!=="production"&&this.debugLabel?c+":"+this.debugLabel:c}};return"function"==typeof a?d.read=a:(d.init=a,d.read=P,d.write=Q),b&&(d.write=b),d}function P(a){return a(this)}function Q(a,b,c){return b(this,"function"==typeof c?c(a(this)):c)}let R=(a,b)=>a.unstable_is?a.unstable_is(b):b===a,S=a=>"init"in a,T=new WeakMap,U=a=>{var b;return V(a)&&!(null==(b=T.get(a))?void 0:b[1])},V=a=>"function"==typeof(null==a?void 0:a.then),W=a=>"v"in a||"e"in a,X=a=>{if("e"in a)throw a.e;if((M.env?M.env.MODE:void 0)!=="production"&&!("v"in a))throw Error("[Bug] atom state is not initialized");return a.v},Y=(a,b,c)=>{c.p.has(a)||(c.p.add(a),b.then(()=>{c.p.delete(a)},()=>{c.p.delete(a)}))},Z=(a,b,c,d,e)=>{var f;if((M.env?M.env.MODE:void 0)!=="production"&&d===b)throw Error("[Bug] atom cannot depend on itself");c.d.set(d,e.n),U(c.v)&&Y(b,c.v,e),null==(f=e.m)||f.t.add(b),a&&ab(a,d,b)},$=()=>({D:new Map,H:new Set,M:new Set,L:new Set}),_=(a,b,c)=>{a[b].add(c)},aa=(a,b,c)=>{a.D.has(b)||(a.D.set(b,new Set),_(a,"M",()=>{var b;null==(b=c.m)||b.l.forEach(b=>_(a,"M",b))}))},ab=(a,b,c)=>{let d=a.D.get(b);d&&d.add(c)},ac=a=>{let b,c=!1,d=a=>{try{a()}catch(a){c||(b=a,c=!0)}};for(;a.H.size||a.M.size||a.L.size;)a.D.clear(),a.H.forEach(d),a.H.clear(),a.M.forEach(d),a.M.clear(),a.L.forEach(d),a.L.clear();if(c)throw b},ad=(...[a,b,c,d])=>{let e=(b,c,d)=>{let e="v"in c,f=c.v,g=U(c.v)?c.v:null;if(V(d)){for(let e of((a=>{if(T.has(a))return;let b=[new Set,!1];T.set(a,b);let c=()=>{b[1]=!0};a.then(c,c),a.onCancel=a=>{b[0].add(a)}})(d),c.d.keys()))Y(b,d,a(e));c.v=d}else c.v=d;delete c.e,delete c.x,e&&Object.is(f,c.v)||(++c.n,g&&((a,b)=>{let c=T.get(a);if(c)c[1]=!0,c[0].forEach(a=>a(b));else if((M.env?M.env.MODE:void 0)!=="production")throw Error("[Bug] cancelable promise not found")})(g,d))},f=(c,d)=>{var g;let h,k,l=a(d);if(W(l)&&(l.m&&!l.x||Array.from(l.d).every(([a,b])=>f(c,a).n===b)))return l;l.d.clear();let m=!0;try{let n=b(d,b=>{if(R(d,b)){let c=a(b);if(!W(c))if(S(b))e(b,c,b.init);else throw Error("no atom init");return X(c)}let g=f(c,b);try{return X(g)}finally{if(m)Z(c,d,l,b,g);else{let a=$();Z(a,d,l,b,g),j(a,d,l),ac(a)}}},{get signal(){return h||(h=new AbortController),h.signal},get setSelf(){return(M.env?M.env.MODE:void 0)==="production"||d.write||console.warn("setSelf function cannot be used with read-only atom"),!k&&d.write&&(k=(...a)=>{if((M.env?M.env.MODE:void 0)!=="production"&&m&&console.warn("setSelf function cannot be called in sync"),!m)return i(d,...a)}),k}});if(e(d,l,n),V(n)){null==(g=n.onCancel)||g.call(n,()=>null==h?void 0:h.abort());let a=()=>{if(l.m){let a=$();j(a,d,l),ac(a)}};n.then(a,a)}return l}catch(a){return delete l.v,l.e=a,delete l.x,++l.n,l}finally{m=!1}},g=(b,c,d)=>{var e,f;let g=new Map;for(let b of(null==(e=d.m)?void 0:e.t)||[]){let c=a(b);c.m&&g.set(b,c)}for(let b of d.p)g.set(b,a(b));return null==(f=b.D.get(c))||f.forEach(b=>{g.set(b,a(b))}),g},h=(b,d,...i)=>{let k=!0;try{return c(d,a=>X(f(b,a)),(c,...i)=>{let l=a(c);try{if(!R(d,c))return h(b,c,...i);{if(!S(c))throw Error("atom not writable");let a=l.n,d=i[0];e(c,l,d),j(b,c,l),a!==l.n&&(aa(b,c,l),((a,b,c)=>{let d=[],e=new Set,h=new Set,i=[[b,c]];for(;i.length>0;){let[b,c]=i[i.length-1];if(h.has(b)){i.pop();continue}if(e.has(b)){d.push([b,c,c.n]),h.add(b),c.x=!0,i.pop();continue}for(let[d,f]of(e.add(b),g(a,b,c)))b===d||e.has(d)||i.push([d,f])}_(a,"H",()=>{let c=new Set([b]);for(let b=d.length-1;b>=0;--b){let[e,g,h]=d[b],i=!1;for(let a of g.d.keys())if(a!==e&&c.has(a)){i=!0;break}i&&(f(a,e),j(a,e,g),h!==g.n&&(aa(a,e,g),c.add(e))),delete g.x}})})(b,c,l));return}}finally{k||ac(b)}},...i)}finally{k=!1}},i=(a,...b)=>{let c=$();try{return h(c,a,...b)}finally{ac(c)}},j=(b,c,d)=>{if(d.m&&!U(d.v)){for(let e of d.d.keys())d.m.d.has(e)||(k(b,e,a(e)).t.add(c),d.m.d.add(e));for(let e of d.m.d||[])if(!d.d.has(e)){d.m.d.delete(e);let f=l(b,e,a(e));null==f||f.t.delete(c)}}},k=(b,c,e)=>{if(!e.m){for(let d of(f(b,c),e.d.keys()))k(b,d,a(d)).t.add(c);if(e.m={l:new Set,d:new Set(e.d.keys()),t:new Set},c.write){let a,f=e.m,g=(b,d)=>{let e=!0;a=(...a)=>{try{return h(b,c,...a)}finally{e||ac(b)}};try{return d()}finally{e=!1}};_(b,"L",()=>{let e=g(b,()=>d(c,(...b)=>a(...b)));e&&(f.u=a=>g(a,e))})}}return e.m},l=(b,c,d)=>{if(d.m&&!d.m.l.size&&!Array.from(d.m.t).some(b=>{var d;return null==(d=a(b).m)?void 0:d.d.has(c)})){let e=d.m.u;for(let f of(e&&_(b,"L",()=>e(b)),delete d.m,d.d.keys())){let d=l(b,f,a(f));null==d||d.t.delete(c)}return}return d.m};return{get:a=>X(f(void 0,a)),set:i,sub:(b,c)=>{let d=$(),e=a(b),f=k(d,b,e).l;return f.add(c),ac(d),()=>{f.delete(c);let a=$();l(a,b,e),ac(a)}},unstable_derive:e=>ad(...e(a,b,c,d))}},ae=()=>{let a=new WeakMap,b=ad(b=>{if((M.env?M.env.MODE:void 0)!=="production"&&!b)throw Error("Atom is undefined or null");let c=a.get(b);return c||(c={d:new Map,p:new Set,n:0},a.set(b,c)),c},(a,...b)=>a.read(...b),(a,...b)=>a.write(...b),(a,...b)=>{var c;return null==(c=a.onMount)?void 0:c.call(a,...b)});if((M.env?M.env.MODE:void 0)!=="production"){let a,c,d,e,f,g;return c=new WeakMap,d=new Set,e=0,g=(f=b.unstable_derive((b,f,g,h)=>(a=b,[a=>{let e=c.get(a);return e||(e=new Proxy(b(a),{set:(b,c,e)=>("m"===c&&d.add(a),Reflect.set(b,c,e)),deleteProperty:(b,c)=>("m"===c&&d.delete(a),Reflect.deleteProperty(b,c))}),c.set(a,e)),e},f,(a,b,c,...d)=>e?c(a,...d):g(a,b,c,...d),h]))).set,Object.assign(f,{dev4_get_internal_weak_map:()=>({get:b=>{let c=a(b);if(0!==c.n)return c}}),dev4_get_mounted_atoms:()=>d,dev4_restore_atoms:a=>{g({read:()=>null,write:(b,c)=>{++e;try{for(let[b,d]of a)S(b)&&c(b,d)}finally{--e}}})}})}return b},af={get url(){return`file://${a.P("node_modules/.pnpm/jotai@2.11.0_@types+react@19.2.14_react@19.2.5/node_modules/jotai/esm/react.mjs")}`}},ag=(0,m.createContext)(void 0),ah=a=>{let c=(0,m.useContext)(ag);return(null==a?void 0:a.store)||c||(b||(b=ae(),(M.env?M.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=b),globalThis.__JOTAI_DEFAULT_STORE__!==b&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),b)},ai=a=>"function"==typeof(null==a?void 0:a.then),aj=a=>{a.status="pending",a.then(b=>{a.status="fulfilled",a.value=b},b=>{a.status="rejected",a.reason=b})},ak=m.default.use||(a=>{if("pending"===a.status)throw a;if("fulfilled"===a.status)return a.value;if("rejected"===a.status)throw a.reason;throw aj(a),a}),al=new WeakMap,am=a=>{let b=al.get(a);return b||(b=new Promise((c,d)=>{let e=a,f=a=>b=>{e===a&&c(b)},g=a=>b=>{e===a&&d(b)},h=a=>{"onCancel"in a&&"function"==typeof a.onCancel&&a.onCancel(d=>{if((af.env?af.env.MODE:void 0)!=="production"&&d===a)throw Error("[Bug] p is not updated even after cancelation");ai(d)?(al.set(d,b),e=d,d.then(f(d),g(d)),h(d)):c(d)})};a.then(f(a),g(a)),h(a)}),al.set(a,b)),b};function an(a,b){let c=ah(b),[[d,e,f],g]=(0,m.useReducer)(b=>{let d=c.get(a);return Object.is(b[0],d)&&b[1]===c&&b[2]===a?b:[d,c,a]},void 0,()=>[c.get(a),c,a]),h=d;(e!==c||f!==a)&&(g(),h=c.get(a));let i=null==b?void 0:b.delay;return((0,m.useEffect)(()=>{let b=c.sub(a,()=>{if("number"==typeof i){let b=c.get(a);ai(b)&&aj(am(b)),setTimeout(g,i);return}g()});return g(),b},[c,a,i]),(0,m.useDebugValue)(h),ai(h))?ak(am(h)):h}function ao(a,b){let c=ah(b);return(0,m.useCallback)((...b)=>{if((af.env?af.env.MODE:void 0)!=="production"&&!("write"in a))throw Error("not writable atom");return c.set(a,...b)},[c,a])}let ap={get url(){return`file://${a.P("node_modules/.pnpm/jotai@2.11.0_@types+react@19.2.14_react@19.2.5/node_modules/jotai/esm/vanilla/utils.mjs")}`}};Symbol((ap.env?ap.env.MODE:void 0)!=="production"?"RESET":""),!function(a=()=>{try{return window.localStorage}catch(a){ap.env&&ap.env.MODE;return}}){var b;let c,d;try{c=null==(b=a())?void 0:b.subscribe}catch(a){}c&&(d=c,(a,b,c)=>d(a,a=>{let d;try{d=JSON.parse(a||"")}catch(a){d=c}b(d)}))}();let aq=new WeakMap;function ar(){return(ar=Object.assign.bind()).apply(this,arguments)}function as(){let a=(0,m.createContext)(null),b=b=>{let c=(0,m.useContext)(a);if(!c)throw Error("Missing Provider from createIsolation");return ah(ar({store:c},b))};return{Provider:function({store:b,initialValues:c=[],children:d}){let f,g=(0,m.useRef)(b);g.current||(g.current=ae());var h,i={store:g.current};let j=ah(i),k=(h=j,(f=aq.get(h))||(f=new WeakSet,aq.set(h,f)),f);for(let[a,b]of c)(!k.has(a)||(null==i?void 0:i.dangerouslyForceHydrate))&&(k.add(a),j.set(a,b));return(0,e.jsx)(a.Provider,{value:g.current,children:d})},useStore:b,useAtom:(a,c)=>{var d;let e=b();return[an(a,d=ar({store:e},c)),ao(a,d)]},useAtomValue:(a,c)=>{let d=b();return an(a,ar({store:d},c))},useSetAtom:(a,c)=>{let d=b();return ao(a,ar({store:d},c))}}}let{read:at,write:au}=O(null);(0,m.createContext)({scope:void 0,baseStore:void 0});var av=a.i(575828),aw=a.i(567373),ax=a.i(26463),ay=a.i(169731);function az(a,b,{checkForDefaultPrevented:c=!0}={}){return function(d){if(a?.(d),!1===c||!d.defaultPrevented)return b?.(d)}}function aA(a,b){if("function"==typeof a)return a(b);null!=a&&(a.current=b)}function aB(...a){return b=>{let c=!1,d=a.map(a=>{let d=aA(a,b);return c||"function"!=typeof d||(c=!0),d});if(c)return()=>{for(let b=0;b<d.length;b++){let c=d[b];"function"==typeof c?c():aA(a[b],null)}}}}function aC(...a){return m.useCallback(aB(...a),a)}function aD(a,b=[]){let c=[],d=()=>{let b=c.map(a=>m.createContext(a));return function(c){let d=c?.[a]||b;return m.useMemo(()=>({[`__scope${a}`]:{...c,[a]:d}}),[c,d])}};return d.scopeName=a,[function(b,d){let f=m.createContext(d),g=c.length;c=[...c,d];let h=b=>{let{scope:c,children:d,...h}=b,i=c?.[a]?.[g]||f,j=m.useMemo(()=>h,Object.values(h));return(0,e.jsx)(i.Provider,{value:j,children:d})};return h.displayName=b+"Provider",[h,function(c,e){let h=e?.[a]?.[g]||f,i=m.useContext(h);if(i)return i;if(void 0!==d)return d;throw Error(`\`${c}\` must be used within \`${b}\``)}]},function(...a){let b=a[0];if(1===a.length)return b;let c=()=>{let c=a.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(a){let d=c.reduce((b,{useScope:c,scopeName:d})=>{let e=c(a)[`__scope${d}`];return{...b,...e}},{});return m.useMemo(()=>({[`__scope${b.scopeName}`]:d}),[d])}};return c.scopeName=b.scopeName,c}(d,...b)]}var aE=m.forwardRef((a,b)=>{let{children:c,...d}=a,f=m.Children.toArray(c),g=f.find(aH);if(g){let a=g.props.children,c=f.map(b=>b!==g?b:m.Children.count(a)>1?m.Children.only(null):m.isValidElement(a)?a.props.children:null);return(0,e.jsx)(aF,{...d,ref:b,children:m.isValidElement(a)?m.cloneElement(a,void 0,c):null})}return(0,e.jsx)(aF,{...d,ref:b,children:c})});aE.displayName="Slot";var aF=m.forwardRef((a,b)=>{let{children:c,...d}=a;if(m.isValidElement(c)){var e;let a,f,g=(e=c,(f=(a=Object.getOwnPropertyDescriptor(e.props,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.ref:(f=(a=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?e.props.ref:e.props.ref||e.ref),h=function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{f(...a),e(...a)}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(d,c.props);return c.type!==m.Fragment&&(h.ref=b?aB(b,g):g),m.cloneElement(c,h)}return m.Children.count(c)>1?m.Children.only(null):null});aF.displayName="SlotClone";var aG=({children:a})=>(0,e.jsx)(e.Fragment,{children:a});function aH(a){return m.isValidElement(a)&&a.type===aG}var aI=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((a,b)=>{let c=m.forwardRef((a,c)=>{let{asChild:d,...f}=a,g=d?aE:b;return(0,e.jsx)(g,{...f,ref:c})});return c.displayName=`Primitive.${b}`,{...a,[b]:c}},{});function aJ(a){let b=m.useRef(a);return m.useEffect(()=>{b.current=a}),m.useMemo(()=>(...a)=>b.current?.(...a),[])}var aK="dismissableLayer.update",aL=m.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),aM=m.forwardRef((a,b)=>{let{disableOutsidePointerEvents:c=!1,onEscapeKeyDown:f,onPointerDownOutside:g,onFocusOutside:h,onInteractOutside:i,onDismiss:j,...k}=a,l=m.useContext(aL),[n,o]=m.useState(null),p=n?.ownerDocument??globalThis?.document,[,q]=m.useState({}),r=aC(b,a=>o(a)),s=Array.from(l.layers),[t]=[...l.layersWithOutsidePointerEventsDisabled].slice(-1),u=s.indexOf(t),v=n?s.indexOf(n):-1,w=l.layersWithOutsidePointerEventsDisabled.size>0,x=v>=u,y=function(a,b=globalThis?.document){let c=aJ(a),d=m.useRef(!1),e=m.useRef(()=>{});return m.useEffect(()=>{let a=a=>{if(a.target&&!d.current){let d=function(){aO("dismissableLayer.pointerDownOutside",c,f,{discrete:!0})},f={originalEvent:a};"touch"===a.pointerType?(b.removeEventListener("click",e.current),e.current=d,b.addEventListener("click",e.current,{once:!0})):d()}else b.removeEventListener("click",e.current);d.current=!1},f=window.setTimeout(()=>{b.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(f),b.removeEventListener("pointerdown",a),b.removeEventListener("click",e.current)}},[b,c]),{onPointerDownCapture:()=>d.current=!0}}(a=>{let b=a.target,c=[...l.branches].some(a=>a.contains(b));x&&!c&&(g?.(a),i?.(a),a.defaultPrevented||j?.())},p),z=function(a,b=globalThis?.document){let c=aJ(a),d=m.useRef(!1);return m.useEffect(()=>{let a=a=>{a.target&&!d.current&&aO("dismissableLayer.focusOutside",c,{originalEvent:a},{discrete:!1})};return b.addEventListener("focusin",a),()=>b.removeEventListener("focusin",a)},[b,c]),{onFocusCapture:()=>d.current=!0,onBlurCapture:()=>d.current=!1}}(a=>{let b=a.target;![...l.branches].some(a=>a.contains(b))&&(h?.(a),i?.(a),a.defaultPrevented||j?.())},p);return!function(a,b=globalThis?.document){let c=aJ(a);m.useEffect(()=>{let a=a=>{"Escape"===a.key&&c(a)};return b.addEventListener("keydown",a,{capture:!0}),()=>b.removeEventListener("keydown",a,{capture:!0})},[c,b])}(a=>{v===l.layers.size-1&&(f?.(a),!a.defaultPrevented&&j&&(a.preventDefault(),j()))},p),m.useEffect(()=>{if(n)return c&&(0===l.layersWithOutsidePointerEventsDisabled.size&&(d=p.body.style.pointerEvents,p.body.style.pointerEvents="none"),l.layersWithOutsidePointerEventsDisabled.add(n)),l.layers.add(n),aN(),()=>{c&&1===l.layersWithOutsidePointerEventsDisabled.size&&(p.body.style.pointerEvents=d)}},[n,p,c,l]),m.useEffect(()=>()=>{n&&(l.layers.delete(n),l.layersWithOutsidePointerEventsDisabled.delete(n),aN())},[n,l]),m.useEffect(()=>{let a=()=>q({});return document.addEventListener(aK,a),()=>document.removeEventListener(aK,a)},[]),(0,e.jsx)(aI.div,{...k,ref:r,style:{pointerEvents:w?x?"auto":"none":void 0,...a.style},onFocusCapture:az(a.onFocusCapture,z.onFocusCapture),onBlurCapture:az(a.onBlurCapture,z.onBlurCapture),onPointerDownCapture:az(a.onPointerDownCapture,y.onPointerDownCapture)})});function aN(){let a=new CustomEvent(aK);document.dispatchEvent(a)}function aO(a,b,c,{discrete:d}){let e=c.originalEvent.target,f=new CustomEvent(a,{bubbles:!1,cancelable:!0,detail:c});if(b&&e.addEventListener(a,b,{once:!0}),d)e&&aw.flushSync(()=>e.dispatchEvent(f));else e.dispatchEvent(f)}aM.displayName="DismissableLayer",m.forwardRef((a,b)=>{let c=m.useContext(aL),d=m.useRef(null),f=aC(b,d);return m.useEffect(()=>{let a=d.current;if(a)return c.branches.add(a),()=>{c.branches.delete(a)}},[c.branches]),(0,e.jsx)(aI.div,{...a,ref:f})}).displayName="DismissableLayerBranch";var aP=0;function aQ(){let a=document.createElement("span");return a.setAttribute("data-radix-focus-guard",""),a.tabIndex=0,a.style.outline="none",a.style.opacity="0",a.style.position="fixed",a.style.pointerEvents="none",a}var aR="focusScope.autoFocusOnMount",aS="focusScope.autoFocusOnUnmount",aT={bubbles:!1,cancelable:!0},aU=m.forwardRef((a,b)=>{let{loop:c=!1,trapped:d=!1,onMountAutoFocus:f,onUnmountAutoFocus:g,...h}=a,[i,j]=m.useState(null),k=aJ(f),l=aJ(g),n=m.useRef(null),o=aC(b,a=>j(a)),p=m.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;m.useEffect(()=>{if(d){let a=function(a){if(p.paused||!i)return;let b=a.target;i.contains(b)?n.current=b:aX(n.current,{select:!0})},b=function(a){if(p.paused||!i)return;let b=a.relatedTarget;null!==b&&(i.contains(b)||aX(n.current,{select:!0}))};document.addEventListener("focusin",a),document.addEventListener("focusout",b);let c=new MutationObserver(function(a){if(document.activeElement===document.body)for(let b of a)b.removedNodes.length>0&&aX(i)});return i&&c.observe(i,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",a),document.removeEventListener("focusout",b),c.disconnect()}}},[d,i,p.paused]),m.useEffect(()=>{if(i){aY.add(p);let a=document.activeElement;if(!i.contains(a)){let b=new CustomEvent(aR,aT);i.addEventListener(aR,k),i.dispatchEvent(b),b.defaultPrevented||(function(a,{select:b=!1}={}){let c=document.activeElement;for(let d of a)if(aX(d,{select:b}),document.activeElement!==c)return}(aV(i).filter(a=>"A"!==a.tagName),{select:!0}),document.activeElement===a&&aX(i))}return()=>{i.removeEventListener(aR,k),setTimeout(()=>{let b=new CustomEvent(aS,aT);i.addEventListener(aS,l),i.dispatchEvent(b),b.defaultPrevented||aX(a??document.body,{select:!0}),i.removeEventListener(aS,l),aY.remove(p)},0)}}},[i,k,l,p]);let q=m.useCallback(a=>{if(!c&&!d||p.paused)return;let b="Tab"===a.key&&!a.altKey&&!a.ctrlKey&&!a.metaKey,e=document.activeElement;if(b&&e){var f;let b,d=a.currentTarget,[g,h]=[aW(b=aV(f=d),f),aW(b.reverse(),f)];g&&h?a.shiftKey||e!==h?a.shiftKey&&e===g&&(a.preventDefault(),c&&aX(h,{select:!0})):(a.preventDefault(),c&&aX(g,{select:!0})):e===d&&a.preventDefault()}},[c,d,p.paused]);return(0,e.jsx)(aI.div,{tabIndex:-1,...h,ref:o,onKeyDown:q})});function aV(a){let b=[],c=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{let b="INPUT"===a.tagName&&"hidden"===a.type;return a.disabled||a.hidden||b?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;c.nextNode();)b.push(c.currentNode);return b}function aW(a,b){for(let c of a)if(!function(a,{upTo:b}){if("hidden"===getComputedStyle(a).visibility)return!0;for(;a&&(void 0===b||a!==b);){if("none"===getComputedStyle(a).display)return!0;a=a.parentElement}return!1}(c,{upTo:b}))return c}function aX(a,{select:b=!1}={}){if(a&&a.focus){var c;let d=document.activeElement;a.focus({preventScroll:!0}),a!==d&&(c=a)instanceof HTMLInputElement&&"select"in c&&b&&a.select()}}aU.displayName="FocusScope";var aY=(c=[],{add(a){let b=c[0];a!==b&&b?.pause(),(c=aZ(c,a)).unshift(a)},remove(a){c=aZ(c,a),c[0]?.resume()}});function aZ(a,b){let c=[...a],d=c.indexOf(b);return -1!==d&&c.splice(d,1),c}var a$=globalThis?.document?m.useLayoutEffect:()=>{},a_=m["useId".toString()]||(()=>void 0),a0=0,a1=a.i(983393),a2=a.i(916842),a3=m.forwardRef((a,b)=>{let{children:c,width:d=10,height:f=5,...g}=a;return(0,e.jsx)(aI.svg,{...g,ref:b,width:d,height:f,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:a.asChild?c:(0,e.jsx)("polygon",{points:"0,0 30,0 15,10"})})});a3.displayName="Arrow";var a4="Popper",[a5,a6]=aD(a4),[a7,a8]=a5(a4),a9=a=>{let{__scopePopper:b,children:c}=a,[d,f]=m.useState(null);return(0,e.jsx)(a7,{scope:b,anchor:d,onAnchorChange:f,children:c})};a9.displayName=a4;var ba="PopperAnchor",bb=m.forwardRef((a,b)=>{let{__scopePopper:c,virtualRef:d,...f}=a,g=a8(ba,c),h=m.useRef(null),i=aC(b,h);return m.useEffect(()=>{g.onAnchorChange(d?.current||h.current)}),d?null:(0,e.jsx)(aI.div,{...f,ref:i})});bb.displayName=ba;var bc="PopperContent",[bd,be]=a5(bc),bf=m.forwardRef((a,b)=>{let{__scopePopper:c,side:d="bottom",sideOffset:f=0,align:g="center",alignOffset:h=0,arrowPadding:i=0,avoidCollisions:j=!0,collisionBoundary:k=[],collisionPadding:l=0,sticky:n="partial",hideWhenDetached:o=!1,updatePositionStrategy:p="optimized",onPlaced:q,...r}=a,s=a8(bc,c),[t,u]=m.useState(null),v=aC(b,a=>u(a)),[w,x]=m.useState(null),y=function(a){let[b,c]=m.useState(void 0);return a$(()=>{if(a){c({width:a.offsetWidth,height:a.offsetHeight});let b=new ResizeObserver(b=>{let d,e;if(!Array.isArray(b)||!b.length)return;let f=b[0];if("borderBoxSize"in f){let a=f.borderBoxSize,b=Array.isArray(a)?a[0]:a;d=b.inlineSize,e=b.blockSize}else d=a.offsetWidth,e=a.offsetHeight;c({width:d,height:e})});return b.observe(a,{box:"border-box"}),()=>b.unobserve(a)}c(void 0)},[a]),b}(w),z=y?.width??0,A=y?.height??0,B="number"==typeof l?l:{top:0,right:0,bottom:0,left:0,...l},C=Array.isArray(k)?k:[k],D=C.length>0,E={padding:B,boundary:C.filter(bj),altBoundary:D},{refs:F,floatingStyles:G,placement:H,isPositioned:I,middlewareData:J}=(0,a1.useFloating)({strategy:"fixed",placement:d+("center"!==g?"-"+g:""),whileElementsMounted:(...a)=>(0,a2.autoUpdate)(...a,{animationFrame:"always"===p}),elements:{reference:s.anchor},middleware:[(0,a1.offset)({mainAxis:f+A,alignmentAxis:h}),j&&(0,a1.shift)({mainAxis:!0,crossAxis:!1,limiter:"partial"===n?(0,a1.limitShift)():void 0,...E}),j&&(0,a1.flip)({...E}),(0,a1.size)({...E,apply:({elements:a,rects:b,availableWidth:c,availableHeight:d})=>{let{width:e,height:f}=b.reference,g=a.floating.style;g.setProperty("--radix-popper-available-width",`${c}px`),g.setProperty("--radix-popper-available-height",`${d}px`),g.setProperty("--radix-popper-anchor-width",`${e}px`),g.setProperty("--radix-popper-anchor-height",`${f}px`)}}),w&&(0,a1.arrow)({element:w,padding:i}),bk({arrowWidth:z,arrowHeight:A}),o&&(0,a1.hide)({strategy:"referenceHidden",...E})]}),[K,L]=bl(H),M=aJ(q);a$(()=>{I&&M?.()},[I,M]);let N=J.arrow?.x,O=J.arrow?.y,P=J.arrow?.centerOffset!==0,[Q,R]=m.useState();return a$(()=>{t&&R(window.getComputedStyle(t).zIndex)},[t]),(0,e.jsx)("div",{ref:F.setFloating,"data-radix-popper-content-wrapper":"",style:{...G,transform:I?G.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Q,"--radix-popper-transform-origin":[J.transformOrigin?.x,J.transformOrigin?.y].join(" "),...J.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:a.dir,children:(0,e.jsx)(bd,{scope:c,placedSide:K,onArrowChange:x,arrowX:N,arrowY:O,shouldHideArrow:P,children:(0,e.jsx)(aI.div,{"data-side":K,"data-align":L,...r,ref:v,style:{...r.style,animation:I?void 0:"none"}})})})});bf.displayName=bc;var bg="PopperArrow",bh={top:"bottom",right:"left",bottom:"top",left:"right"},bi=m.forwardRef(function(a,b){let{__scopePopper:c,...d}=a,f=be(bg,c),g=bh[f.placedSide];return(0,e.jsx)("span",{ref:f.onArrowChange,style:{position:"absolute",left:f.arrowX,top:f.arrowY,[g]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[f.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[f.placedSide],visibility:f.shouldHideArrow?"hidden":void 0},children:(0,e.jsx)(a3,{...d,ref:b,style:{...d.style,display:"block"}})})});function bj(a){return null!==a}bi.displayName=bg;var bk=a=>({name:"transformOrigin",options:a,fn(b){let{placement:c,rects:d,middlewareData:e}=b,f=e.arrow?.centerOffset!==0,g=f?0:a.arrowWidth,h=f?0:a.arrowHeight,[i,j]=bl(c),k={start:"0%",center:"50%",end:"100%"}[j],l=(e.arrow?.x??0)+g/2,m=(e.arrow?.y??0)+h/2,n="",o="";return"bottom"===i?(n=f?k:`${l}px`,o=`${-h}px`):"top"===i?(n=f?k:`${l}px`,o=`${d.floating.height+h}px`):"right"===i?(n=`${-h}px`,o=f?k:`${m}px`):"left"===i&&(n=`${d.floating.width+h}px`,o=f?k:`${m}px`),{data:{x:n,y:o}}}});function bl(a){let[b,c="center"]=a.split("-");return[b,c]}var bm=m.forwardRef((a,b)=>{let{container:c,...d}=a,[f,g]=m.useState(!1);a$(()=>g(!0),[]);let h=c||f&&globalThis?.document?.body;return h?aw.default.createPortal((0,e.jsx)(aI.div,{...d,ref:b}),h):null});bm.displayName="Portal";var bn=a=>{var b;let c,d,{present:e,children:f}=a,g=function(a){var b,c;let[d,e]=m.useState(),f=m.useRef({}),g=m.useRef(a),h=m.useRef("none"),[i,j]=(b=a?"mounted":"unmounted",c={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},m.useReducer((a,b)=>c[a][b]??a,b));return m.useEffect(()=>{let a=bo(f.current);h.current="mounted"===i?a:"none"},[i]),a$(()=>{let b=f.current,c=g.current;if(c!==a){let d=h.current,e=bo(b);a?j("MOUNT"):"none"===e||b?.display==="none"?j("UNMOUNT"):c&&d!==e?j("ANIMATION_OUT"):j("UNMOUNT"),g.current=a}},[a,j]),a$(()=>{if(d){let a,b=d.ownerDocument.defaultView??window,c=c=>{let e=bo(f.current).includes(c.animationName);if(c.target===d&&e&&(j("ANIMATION_END"),!g.current)){let c=d.style.animationFillMode;d.style.animationFillMode="forwards",a=b.setTimeout(()=>{"forwards"===d.style.animationFillMode&&(d.style.animationFillMode=c)})}},e=a=>{a.target===d&&(h.current=bo(f.current))};return d.addEventListener("animationstart",e),d.addEventListener("animationcancel",c),d.addEventListener("animationend",c),()=>{b.clearTimeout(a),d.removeEventListener("animationstart",e),d.removeEventListener("animationcancel",c),d.removeEventListener("animationend",c)}}j("ANIMATION_END")},[d,j]),{isPresent:["mounted","unmountSuspended"].includes(i),ref:m.useCallback(a=>{a&&(f.current=getComputedStyle(a)),e(a)},[])}}(e),h="function"==typeof f?f({present:g.isPresent}):m.Children.only(f),i=aC(g.ref,(b=h,(d=(c=Object.getOwnPropertyDescriptor(b.props,"ref")?.get)&&"isReactWarning"in c&&c.isReactWarning)?b.ref:(d=(c=Object.getOwnPropertyDescriptor(b,"ref")?.get)&&"isReactWarning"in c&&c.isReactWarning)?b.props.ref:b.props.ref||b.ref));return"function"==typeof f||g.isPresent?m.cloneElement(h,{ref:i}):null};function bo(a){return a?.animationName||"none"}bn.displayName="Presence";var bp=a.i(516164),bq=a.i(173673),br="Popover",[bs,bt]=aD(br,[a6]),bu=a6(),[bv,bw]=bs(br),bx=a=>{let{__scopePopover:b,children:c,open:d,defaultOpen:f,onOpenChange:g,modal:h=!1}=a,i=bu(b),j=m.useRef(null),[k,l]=m.useState(!1),[n=!1,o]=function({prop:a,defaultProp:b,onChange:c=()=>{}}){let[d,e]=function({defaultProp:a,onChange:b}){let c=m.useState(a),[d]=c,e=m.useRef(d),f=aJ(b);return m.useEffect(()=>{e.current!==d&&(f(d),e.current=d)},[d,e,f]),c}({defaultProp:b,onChange:c}),f=void 0!==a,g=f?a:d,h=aJ(c);return[g,m.useCallback(b=>{if(f){let c="function"==typeof b?b(a):b;c!==a&&h(c)}else e(b)},[f,a,e,h])]}({prop:d,defaultProp:f,onChange:g});return(0,e.jsx)(a9,{...i,children:(0,e.jsx)(bv,{scope:b,contentId:function(){let[a,b]=m.useState(a_());return a$(()=>{b(a=>a??String(a0++))},[void 0]),a?`radix-${a}`:""}(),triggerRef:j,open:n,onOpenChange:o,onOpenToggle:m.useCallback(()=>o(a=>!a),[o]),hasCustomAnchor:k,onCustomAnchorAdd:m.useCallback(()=>l(!0),[]),onCustomAnchorRemove:m.useCallback(()=>l(!1),[]),modal:h,children:c})})};bx.displayName=br;var by="PopoverAnchor";m.forwardRef((a,b)=>{let{__scopePopover:c,...d}=a,f=bw(by,c),g=bu(c),{onCustomAnchorAdd:h,onCustomAnchorRemove:i}=f;return m.useEffect(()=>(h(),()=>i()),[h,i]),(0,e.jsx)(bb,{...g,...d,ref:b})}).displayName=by;var bz="PopoverTrigger",bA=m.forwardRef((a,b)=>{let{__scopePopover:c,...d}=a,f=bw(bz,c),g=bu(c),h=aC(b,f.triggerRef),i=(0,e.jsx)(aI.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":bM(f.open),...d,ref:h,onClick:az(a.onClick,f.onOpenToggle)});return f.hasCustomAnchor?i:(0,e.jsx)(bb,{asChild:!0,...g,children:i})});bA.displayName=bz;var bB="PopoverPortal",[bC,bD]=bs(bB,{forceMount:void 0}),bE=a=>{let{__scopePopover:b,forceMount:c,children:d,container:f}=a,g=bw(bB,b);return(0,e.jsx)(bC,{scope:b,forceMount:c,children:(0,e.jsx)(bn,{present:c||g.open,children:(0,e.jsx)(bm,{asChild:!0,container:f,children:d})})})};bE.displayName=bB;var bF="PopoverContent",bG=m.forwardRef((a,b)=>{let c=bD(bF,a.__scopePopover),{forceMount:d=c.forceMount,...f}=a,g=bw(bF,a.__scopePopover);return(0,e.jsx)(bn,{present:d||g.open,children:g.modal?(0,e.jsx)(bH,{...f,ref:b}):(0,e.jsx)(bI,{...f,ref:b})})});bG.displayName=bF;var bH=m.forwardRef((a,b)=>{let c=bw(bF,a.__scopePopover),d=m.useRef(null),f=aC(b,d),g=m.useRef(!1);return m.useEffect(()=>{let a=d.current;if(a)return(0,bp.hideOthers)(a)},[]),(0,e.jsx)(bq.RemoveScroll,{as:aE,allowPinchZoom:!0,children:(0,e.jsx)(bJ,{...a,ref:f,trapFocus:c.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:az(a.onCloseAutoFocus,a=>{a.preventDefault(),g.current||c.triggerRef.current?.focus()}),onPointerDownOutside:az(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;g.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:az(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),bI=m.forwardRef((a,b)=>{let c=bw(bF,a.__scopePopover),d=m.useRef(!1),f=m.useRef(!1);return(0,e.jsx)(bJ,{...a,ref:b,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(d.current||c.triggerRef.current?.focus(),b.preventDefault()),d.current=!1,f.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(d.current=!0,"pointerdown"===b.detail.originalEvent.type&&(f.current=!0));let e=b.target;c.triggerRef.current?.contains(e)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&f.current&&b.preventDefault()}})}),bJ=m.forwardRef((a,b)=>{let{__scopePopover:c,trapFocus:d,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onInteractOutside:l,...n}=a,o=bw(bF,c),p=bu(c);return m.useEffect(()=>{let a=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",a[0]??aQ()),document.body.insertAdjacentElement("beforeend",a[1]??aQ()),aP++,()=>{1===aP&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),aP--}},[]),(0,e.jsx)(aU,{asChild:!0,loop:!0,trapped:d,onMountAutoFocus:f,onUnmountAutoFocus:g,children:(0,e.jsx)(aM,{asChild:!0,disableOutsidePointerEvents:h,onInteractOutside:l,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onDismiss:()=>o.onOpenChange(!1),children:(0,e.jsx)(bf,{"data-state":bM(o.open),role:"dialog",id:o.contentId,...p,...n,ref:b,style:{...n.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),bK="PopoverClose";m.forwardRef((a,b)=>{let{__scopePopover:c,...d}=a,f=bw(bK,c);return(0,e.jsx)(aI.button,{type:"button",...d,ref:b,onClick:az(a.onClick,()=>f.onOpenChange(!1))})}).displayName=bK;var bL=m.forwardRef((a,b)=>{let{__scopePopover:c,...d}=a,f=bu(c);return(0,e.jsx)(bi,{...f,...d,ref:b})});function bM(a){return a?"open":"closed"}bL.displayName="PopoverArrow";var bN=a.i(449851),bO=a.i(424478),bP=a.i(373116);let bQ={get url(){return`file://${a.P("node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_react@19.2.5/node_modules/zustand/esm/vanilla.mjs")}`}},bR=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a)),destroy:()=>{(bQ.env?bQ.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),c.clear()}},g=b=a(d,e,f);return f};var bS=a.i(878001);let bT={get url(){return`file://${a.P("node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_react@19.2.5/node_modules/zustand/esm/index.mjs")}`}},{useDebugValue:bU}=m.default,{useSyncExternalStoreWithSelector:bV}=bS.default,bW=!1,bX=a=>{(bT.env?bT.env.MODE:void 0)!=="production"&&"function"!=typeof a&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let b="function"==typeof a?a?bR(a):bR:a,c=(a,c)=>(function(a,b=a=>a,c){(bT.env?bT.env.MODE:void 0)!=="production"&&c&&!bW&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),bW=!0);let d=bV(a.subscribe,a.getState,a.getServerState||a.getInitialState,b,c);return bU(d),d})(b,a,c);return Object.assign(c,b),c},bY=m.default.useEffect;function bZ(){let a,b=(a=a=>({current:[],version:0,set:a}))?bX(a):bX;return{In:({children:a})=>{let c=b(a=>a.set),d=b(a=>a.version);return bY(()=>{c(a=>({version:a.version+1}))},[]),bY(()=>(c(({current:b})=>({current:[...b,a]})),()=>c(({current:b})=>({current:b.filter(b=>b!==a)}))),[a,d]),null},Out:()=>{let a=b(a=>a.current);return m.default.createElement(m.default.Fragment,null,a)}}}function b$(){return(b$=Object.assign.bind()).apply(null,arguments)}function b_(a,b,{checkForDefaultPrevented:c=!0}={}){return function(d){if(null==a||a(d),!1===c||!d.defaultPrevented)return null==b?void 0:b(d)}}function b0(a,b=[]){let c=[],d=()=>{let b=c.map(a=>(0,m.createContext)(a));return function(c){let d=(null==c?void 0:c[a])||b;return(0,m.useMemo)(()=>({[`__scope${a}`]:{...c,[a]:d}}),[c,d])}};return d.scopeName=a,[function(b,d){let e=(0,m.createContext)(d),f=c.length;function g(b){let{scope:c,children:d,...g}=b,h=(null==c?void 0:c[a][f])||e,i=(0,m.useMemo)(()=>g,Object.values(g));return(0,m.createElement)(h.Provider,{value:i},d)}return c=[...c,d],g.displayName=b+"Provider",[g,function(c,g){let h=(null==g?void 0:g[a][f])||e,i=(0,m.useContext)(h);if(i)return i;if(void 0!==d)return d;throw Error(`\`${c}\` must be used within \`${b}\``)}]},function(...a){let b=a[0];if(1===a.length)return b;let c=()=>{let c=a.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(a){let d=c.reduce((b,{useScope:c,scopeName:d})=>{let e=c(a)[`__scope${d}`];return{...b,...e}},{});return(0,m.useMemo)(()=>({[`__scope${b.scopeName}`]:d}),[d])}};return c.scopeName=b.scopeName,c}(d,...b)]}function b1(...a){return b=>a.forEach(a=>{"function"==typeof a?a(b):null!=a&&(a.current=b)})}function b2(...a){return(0,m.useCallback)(b1(...a),a)}let b3=(0,m.forwardRef)((a,b)=>{let{children:c,...d}=a,e=m.Children.toArray(c),f=e.find(b6);if(f){let a=f.props.children,c=e.map(b=>b!==f?b:m.Children.count(a)>1?m.Children.only(null):(0,m.isValidElement)(a)?a.props.children:null);return(0,m.createElement)(b4,b$({},d,{ref:b}),(0,m.isValidElement)(a)?(0,m.cloneElement)(a,void 0,c):null)}return(0,m.createElement)(b4,b$({},d,{ref:b}),c)});b3.displayName="Slot";let b4=(0,m.forwardRef)((a,b)=>{let{children:c,...d}=a;return(0,m.isValidElement)(c)?(0,m.cloneElement)(c,{...function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{f(...a),e(...a)}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(d,c.props),ref:b1(b,c.ref)}):m.Children.count(c)>1?m.Children.only(null):null});b4.displayName="SlotClone";let b5=({children:a})=>(0,m.createElement)(m.Fragment,null,a);function b6(a){return(0,m.isValidElement)(a)&&a.type===b5}let b7=(null==globalThis?void 0:globalThis.document)?m.useLayoutEffect:()=>{},b8=m["useId".toString()]||(()=>void 0),b9=0;function ca(a){let[b,c]=m.useState(b8());return b7(()=>{a||c(a=>null!=a?a:String(b9++))},[a]),a||(b?`radix-${b}`:"")}let cb=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"].reduce((a,b)=>{let c=(0,m.forwardRef)((a,c)=>{let{asChild:d,...e}=a,f=d?b3:b;return(0,m.useEffect)(()=>{window[Symbol.for("radix-ui")]=!0},[]),(0,m.createElement)(f,b$({},e,{ref:c}))});return c.displayName=`Primitive.${b}`,{...a,[b]:c}},{});function cc(a){let b=(0,m.useRef)(a);return(0,m.useEffect)(()=>{b.current=a}),(0,m.useMemo)(()=>(...a)=>{var c;return null==(c=b.current)?void 0:c.call(b,...a)},[])}function cd({prop:a,defaultProp:b,onChange:c=()=>{}}){let[d,e]=function({defaultProp:a,onChange:b}){let c=(0,m.useState)(a),[d]=c,e=(0,m.useRef)(d),f=cc(b);return(0,m.useEffect)(()=>{e.current!==d&&(f(d),e.current=d)},[d,e,f]),c}({defaultProp:b,onChange:c}),f=void 0!==a,g=f?a:d,h=cc(c);return[g,(0,m.useCallback)(b=>{if(f){let c="function"==typeof b?b(a):b;c!==a&&h(c)}else e(b)},[f,a,e,h])]}let ce=(0,m.createContext)(void 0);function cf(a){let b=(0,m.useContext)(ce);return a||b||"ltr"}let cg="rovingFocusGroup.onEntryFocus",ch={bubbles:!1,cancelable:!0},ci="RovingFocusGroup",[cj,ck,cl]=function(a){let b=a+"CollectionProvider",[c,d]=b0(b),[e,f]=c(b,{collectionRef:{current:null},itemMap:new Map}),g=a+"CollectionSlot",h=m.default.forwardRef((a,b)=>{let{scope:c,children:d}=a,e=b2(b,f(g,c).collectionRef);return m.default.createElement(b3,{ref:e},d)}),i=a+"CollectionItemSlot",j="data-radix-collection-item";return[{Provider:a=>{let{scope:b,children:c}=a,d=m.default.useRef(null),f=m.default.useRef(new Map).current;return m.default.createElement(e,{scope:b,itemMap:f,collectionRef:d},c)},Slot:h,ItemSlot:m.default.forwardRef((a,b)=>{let{scope:c,children:d,...e}=a,g=m.default.useRef(null),h=b2(b,g),k=f(i,c);return m.default.useEffect(()=>(k.itemMap.set(g,{ref:g,...e}),()=>void k.itemMap.delete(g))),m.default.createElement(b3,{[j]:"",ref:h},d)})},function(b){let c=f(a+"CollectionConsumer",b);return m.default.useCallback(()=>{let a=c.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${j}]`));return Array.from(c.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[c.collectionRef,c.itemMap])},d]}(ci),[cm,cn]=b0(ci,[cl]),[co,cp]=cm(ci),cq=(0,m.forwardRef)((a,b)=>(0,m.createElement)(cj.Provider,{scope:a.__scopeRovingFocusGroup},(0,m.createElement)(cj.Slot,{scope:a.__scopeRovingFocusGroup},(0,m.createElement)(cr,b$({},a,{ref:b}))))),cr=(0,m.forwardRef)((a,b)=>{let{__scopeRovingFocusGroup:c,orientation:d,loop:e=!1,dir:f,currentTabStopId:g,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:i,onEntryFocus:j,...k}=a,l=(0,m.useRef)(null),n=b2(b,l),o=cf(f),[p=null,q]=cd({prop:g,defaultProp:h,onChange:i}),[r,s]=(0,m.useState)(!1),t=cc(j),u=ck(c),v=(0,m.useRef)(!1),[w,x]=(0,m.useState)(0);return(0,m.useEffect)(()=>{let a=l.current;if(a)return a.addEventListener(cg,t),()=>a.removeEventListener(cg,t)},[t]),(0,m.createElement)(co,{scope:c,orientation:d,dir:o,loop:e,currentTabStopId:p,onItemFocus:(0,m.useCallback)(a=>q(a),[q]),onItemShiftTab:(0,m.useCallback)(()=>s(!0),[]),onFocusableItemAdd:(0,m.useCallback)(()=>x(a=>a+1),[]),onFocusableItemRemove:(0,m.useCallback)(()=>x(a=>a-1),[])},(0,m.createElement)(cb.div,b$({tabIndex:r||0===w?-1:0,"data-orientation":d},k,{ref:n,style:{outline:"none",...a.style},onMouseDown:b_(a.onMouseDown,()=>{v.current=!0}),onFocus:b_(a.onFocus,a=>{let b=!v.current;if(a.target===a.currentTarget&&b&&!r){let b=new CustomEvent(cg,ch);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=u().filter(a=>a.focusable);cu([a.find(a=>a.active),a.find(a=>a.id===p),...a].filter(Boolean).map(a=>a.ref.current))}}v.current=!1}),onBlur:b_(a.onBlur,()=>s(!1))})))}),cs=(0,m.forwardRef)((a,b)=>{let{__scopeRovingFocusGroup:c,focusable:d=!0,active:e=!1,tabStopId:f,...g}=a,h=ca(),i=f||h,j=cp("RovingFocusGroupItem",c),k=j.currentTabStopId===i,l=ck(c),{onFocusableItemAdd:n,onFocusableItemRemove:o}=j;return(0,m.useEffect)(()=>{if(d)return n(),()=>o()},[d,n,o]),(0,m.createElement)(cj.ItemSlot,{scope:c,id:i,focusable:d,active:e},(0,m.createElement)(cb.span,b$({tabIndex:k?0:-1,"data-orientation":j.orientation},g,{ref:b,onMouseDown:b_(a.onMouseDown,a=>{d?j.onItemFocus(i):a.preventDefault()}),onFocus:b_(a.onFocus,()=>j.onItemFocus(i)),onKeyDown:b_(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void j.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return ct[e]}(a,j.orientation,j.dir);if(void 0!==b){a.preventDefault();let e=l().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=j.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>cu(e))}})})))}),ct={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function cu(a){let b=document.activeElement;for(let c of a)if(c===b||(c.focus(),document.activeElement!==b))return}let cv=a=>{let{present:b,children:c}=a,d=function(a){var b,c;let[d,e]=(0,m.useState)(),f=(0,m.useRef)({}),g=(0,m.useRef)(a),h=(0,m.useRef)("none"),[i,j]=(b=a?"mounted":"unmounted",c={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},(0,m.useReducer)((a,b)=>{let d=c[a][b];return null!=d?d:a},b));return(0,m.useEffect)(()=>{let a=cw(f.current);h.current="mounted"===i?a:"none"},[i]),b7(()=>{let b=f.current,c=g.current;if(c!==a){let d=h.current,e=cw(b);a?j("MOUNT"):"none"===e||(null==b?void 0:b.display)==="none"?j("UNMOUNT"):c&&d!==e?j("ANIMATION_OUT"):j("UNMOUNT"),g.current=a}},[a,j]),b7(()=>{if(d){let a=a=>{let b=cw(f.current).includes(a.animationName);a.target===d&&b&&(0,aw.flushSync)(()=>j("ANIMATION_END"))},b=a=>{a.target===d&&(h.current=cw(f.current))};return d.addEventListener("animationstart",b),d.addEventListener("animationcancel",a),d.addEventListener("animationend",a),()=>{d.removeEventListener("animationstart",b),d.removeEventListener("animationcancel",a),d.removeEventListener("animationend",a)}}j("ANIMATION_END")},[d,j]),{isPresent:["mounted","unmountSuspended"].includes(i),ref:(0,m.useCallback)(a=>{a&&(f.current=getComputedStyle(a)),e(a)},[])}}(b),e="function"==typeof c?c({present:d.isPresent}):m.Children.only(c),f=b2(d.ref,e.ref);return"function"==typeof c||d.isPresent?(0,m.cloneElement)(e,{ref:f}):null};function cw(a){return(null==a?void 0:a.animationName)||"none"}cv.displayName="Presence";let cx="Tabs",[cy,cz]=b0(cx,[cn]),cA=cn(),[cB,cC]=cy(cx),cD=(0,m.forwardRef)((a,b)=>{let{__scopeTabs:c,value:d,onValueChange:e,defaultValue:f,orientation:g="horizontal",dir:h,activationMode:i="automatic",...j}=a,k=cf(h),[l,n]=cd({prop:d,onChange:e,defaultProp:f});return(0,m.createElement)(cB,{scope:c,baseId:ca(),value:l,onValueChange:n,orientation:g,dir:k,activationMode:i},(0,m.createElement)(cb.div,b$({dir:k,"data-orientation":g},j,{ref:b})))}),cE=(0,m.forwardRef)((a,b)=>{let{__scopeTabs:c,loop:d=!0,...e}=a,f=cC("TabsList",c),g=cA(c);return(0,m.createElement)(cq,b$({asChild:!0},g,{orientation:f.orientation,dir:f.dir,loop:d}),(0,m.createElement)(cb.div,b$({role:"tablist","aria-orientation":f.orientation},e,{ref:b})))}),cF=(0,m.forwardRef)((a,b)=>{let{__scopeTabs:c,value:d,disabled:e=!1,...f}=a,g=cC("TabsTrigger",c),h=cA(c),i=cH(g.baseId,d),j=cI(g.baseId,d),k=d===g.value;return(0,m.createElement)(cs,b$({asChild:!0},h,{focusable:!e,active:k}),(0,m.createElement)(cb.button,b$({type:"button",role:"tab","aria-selected":k,"aria-controls":j,"data-state":k?"active":"inactive","data-disabled":e?"":void 0,disabled:e,id:i},f,{ref:b,onMouseDown:b_(a.onMouseDown,a=>{e||0!==a.button||!1!==a.ctrlKey?a.preventDefault():g.onValueChange(d)}),onKeyDown:b_(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&g.onValueChange(d)}),onFocus:b_(a.onFocus,()=>{let a="manual"!==g.activationMode;k||e||!a||g.onValueChange(d)})})))}),cG=(0,m.forwardRef)((a,b)=>{let{__scopeTabs:c,value:d,forceMount:e,children:f,...g}=a,h=cC("TabsContent",c),i=cH(h.baseId,d),j=cI(h.baseId,d),k=d===h.value,l=(0,m.useRef)(k);return(0,m.useEffect)(()=>{let a=requestAnimationFrame(()=>l.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,m.createElement)(cv,{present:e||k},({present:c})=>(0,m.createElement)(cb.div,b$({"data-state":k?"active":"inactive","data-orientation":h.orientation,role:"tabpanel","aria-labelledby":i,hidden:!c,id:j,tabIndex:0},g,{ref:b,style:{...a.style,animationDuration:l.current?"0s":void 0}}),c&&f))});function cH(a,b){return`${a}-trigger-${b}`}function cI(a,b){return`${a}-content-${b}`}var cJ=a.i(739639);function cK([a,b,c],[d,e,f]){return[a+d,b+e,c+f]}function cL([a,b,c],[d,e,f]){return[a-d,b-e,c-f]}function cM([a,b,c],d){return[a*d,b*d,c*d]}function cN([a,b,c]){return[a/Math.sqrt(a**2+b**2),b/Math.sqrt(a**2+b**2),c]}function cO([a,b,c],d){return[Math.cos(d)*a-Math.sin(d)*b,Math.sin(d)*a+Math.cos(d)*b,c]}function cP(a,b,c){return Math.atan2(c[1]-a[1],c[0]-a[0])-Math.atan2(b[1]-a[1],b[0]-a[0])}function cQ(a){return Math.atan2(Math.sin(a),Math.cos(a))}function cR([a,b]){return Math.sqrt(a**2+b**2)}function cS([a,b],[c,d]){return Math.sqrt((c-a)**2+(d-b)**2)}function cT(a,b){if(0===b||a.length<=2)return a;let c=a[0],d=a[a.length-1],[e,f]=a.reduce(([a,b],e,f)=>{let g=function(a,b,c){let d=cS(b,c);if(0===d)return cS(a,b);let e=Math.max(0,Math.min(1,((a[0]-b[0])*(c[0]-b[0])+(a[1]-b[1])*(c[1]-b[1]))/d**2));return cS([b[0]+e*(c[0]-b[0]),b[1]+e*(c[1]-b[1]),a[2]],a)}(e,c,d);return g>a?[g,f]:[a,b]},[0,-1]);if(!(e>=b))return[c,d];{let e=a[f];return[...cT([c,...a.slice(1,f),e],b).slice(0,-1),e,...cT([e,...a.slice(f,-1),d],b).slice(1)]}}Object.defineProperty({},"LaserPointer",{get:()=>cU,set:void 0,enumerable:!0,configurable:!0});class cU{static{this.defaults={size:2,streamline:.45,simplify:.1,simplifyPhase:"output",keepHead:!1,sizeMapping:()=>1}}static{this.constants={cornerDetectionMaxAngle:75,cornerDetectionVariance:a=>a>35?.5:1,maxTailLength:50}}constructor(a){this.originalPoints=[],this.stablePoints=[],this.tailPoints=[],this.isFresh=!0,this.options=Object.assign({},cU.defaults,a)}get lastPoint(){return this.tailPoints[this.tailPoints.length-1]??this.stablePoints[this.stablePoints.length-1]}addPoint(a){let b=this.originalPoints[this.originalPoints.length-1];if(!b||b[0]!==a[0]||b[1]!==a[1]){var c,d,e;if(this.originalPoints.push(a),this.isFresh){this.isFresh=!1,this.stablePoints.push(a);return}this.options.streamline>0&&(c=this.lastPoint,d=a,e=1-this.options.streamline,a=cK(c,cM(cL(d,c),e))),this.tailPoints.push(a),function(a){if(a.length<2)return 0;let b=0;for(let c=1;c<=a.length-1;c++)b+=cS(a[c-1],a[c]);return b+cS(a[a.length-2],a[a.length-1])}(this.tailPoints)>cU.constants.maxTailLength&&this.stabilizeTail()}}close(){this.stabilizeTail()}stabilizeTail(){if(this.options.simplify>0&&"tail"==this.options.simplifyPhase)throw Error("Not implemented yet");this.stablePoints.push(...this.tailPoints),this.tailPoints=[]}getSize(a,b,c,d,e){return(a??this.options.size)*this.options.sizeMapping({pressure:b,runningLength:e,currentIndex:c,totalLength:d})}getStrokeOutline(a){if(this.isFresh)return[];let b=[...this.stablePoints,...this.tailPoints];this.options.simplify>0&&"input"===this.options.simplifyPhase&&(b=cT(b,this.options.simplify));let c=b.length;if(0===c)return[];if(1===c){let d=b[0],e=this.getSize(a,d[2],0,c,0);if(e<.5)return[];let f=[];for(let a=0;a<=2*Math.PI;a+=Math.PI/16)f.push(cK(d,cM(cO([1,0,0],a),e)));return f.push(cK(d,cM([1,0,0],this.getSize(a,d[2],0,c,0)))),f}if(2===c){let d=b[0],e=b[1],f=this.getSize(a,d[2],0,c,0),g=this.getSize(a,e[2],0,c,0);if(f<.5||g<.5)return[];let h=[],i=cP(d,[d[0],d[1]-100,d[2]],e);for(let a=i;a<=Math.PI+i;a+=Math.PI/16)h.push(cK(d,cM(cO([1,0,0],a),f)));for(let a=Math.PI+i;a<=2*Math.PI+i;a+=Math.PI/16)h.push(cK(e,cM(cO([1,0,0],a),g)));return h.push(h[0]),h}let d=[],e=[],f=0,g=0,h=0,i=0;for(let j=1;j<c-1;j++){let k=b[j-1],l=b[j],m=b[j+1],n=l[2],o=cS(k,l);i+=o,f=g+(o-g)*.2;let p=this.getSize(a,n,j,c,i);if(0===p){h=j+1;continue}let q=cN(cL(k,l)),r=cN(cL(m,l)),s=cO(q,Math.PI/2),t=cO(q,-Math.PI/2),u=cO(r,Math.PI/2),v=cO(r,-Math.PI/2),w=cK(l,cM(s,p)),x=cK(l,cM(t,p)),y=cK(l,cM(u,p)),z=cK(l,cM(v,p)),A=cK(s,v),B=cK(t,u),C=cK(l,cM(0===cR(A)?q:cN(A),p)),D=cK(l,cM(0===cR(B)?r:cN(B),p)),E=cQ(cP(l,k,m));if(Math.abs(E)<cU.constants.cornerDetectionMaxAngle/180*Math.PI*cU.constants.cornerDetectionVariance(f)){let a=Math.abs(cQ(Math.PI-E));if(0===a)continue;if(E<0){e.push(x,D);for(let b=0;b<=a;b+=a/4)d.push(cK(l,cO(cM(s,p),b)));for(let b=a;b>=0;b-=a/4)e.push(cK(l,cO(cM(s,p),b)));e.push(D,y)}else{d.push(w,C);for(let b=0;b<=a;b+=a/4)e.push(cK(l,cO(cM(s,-p),-b)));for(let b=a;b>=0;b-=a/4)d.push(cK(l,cO(cM(s,-p),-b)));d.push(C,z)}}else d.push(C),e.push(D);g=f}if(h>=c-2)if(!this.options.keepHead)return[];else{let a=b[c-1],d=[];for(let b=0;b<=2*Math.PI;b+=Math.PI/16)d.push(cK(a,cM(cO([1,0,0],b),this.options.size)));return d.push(cK(a,cM([1,0,0],this.options.size))),d}let j=b[h],k=b[h+1],l=b[c-2],m=b[c-1],n=cN(cL(k,j)),o=cN(cL(l,m)),p=cO(n,-Math.PI/2),q=cO(o,Math.PI/2),r=this.getSize(a,j[2],0,c,0),s=[],t=this.options.keepHead?this.options.size:this.getSize(a,l[2],c-2,c,i),u=[];if(r>1){for(let a=0;a<=Math.PI;a+=Math.PI/16)s.unshift(cK(j,cO(cM(p,r),-a)));s.unshift(cK(j,cM(p,-r)))}else s.push(j);for(let a=0;a<=3*Math.PI;a+=Math.PI/16)u.push(cK(m,cO(cM(q,-t),-a)));let v=[...s,...d,...u.reverse(),...e.reverse()];return(s.length>0&&v.push(s[0]),this.options.simplify>0&&"output"===this.options.simplifyPhase)?cT(v,this.options.simplify):v}}var cV=as(),{useAtom:cW,useSetAtom:cX,useAtomValue:cY,useStore:cZ}=cV,c$=cV.Provider,c_=ae(),c0=(0,K.b)({"./locales/ar-SA.json":()=>a.A(483149),"./locales/az-AZ.json":()=>a.A(520085),"./locales/bg-BG.json":()=>a.A(915721),"./locales/bn-BD.json":()=>a.A(790886),"./locales/ca-ES.json":()=>a.A(154063),"./locales/cs-CZ.json":()=>a.A(349588),"./locales/da-DK.json":()=>a.A(29427),"./locales/de-DE.json":()=>a.A(376696),"./locales/el-GR.json":()=>a.A(691135),"./locales/en.json":()=>a.A(915859),"./locales/es-ES.json":()=>a.A(781240),"./locales/eu-ES.json":()=>a.A(443710),"./locales/fa-IR.json":()=>a.A(859503),"./locales/fi-FI.json":()=>a.A(912498),"./locales/fr-FR.json":()=>a.A(758903),"./locales/gl-ES.json":()=>a.A(807105),"./locales/he-IL.json":()=>a.A(855987),"./locales/hi-IN.json":()=>a.A(494911),"./locales/hu-HU.json":()=>a.A(890605),"./locales/id-ID.json":()=>a.A(769243),"./locales/it-IT.json":()=>a.A(245582),"./locales/ja-JP.json":()=>a.A(634831),"./locales/kaa.json":()=>a.A(641990),"./locales/kab-KAB.json":()=>a.A(540088),"./locales/kk-KZ.json":()=>a.A(909890),"./locales/km-KH.json":()=>a.A(688923),"./locales/ko-KR.json":()=>a.A(65036),"./locales/ku-TR.json":()=>a.A(615978),"./locales/lt-LT.json":()=>a.A(191965),"./locales/lv-LV.json":()=>a.A(617016),"./locales/mr-IN.json":()=>a.A(913213),"./locales/my-MM.json":()=>a.A(862761),"./locales/nb-NO.json":()=>a.A(350552),"./locales/nl-NL.json":()=>a.A(19045),"./locales/nn-NO.json":()=>a.A(380948),"./locales/oc-FR.json":()=>a.A(740777),"./locales/pa-IN.json":()=>a.A(867599),"./locales/percentages.json":()=>a.A(505040),"./locales/pl-PL.json":()=>a.A(989039),"./locales/pt-BR.json":()=>a.A(549891),"./locales/pt-PT.json":()=>a.A(955266),"./locales/ro-RO.json":()=>a.A(537912),"./locales/ru-RU.json":()=>a.A(900612),"./locales/si-LK.json":()=>a.A(895179),"./locales/sk-SK.json":()=>a.A(826065),"./locales/sl-SI.json":()=>a.A(889473),"./locales/sv-SE.json":()=>a.A(703589),"./locales/ta-IN.json":()=>a.A(97001),"./locales/th-TH.json":()=>a.A(878477),"./locales/tr-TR.json":()=>a.A(798438),"./locales/uk-UA.json":()=>a.A(777581),"./locales/vi-VN.json":()=>a.A(393304),"./locales/zh-CN.json":()=>a.A(506118),"./locales/zh-HK.json":()=>a.A(27077),"./locales/zh-TW.json":()=>a.A(332929)}),c1={code:"en",label:"English"},c2=[c1,...[{code:"ar-SA",label:"العربية",rtl:!0},{code:"bg-BG",label:"Български"},{code:"ca-ES",label:"Català"},{code:"cs-CZ",label:"Česky"},{code:"de-DE",label:"Deutsch"},{code:"el-GR",label:"Ελληνικά"},{code:"es-ES",label:"Español"},{code:"eu-ES",label:"Euskara"},{code:"fa-IR",label:"فارسی",rtl:!0},{code:"fi-FI",label:"Suomi"},{code:"fr-FR",label:"Français"},{code:"gl-ES",label:"Galego"},{code:"he-IL",label:"עברית",rtl:!0},{code:"hi-IN",label:"हिन्दी"},{code:"hu-HU",label:"Magyar"},{code:"id-ID",label:"Bahasa Indonesia"},{code:"it-IT",label:"Italiano"},{code:"ja-JP",label:"日本語"},{code:"kab-KAB",label:"Taqbaylit"},{code:"kk-KZ",label:"Қазақ тілі"},{code:"ko-KR",label:"한국어"},{code:"ku-TR",label:"Kurdî"},{code:"lt-LT",label:"Lietuvių"},{code:"lv-LV",label:"Latviešu"},{code:"my-MM",label:"Burmese"},{code:"nb-NO",label:"Norsk bokmål"},{code:"nl-NL",label:"Nederlands"},{code:"nn-NO",label:"Norsk nynorsk"},{code:"oc-FR",label:"Occitan"},{code:"pa-IN",label:"ਪੰਜਾਬੀ"},{code:"pl-PL",label:"Polski"},{code:"pt-BR",label:"Português Brasileiro"},{code:"pt-PT",label:"Português"},{code:"ro-RO",label:"Română"},{code:"ru-RU",label:"Русский"},{code:"sk-SK",label:"Slovenčina"},{code:"sv-SE",label:"Svenska"},{code:"sl-SI",label:"Slovenščina"},{code:"tr-TR",label:"Türkçe"},{code:"uk-UA",label:"Українська"},{code:"zh-CN",label:"简体中文"},{code:"zh-TW",label:"繁體中文"},{code:"vi-VN",label:"Tiếng Việt"},{code:"mr-IN",label:"मराठी"}].filter(a=>J.c[a.code]>=85).sort((a,b)=>a.label>b.label?1:-1)],c3="__test__";H.a.DEV&&c2.unshift({code:c3,label:"test language"},{code:`${c3}.rtl`,label:"‪test language (rtl)‬",rtl:!0});var c4=c1,c5={},c6=async a=>{if(c4=a,document.documentElement.dir=c4.rtl?"rtl":"ltr",document.documentElement.lang=c4.code,a.code.startsWith(c3))c5={};else try{c5=await c0(`./locales/${c4.code}.json`)}catch(b){console.error(`Failed to load language ${a.code}:`,b.message),c5=I.J}c_.set(c9,a.code)},c7=(a,b)=>{for(let c=0;c<b.length;++c){let d=b[c];if(void 0===a[d])return;a=a[d]}if("string"==typeof a)return a},c8=(a,b,c)=>{if(c4.code.startsWith(c3))return`\u202A[[${b?`${a}(${JSON.stringify(b).slice(1,-1)})`:a}]]\u202C`;let d=a.split("."),e=c7(c5,d)||c7(I.J,d)||c;if(void 0===e){let b=`Can't find translation for ${a}`;if(H.a.PROD)return console.warn(b),"";throw Error(b)}if(b)for(let a in b)e=e.replace(`{{${a}}}`,String(b[a]));return e},c9=O(c1.code),da=()=>({t:c8,langCode:cY(c9)}),db=({size:a="1em",circleWidth:b=8,synchronized:c=!1,className:d=""})=>{let f=-(L.default.useRef(Date.now()).current%1600);return(0,e.jsx)("div",{className:`Spinner ${d}`,children:(0,e.jsx)("svg",{viewBox:"0 0 100 100",style:{width:a,height:a,"--spinner-delay":c?`${f}ms`:0},children:(0,e.jsx)("circle",{cx:"50",cy:"50",r:50-b/2,strokeWidth:b,fill:"none",strokeMiterlimit:"10"})})})},dc=({delay:a,theme:b})=>{let[c,d]=(0,L.useState)(!!a);return(0,L.useEffect)(()=>{if(!a)return;let b=setTimeout(()=>{d(!1)},a);return()=>clearTimeout(b)},[a]),c?null:(0,e.jsxs)("div",{className:(0,av.default)("LoadingMessage",{"LoadingMessage--dark":b===F.G.DARK}),children:[(0,e.jsx)("div",{children:(0,e.jsx)(db,{})}),(0,e.jsx)("div",{className:"LoadingMessage-text",children:c8("labels.loadingScene")})]})},dd=a=>{let[b,c]=(0,L.useState)(!0);return(0,L.useEffect)(()=>{let b=async()=>{await c6(d),c(!1)},d=c2.find(b=>b.code===a.langCode)||c1;b()},[a.langCode]),b?(0,e.jsx)(dc,{theme:a.theme}):a.children},de=L.default.forwardRef(({size:a="medium",visible:b=!0,className:c="",...d},f)=>{let{id:g}=kc(),h=L.default.useRef(null);L.default.useImperativeHandle(f,()=>h.current);let i=`ToolIcon_size_${a}`,[j,k]=(0,L.useState)(!1),l=(0,L.useRef)(!0),m=async a=>{let b="onClick"in d&&d.onClick?.(a);if((0,F.Fb)(b))try{k(!0),await b}catch(a){if(a instanceof F.tc)console.warn(a);else throw a}finally{l.current&&k(!1)}};(0,L.useEffect)(()=>(l.current=!0,()=>{l.current=!1}),[]);let n=(0,L.useRef)(null);if("button"===d.type||"icon"===d.type||"submit"===d.type){let a="icon"===d.type?"button":d.type;return(0,e.jsxs)("button",{className:(0,av.default)("ToolIcon_type_button",i,c,b&&!d.hidden?"ToolIcon_type_button--show":"ToolIcon_type_button--hide",{ToolIcon:!d.hidden,"ToolIcon--selected":d.selected,"ToolIcon--plain":"icon"===d.type}),style:d.style,"data-testid":d["data-testid"],hidden:d.hidden,title:d.title,"aria-label":d["aria-label"],type:a,onClick:m,ref:h,disabled:j||d.isLoading||!!d.disabled,children:[(d.icon||d.label)&&(0,e.jsxs)("div",{className:"ToolIcon__icon","aria-hidden":"true","aria-disabled":!!d.disabled,children:[d.icon||d.label,d.keyBindingLabel&&(0,e.jsx)("span",{className:"ToolIcon__keybinding",children:d.keyBindingLabel}),d.isLoading&&(0,e.jsx)(db,{})]}),d.showAriaLabel&&(0,e.jsxs)("div",{className:"ToolIcon__label",children:[d["aria-label"]," ",j&&(0,e.jsx)(db,{})]}),d.children]})}return(0,e.jsxs)("label",{className:(0,av.default)("ToolIcon",c),title:d.title,onPointerDown:a=>{n.current=a.pointerType||null,d.onPointerDown?.({pointerType:a.pointerType||null})},onPointerUp:()=>{requestAnimationFrame(()=>{n.current=null})},children:[(0,e.jsx)("input",{className:`ToolIcon_type_radio ${i}`,type:"radio",name:d.name,"aria-label":d["aria-label"],"aria-keyshortcuts":d["aria-keyshortcuts"],"data-testid":d["data-testid"],id:`${g}-${d.id}`,onChange:()=>{d.onChange?.({pointerType:n.current})},checked:d.checked,ref:h}),(0,e.jsxs)("div",{className:"ToolIcon__icon",children:[d.icon,d.keyBindingLabel&&(0,e.jsx)("span",{className:"ToolIcon__keybinding",children:d.keyBindingLabel})]})]})});de.displayName="ToolButton";var df=(a,b)=>{if(a.editingGroupId){let c=(0,F.Qc)((0,F.pk)(b),a.editingGroupId);if(c.length)return{...a,selectedElementIds:{[c[0].id]:!0}}}return a},dg=(0,F.$c)({name:"deleteSelectedElements",label:"labels.delete",icon:F.ud,trackEvent:{category:"element",action:"delete"},perform:(a,b,c,d)=>{if(b.editingLinearElement){let{elementId:c,selectedPointsIndices:e,startBindingElement:f,endBindingElement:g}=b.editingLinearElement,h=d.scene.getNonDeletedElementsMap(),i=F.pj.getElement(c,h);if(!i||null==e)return!1;if(i.points.length<2){let c=a.map(a=>a.id===i.id?(0,F.Qj)(a,{isDeleted:!0}):a),d=df(b,c);return{elements:c,appState:{...d,editingLinearElement:null},captureUpdate:F.Wg.IMMEDIATELY}}let j={startBindingElement:e?.includes(0)?null:f,endBindingElement:e?.includes(i.points.length-1)?null:g};return F.pj.deletePoints(i,e),{elements:a,appState:{...b,editingLinearElement:{...b.editingLinearElement,...j,selectedPointsIndices:e?.[0]>0?[e[0]-1]:[0]}},captureUpdate:F.Wg.IMMEDIATELY}}let{elements:e,appState:f}=((a,b,c)=>{let d=new Set((0,F.vk)(a.filter(a=>(0,F.bc)(a)),b).map(a=>a.id)),e={},f=c.scene.getNonDeletedElementsMap(),g=new Set;for(let b of d)for(let c of(0,F.Bi)(a,b))if(!g.has(c.id)){if((0,F.nc)(c)){let a=(0,F.Aj)(c,f);a&&(e[a.id]=!0)}else e[c.id]=!0;g.add(c.id)}let h=!0,i=a.map(a=>{if(b.selectedElementIds[a.id]){let b=(0,F.nc)(a)?(0,F.Aj)(a,f):null;return a.frameId&&d.has(a.frameId)?(h=!1,e[a.id]=!0,a):b?.frameId&&d.has(b?.frameId)?a:(a.boundElements&&a.boundElements.forEach(b=>{let d=c.scene.getNonDeletedElementsMap().get(b.id);d&&(0,F.ec)(d)&&((0,F.Pj)(d,{startBinding:a.id===d.startBinding?.elementId?null:d.startBinding,endBinding:a.id===d.endBinding?.elementId?null:d.endBinding}),(0,F.Pj)(d,{points:d.points}))}),(0,F.Qj)(a,{isDeleted:!0}))}return a.frameId&&d.has(a.frameId)?(h=!1,(0,F.nc)(a)||(e[a.id]=!0),(0,F.Qj)(a,{frameId:null})):(0,F.nc)(a)&&b.selectedElementIds[a.containerId]?(0,F.Qj)(a,{isDeleted:!0}):a}),j=b.editingGroupId;if(h&&b.editingGroupId){let a=(0,F.Qc)(i,b.editingGroupId).filter(a=>!a.isDeleted);if(a.length>1)a[0]&&(e[a[0].id]=!0);else{j=null,a[0]&&(e[a[0].id]=!0);let c=a[0];if(c){let a=c.groupIds.findIndex(a=>a===b.editingGroupId),d=c.groupIds[a+1];if(d){let a=(0,F.Qc)(i,d).filter(a=>!a.isDeleted);a.length>1&&(j=d,a.forEach(a=>{e[a.id]=!0}))}}}}return{elements:i,appState:{...b,...(0,F.Jc)({selectedElementIds:e,editingGroupId:j},i,b,null)}}})(a,b,d);return(0,F.Tg)(e,e.filter(a=>a.isDeleted)),f=df(f,e),{elements:e,appState:{...f,activeTool:(0,F.jb)(b,{type:"selection"}),multiElement:null,activeEmbeddable:null},captureUpdate:(0,F.tk)((0,F.pk)(a),b)?F.Wg.IMMEDIATELY:F.Wg.EVENTUALLY}},keyTest:(a,b,c)=>(a.key===F.hg.BACKSPACE||a.key===F.hg.DELETE)&&!a[F.hg.CTRL_OR_CMD],PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsx)(de,{type:"button",icon:F.ud,title:c8("labels.delete"),"aria-label":c8("labels.delete"),onClick:()=>c(null),visible:(0,F.tk)((0,F.pk)(a),b)})}),dh=(a,b)=>a.frameId===b||a.id===b,di=(a,b,c)=>{let d=[],e=[],f=null,g=-1,h=(0,F.xb)(c||(0,F.vk)(a,b,{includeBoundTextElement:!0,includeElementsInFrames:!0}));for(;++g<a.length;){let b=a[g];h.get(b.id)?(e.length&&(d=d.concat(e),e=[]),d.push(g),f=g+1):b.isDeleted&&f===g?(f=g+1,e.push(g)):e=[]}return d},dj=(a,b,c)=>{if("containerId"in a&&a.containerId){let d=F.Oj.getScene(a).getElement(a.containerId);if(d)return"left"===c?Math.min(b.indexOf(d),b.indexOf(a)):Math.max(b.indexOf(d),b.indexOf(a))}else{let d=a.boundElements?.find(a=>"arrow"!==a.type)?.id;if(d){let e=F.Oj.getScene(a).getElement(d);if(e)return"left"===c?Math.min(b.indexOf(e),b.indexOf(a)):Math.max(b.indexOf(e),b.indexOf(a))}}},dk=(a,b)=>b.reduce((b,c)=>{let d=a[c];return b.set(d.id,d),b},new Map),dl=(a,b,c)=>{let d,e=di(a,b),f=dk(a,e),g=(d=0,e.reduce((a,b,c)=>(c>0&&e[c-1]!==b-1&&(d=++d),(a[d]||(a[d]=[])).push(b),a),[]));"right"===c&&(g=g.reverse());let h=new Set(e.filter(b=>(0,F.bc)(a[b])).map(b=>a[b].id));return g.forEach((d,e)=>{let f=d[0],g=d[d.length-1],i="left"===c?f:g,j=d.some(b=>{let c=a[b];return c.frameId&&h.has(c.frameId)})?null:a[i]?.frameId,k=((a,b,c,d,e)=>{let f=b[c],g=b=>!b.isDeleted&&(e?b.frameId===e:!a.editingGroupId||b.groupIds.includes(a.editingGroupId)),h="left"===d?(0,F.rb)(b,a=>g(a),Math.max(0,c-1)):(0,F.qb)(b,a=>g(a),c+1),i=b[h];if(!i)return -1;if(a.editingGroupId){if(f?.groupIds.join("")===i?.groupIds.join(""))return dj(i,b,d)??h;if(!i?.groupIds.includes(a.editingGroupId))return -1}if(!e&&(i.frameId||(0,F.bc)(i))){var j;let a,c,e=(j=i.frameId||i.id,a=-1,c=-1,b.forEach((b,d)=>{dh(b,j)&&(-1===a&&(a=d),c=d)}),-1===a?[]:b.slice(a,c+1));return"left"===d?b.indexOf(e[0]):b.indexOf(e[e.length-1])}if(!i.groupIds.length)return dj(i,b,d)??h;let k=a.editingGroupId?i.groupIds[i.groupIds.indexOf(a.editingGroupId)-1]:i.groupIds[i.groupIds.length-1],l=(0,F.Qc)(b,k);return l.length?"left"===d?b.indexOf(l[0]):b.indexOf(l[l.length-1]):h})(b,a,i,c,j);if(-1===k||i===k)return;let l="left"===c?a.slice(0,k):a.slice(0,f),m=a.slice(f,g+1),n="left"===c?a.slice(k,f):a.slice(g+1,k+1),o="left"===c?a.slice(g+1):a.slice(k+1);a="left"===c?[...l,...m,...n,...o]:[...l,...n,...m,...o]}),(0,F.Mj)(a,f),a},dm=(a,b,c,d,e)=>{let f=di(a,b,e),g=dk(a,f),h=[],i,j;if("left"===c){if(d)i=(0,F.qb)(a,a=>dh(a,d));else if(b.editingGroupId){let c=(0,F.Qc)(a,b.editingGroupId);if(!c.length)return a;i=a.indexOf(c[0])}else i=0;j=f[f.length-1]}else{if(d)j=(0,F.rb)(a,a=>dh(a,d));else if(b.editingGroupId){let c=(0,F.Qc)(a,b.editingGroupId);if(!c.length)return a;j=a.indexOf(c[c.length-1])}else j=a.length-1;i=f[0]}-1===i&&(i=0);for(let b=i;b<j+1;b++)f.includes(b)||h.push(a[b]);let k=Array.from(g.values()),l=a.slice(0,i),m=a.slice(j+1),n="left"===c?[...l,...k,...h,...m]:[...l,...h,...k,...m];return(0,F.Mj)(n,g),n};function dn(a,b,c,d){let e=(0,F.xb)((0,F.vk)(a,b,{includeBoundTextElement:!0,includeElementsInFrames:!0})),f={regularElements:[],frameChildren:new Map},g=new Set;for(let b of a)e.has(b.id)&&(0,F.bc)(b)&&g.add(b.id);for(let b of a)if(e.has(b.id))if((0,F.bc)(b)||b.frameId&&g.has(b.frameId))f.regularElements.push(b);else if(b.frameId){let a=f.frameChildren.get(b.frameId)||[];a.push(b),f.frameChildren.set(b.frameId,a)}else f.regularElements.push(b);let h=a;for(let[e,g]of Array.from(f.frameChildren.entries()))h=d(a,b,c,e,g);return d(h,b,c,null,f.regularElements)}var dp=(0,F.$c)({name:"sendBackward",label:"labels.sendBackward",keywords:["move down","zindex","layer"],icon:F.Wd,trackEvent:{category:"element"},perform:(a,b)=>({elements:dl(a,b,"left"),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyPriority:40,keyTest:a=>a[F.hg.CTRL_OR_CMD]&&!a.shiftKey&&a.code===F.gg.BRACKET_LEFT,PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)("button",{type:"button",className:"zIndexButton",onClick:()=>a(null),title:`${c8("labels.sendBackward")} \u2014 ${(0,F.kb)("CtrlOrCmd+[")}`,children:F.Wd})}),dq=(0,F.$c)({name:"bringForward",label:"labels.bringForward",keywords:["move up","zindex","layer"],icon:F.Vd,trackEvent:{category:"element"},perform:(a,b)=>({elements:dl(a,b,"right"),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyPriority:40,keyTest:a=>a[F.hg.CTRL_OR_CMD]&&!a.shiftKey&&a.code===F.gg.BRACKET_RIGHT,PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)("button",{type:"button",className:"zIndexButton",onClick:()=>a(null),title:`${c8("labels.bringForward")} \u2014 ${(0,F.kb)("CtrlOrCmd+]")}`,children:F.Vd})}),dr=(0,F.$c)({name:"sendToBack",label:"labels.sendToBack",keywords:["move down","zindex","layer"],icon:F.Yd,trackEvent:{category:"element"},perform:(a,b)=>({elements:dn(a,b,"left",dm),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>F.l?a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.BRACKET_LEFT:a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.code===F.gg.BRACKET_LEFT,PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)("button",{type:"button",className:"zIndexButton",onClick:()=>a(null),title:`${c8("labels.sendToBack")} \u2014 ${F.l?(0,F.kb)("CtrlOrCmd+Alt+["):(0,F.kb)("CtrlOrCmd+Shift+[")}`,children:F.Yd})}),ds=(0,F.$c)({name:"bringToFront",label:"labels.bringToFront",keywords:["move up","zindex","layer"],icon:F.Xd,trackEvent:{category:"element"},perform:(a,b)=>({elements:dn(a,b,"right",dm),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>F.l?a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.BRACKET_RIGHT:a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.code===F.gg.BRACKET_RIGHT,PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)("button",{type:"button",className:"zIndexButton",onClick:b=>a(null),title:`${c8("labels.bringToFront")} \u2014 ${F.l?(0,F.kb)("CtrlOrCmd+Alt+]"):(0,F.kb)("CtrlOrCmd+Shift+]")}`,children:F.Xd})}),dt=(0,F.$c)({name:"selectAll",label:"labels.selectAll",icon:F.uf,trackEvent:{category:"canvas"},viewMode:!1,perform:(a,b,c,d)=>{if(b.editingLinearElement)return!1;let e=a.filter(a=>!a.isDeleted&&!((0,F._b)(a)&&a.containerId)&&!a.locked).reduce((a,b)=>(a[b.id]=!0,a),{});return{appState:{...b,...(0,F.Jc)({editingGroupId:null,selectedElementIds:e},(0,F.pk)(a),b,d),selectedLinearElement:1===Object.keys(e).length&&(0,F.cc)(a[0])?new F.pj(a[0]):null},captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.A}),du=(0,F.$c)({name:"duplicateSelection",label:"labels.duplicateSelection",icon:F.wd,trackEvent:{category:"element"},perform:(a,b,c,d)=>{if(b.editingLinearElement)try{let c=F.pj.duplicateSelectedPoints(b,d.scene.getNonDeletedElementsMap());return{elements:a,appState:c,captureUpdate:F.Wg.IMMEDIATELY}}catch{return!1}let e=dv(a,b);if(d.props.onDuplicate&&e.elements){let b=d.props.onDuplicate(e.elements,a);b&&(e.elements=b)}return{...e,captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.D,PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsx)(de,{type:"button",icon:F.wd,title:`${c8("labels.duplicateSelection")} \u2014 ${(0,F.kb)("CtrlOrCmd+D")}`,"aria-label":c8("labels.duplicateSelection"),onClick:()=>c(null),visible:(0,F.tk)((0,F.pk)(a),b)})}),dv=(a,b)=>{var c,d;let e,f,g,h,i,j,k,l=new Map,m=[],n=[],o=new Map,p=new Map,q=(0,F.xb)(a),r=a=>{let c=(0,F.Ub)(a).reduce((a,c)=>{if(t.has(c.id))return a;t.set(c.id,!0);let d=(0,F.cg)(b.editingGroupId,l,c,{x:c.x+F.R/2,y:c.y+F.R/2});return t.set(d.id,!0),p.set(d.id,d),o.set(c.id,d.id),n.push(c),m.push(d),a.push(d),a},[]);return Array.isArray(a)?c:c[0]||null};e=(c=a).slice(),f=new Set,g=a=>{let b=a[0]?.groupIds?.join(""),c=[a[0]],d=[];for(let e of a.slice(1))e.groupIds?.join("")===b?c.push(e):d.push(e);return d.length?[...c,...g(d)]:c},h=new Map,e.forEach((a,b)=>{if(!h.has(a.id))if(a.groupIds?.length){let c=a.groupIds[a.groupIds.length-1];for(let a of g(e.slice(b).filter(a=>{let b=a?.groupIds?.some(a=>a===c);return b&&h.set(a.id,!0),b})))f.add(a)}else f.add(a)}),d=f.size!==c.length?(console.error("normalizeGroupElementOrder: lost some elements... bailing!"),c):[...f],i=(0,F.yb)(d),j=d.slice(),k=new Set,j.forEach((a,b)=>{a&&(a.boundElements?.length?(k.add(a),j[b]=null,a.boundElements.forEach(a=>{let b=i.get(a.id);b&&"text"===a.type&&(k.add(b[0]),j[b[1]]=null)})):"text"===a.type&&a.containerId&&i.get(a.containerId)?.[0].boundElements?.find(b=>b.id===a.id)||(k.add(a),j[b]=null))}),a=k.size!==d.length?(console.error("normalizeBoundElementsOrder: lost some elements... bailing!"),d):[...k];let s=(0,F.xb)((0,F.vk)(a,b,{includeBoundTextElement:!0,includeElementsInFrames:!0})),t=new Map,u=a.slice(),v=(a,b)=>{(0,F.Kb)(-1!==a,"targetIndex === -1 "),(Array.isArray(b)||b)&&u.splice(a+1,0,...(0,F.Ub)(b))},w=new Set(a.filter(a=>s.has(a.id)&&(0,F.bc)(a)).map(a=>a.id));for(let c of a){if(t.has(c.id)||!s.has(c.id))continue;let d=(0,F.Lc)(b,c);if(d){let b=(0,F.Qc)(a,d).flatMap(b=>(0,F.bc)(b)?[...(0,F.Bi)(a,b.id),b]:[b]);v((0,F.rb)(u,a=>a.groupIds?.includes(d)),r(b));continue}if(!(c.frameId&&w.has(c.frameId))){if((0,F.bc)(c)){let b=c.id,d=(0,F.Bi)(a,b);v((0,F.rb)(u,a=>a.frameId===b||a.id===b),r([...d,c]));continue}if((0,F.mc)(c)){let a=(0,F.zj)(c,q);v((0,F.rb)(u,a=>a.id===c.id||"containerId"in a&&a.containerId===c.id),r(a?[c,a]:c));continue}if((0,F.nc)(c)){let a=(0,F.Aj)(c,q);v((0,F.rb)(u,b=>b.id===c.id||b.id===a?.id),r(a?[a,c]:c));continue}v((0,F.rb)(u,a=>a.id===c.id),r(c))}}(0,F.vj)(u,n,o),(0,F.Sg)(u,n,o),(0,F.wi)(u,n,o);let x=(0,F.rk)(m);return{elements:u,appState:{...b,...(0,F.Jc)({editingGroupId:b.editingGroupId,selectedElementIds:x.reduce((a,b)=>((0,F.nc)(b)||(a[b.id]=!0),a),{})},(0,F.pk)(u),b,null)}}},dw=(a,b,c,d)=>{try{return}catch(a){console.error("error during analytics",a)}},dx=(0,L.forwardRef)((a,b)=>{let{title:c,className:d,testId:f,active:g,standalone:h,icon:i,onClick:j}=a;return(0,e.jsx)("button",{type:"button",ref:b,title:c,"data-testid":f,className:(0,av.default)(d,{standalone:h,active:g}),onClick:j,children:i},c)}),dy=a=>(0,e.jsx)("div",{className:"buttonList",children:a.options.map(b=>"button"===a.type?(0,e.jsx)(dx,{icon:b.icon,title:b.text,testId:b.testId,active:b.active??a.value===b.value,onClick:c=>a.onClick(b.value,c)},b.text):(0,e.jsxs)("label",{className:(0,av.default)({active:a.value===b.value}),title:b.text,children:[(0,e.jsx)("input",{type:"radio",name:a.group,onChange:()=>a.onChange(b.value),checked:a.value===b.value,"data-testid":b.testId}),b.icon]},b.text))}),dz=({onChange:a,type:b,activeColor:c,topPicks:d})=>{let f;return"elementStroke"===b&&(f=F.f),"elementBackground"===b&&(f=F.g),"canvasBackground"===b&&(f=F.h),d&&(f=d),f?(0,e.jsx)("div",{className:"color-picker__top-picks",children:f.map(b=>(0,e.jsx)("button",{className:(0,av.default)("color-picker__button",{active:b===c,"is-transparent":"transparent"===b||!b}),style:{"--swatch-color":b},type:"button",title:b,onClick:()=>a(b),"data-testid":`color-top-pick-${b}`,children:(0,e.jsx)("div",{className:"color-picker__button-outline"})},b))}):(console.error("Invalid type for TopPicks"),null)},dA=()=>(0,e.jsx)("div",{style:{width:1,height:"1rem",backgroundColor:"var(--default-border-color)",margin:"0 auto"}}),dB=({palette:a,color:b})=>{for(let[c,d]of Object.entries(a))if(Array.isArray(d)){let a=d.indexOf(b);if(a>-1)return{colorName:c,shade:a}}else if(d===b)return{colorName:c,shade:null};return null},dC=[["q","w","e","r","t"],["a","s","d","f","g"],["z","x","c","v","b"]].flat(),dD=({color:a,palette:b})=>!Object.values(b).flat().includes(a),dE=O(null),dF=(a,b,c)=>(299*a+587*b+114*c)/1e3>=160?"black":"white",dG=({color:a,keyLabel:b,isCustomColor:c=!1,isShade:d=!1})=>(0,e.jsxs)("div",{className:"color-picker__button__hotkey-label",style:{color:((a,b)=>{if(b){let b=new Option().style;if(b.color=a,b.color){let a=b.color.replace(/^(rgb|rgba)\(/,"").replace(/\)$/,"").replace(/\s/g,"").split(",");return dF(parseInt(a[0]),parseInt(a[1]),parseInt(a[2]))}}return"transparent"===a?"black":dF(parseInt(a.substring(1,3),16),parseInt(a.substring(3,5),16),parseInt(a.substring(5,7),16))})(a,c)},children:[d&&"⇧",b]}),dH=({hex:a,onChange:b,palette:c})=>{let d=dB({color:a||"transparent",palette:c}),[f,g]=cW(dE),h=(0,L.useRef)(null);if((0,L.useEffect)(()=>{h.current&&"shades"===f&&h.current.focus()},[d,f]),d){let{colorName:a,shade:i}=d,j=c[a];if(Array.isArray(j))return(0,e.jsx)("div",{className:"color-picker-content--default shades",children:j.map((c,d)=>(0,e.jsxs)("button",{ref:d===i&&"shades"===f?h:void 0,tabIndex:-1,type:"button",className:(0,av.default)("color-picker__button color-picker__button--large",{active:d===i}),"aria-label":"Shade",title:`${a} - ${d+1}`,style:c?{"--swatch-color":c}:void 0,onClick:()=>{b(c),g("shades")},children:[(0,e.jsx)("div",{className:"color-picker__button-outline"}),(0,e.jsx)(dG,{color:c,keyLabel:d+1,isShade:!0})]},d))})}return(0,e.jsxs)("div",{className:"color-picker-content--default",style:{position:"relative"},tabIndex:-1,children:[(0,e.jsx)("button",{type:"button",tabIndex:-1,className:"color-picker__button color-picker__button--large color-picker__button--no-focus-visible"}),(0,e.jsx)("div",{tabIndex:-1,style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",fontSize:"0.75rem"},children:c8("colorPicker.noShades")})]})},dI=({palette:a,color:b,onChange:c,label:d,activeShade:f})=>{let g=dB({color:b||"transparent",palette:a}),[h,i]=cW(dE),j=(0,L.useRef)(null);return(0,L.useEffect)(()=>{j.current&&"baseColors"===h&&j.current.focus()},[g?.colorName,h]),(0,e.jsx)("div",{className:"color-picker-content--default",children:Object.entries(a).map(([a,b],d)=>{let h=(Array.isArray(b)?b[f]:b)||"transparent",k=dC[d],l=c8(`colors.${a.replace(/\d+/,"")}`,null,"");return(0,e.jsxs)("button",{ref:g?.colorName===a?j:void 0,tabIndex:-1,type:"button",className:(0,av.default)("color-picker__button color-picker__button--large",{active:g?.colorName===a,"is-transparent":"transparent"===h||!h}),onClick:()=>{c(h),i("baseColors")},title:`${l}${h.startsWith("#")?` ${h}`:""} \u2014 ${k}`,"aria-label":`${l} \u2014 ${k}`,style:{"--swatch-color":h},"data-testid":`color-${a}`,children:[(0,e.jsx)("div",{className:"color-picker__button-outline"}),(0,e.jsx)(dG,{color:h,keyLabel:k})]},a)})})},dJ=({colors:a,color:b,onChange:c,label:d})=>{let[f,g]=cW(dE),h=(0,L.useRef)(null);return(0,L.useEffect)(()=>{h.current&&h.current.focus()},[b,f]),(0,e.jsx)("div",{className:"color-picker-content--default",children:a.map((a,f)=>(0,e.jsxs)("button",{ref:b===a?h:void 0,tabIndex:-1,type:"button",className:(0,av.default)("color-picker__button color-picker__button--large",{active:b===a,"is-transparent":"transparent"===a||!a}),onClick:()=>{c(a),g("custom")},title:a,"aria-label":d,style:{"--swatch-color":a},children:[(0,e.jsx)("div",{className:"color-picker__button-outline"}),(0,e.jsx)(dG,{color:a,keyLabel:f+1,isCustomColor:!0})]},f))})},dK=(a,b,c)=>{let d=Math.ceil(c/F.b);switch(b=b??-1,a){case"ArrowLeft":{let a=b-1;return a<0?c-1:a}case"ArrowRight":return(b+1)%c;case"ArrowDown":{let a=b+F.b;return a>=c?b%F.b:a}case"ArrowUp":{let a=b-F.b,e=a<0?F.b*d+a:a;return e>=c?void 0:e}}},dL=({children:a})=>(0,e.jsx)("div",{className:"color-picker__heading",children:a}),dM=({color:a,onChange:b,label:c,type:d,elements:f,palette:g,updateData:h,children:i,onEyeDropperToggle:j,onEscape:k})=>{let[l]=L.default.useState(()=>{let a,b,c;return"canvasBackground"===d?[]:(a={elementBackground:"backgroundColor",elementStroke:"strokeColor"},b=f.filter(b=>!b.isDeleted&&dD({color:b[a[d]],palette:g})),c=new Map,b.forEach(b=>{let e=b[a[d]];c.has(e)?c.set(e,c.get(e)+1):c.set(e,1)}),[...c.entries()].sort((a,b)=>b[1]-a[1]).map(a=>a[0]).slice(0,F.a))}),[m,n]=cW(dE),o=dB({color:a,palette:g});(0,L.useEffect)(()=>{if(!m){let b=dD({color:a,palette:g});n(b&&!l.includes(a)?"hex":b?"custom":o?.shade!=null?"shades":"baseColors")}},[m,a,g,n,o,l]);let[p,q]=(0,L.useState)(o?.shade??("elementBackground"===d?F.d:F.c));(0,L.useEffect)(()=>{o?.shade!=null&&q(o.shade);let a=a=>{a.key===F.hg.ALT&&j(!1)};return document.addEventListener("keyup",a,{capture:!0}),()=>{document.removeEventListener("keyup",a,{capture:!0})}},[o,j]);let r=L.default.useRef(null);return(0,e.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":c8("labels.colorPicker"),children:(0,e.jsxs)("div",{ref:r,onKeyDown:c=>{(({event:a,activeColorPickerSection:b,palette:c,color:d,onChange:e,customColors:f,setActiveColorPickerSection:g,updateData:h,activeShade:i,onEyeDropperToggle:j,onEscape:k})=>{if(a[F.hg.CTRL_OR_CMD])return!1;if(a.key===F.hg.ESCAPE)return k(a),!0;if(a.key===F.hg.ALT)return j(!0),!0;if(a.key===F.hg.I)return j(),!0;let l=dB({color:d,palette:c});if(a.key===F.hg.TAB){let h=Object.entries({custom:!!f.length,baseColors:!0,shades:l?.shade!=null,hex:!0}).reduce((a,[b,c])=>(c&&a.push(b),a),[]),i=h.indexOf(b),j=a.shiftKey?-1:1,k=i+j>h.length-1?0:i+j<0?h.length-1:i+j,m=h[k];return m&&g(m),"custom"===m?e(f[0]):"baseColors"===m&&(Object.entries(c).find(([a,b])=>Array.isArray(b)?b.includes(d):b===d?a:null)||e(F.e.black)),a.preventDefault(),a.stopPropagation(),!0}if((({e:a,colorObj:b,onChange:c,palette:d,customColors:e,setActiveColorPickerSection:f,activeShade:g})=>{if(b?.shade!=null&&["Digit1","Digit2","Digit3","Digit4","Digit5"].includes(a.code)&&a.shiftKey){let e=Number(a.code.slice(-1))-1;return c(d[b.colorName][e]),f("shades"),!0}if(["1","2","3","4","5"].includes(a.key)&&e[Number(a.key)-1])return c(e[Number(a.key)-1]),f("custom"),!0;if(dC.includes(a.key)){let b=dC.indexOf(a.key),e=Object.keys(d)[b],h=d[e];return c(Array.isArray(h)?h[g]:h),f("baseColors"),!0}return!1})({e:a,colorObj:l,onChange:e,palette:c,customColors:f,setActiveColorPickerSection:g,activeShade:i}))return!0;if("shades"===b&&l){let{shade:b}=l,d=dK(a.key,b,F.b);if(void 0!==d)return e(c[l.colorName][d]),!0}if("baseColors"===b&&l){let{colorName:b}=l,d=Object.keys(c),f=d.indexOf(b),g=dK(a.key,f,d.length);if(void 0!==g){let a=c[d[g]];return e(Array.isArray(a)?a[i]:a),!0}}if("custom"===b){let b=f.indexOf(d),c=dK(a.key,b,f.length);if(void 0!==c)return e(f[c]),!0}return!1})({event:c,activeColorPickerSection:m,palette:g,color:a,onChange:b,onEyeDropperToggle:j,customColors:l,setActiveColorPickerSection:n,updateData:h,activeShade:p,onEscape:k})&&(c.preventDefault(),c.stopPropagation())},className:"color-picker-content properties-content",tabIndex:-1,children:[!!l.length&&(0,e.jsxs)("div",{children:[(0,e.jsx)(dL,{children:c8("colorPicker.mostUsedCustomColors")}),(0,e.jsx)(dJ,{colors:l,color:a,label:c8("colorPicker.mostUsedCustomColors"),onChange:b})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)(dL,{children:c8("colorPicker.colors")}),(0,e.jsx)(dI,{color:a,label:c,palette:g,onChange:b,activeShade:p})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)(dL,{children:c8("colorPicker.shades")}),(0,e.jsx)(dH,{hex:a,onChange:b,palette:g})]}),i]})})},dN=L.default.createContext(null),dO=a=>{let[b,c]=(0,L.useState)(null),d=kb(),{theme:e}=L.default.useContext(dN),{container:f}=kc();return(0,L.useLayoutEffect)(()=>{b&&(b.className="",b.classList.add("excalidraw",...a?.className?.split(/\s+/)||[]),b.classList.toggle("excalidraw--mobile",d.editor.isMobile),b.classList.toggle("theme--dark",e===F.G.DARK))},[b,e,d.editor.isMobile,a?.className]),(0,L.useLayoutEffect)(()=>{let b=a?.parentSelector?f?.querySelector(a.parentSelector):document.body;if(!b)return;let d=document.createElement("div");return b.appendChild(d),c(d),()=>{b.removeChild(d)}},[f,a?.parentSelector]),b};function dP(a,b,c){(0,L.useEffect)(()=>{function d(d){if(!a.current)return;let e=c?.(d,a.current);if(!0!==e){if(!1===e)return b(d);a.current.contains(d.target)||!document.documentElement.contains(d.target)||d.target.closest("[data-radix-portal]")||d.target===document.documentElement&&"none"===document.body.style.pointerEvents||d.target.closest("[data-prevent-outside-click]")||b(d)}}return document.addEventListener("pointerdown",d),document.addEventListener("touchstart",d),()=>{document.removeEventListener("pointerdown",d),document.removeEventListener("touchstart",d)}},[a,b,c])}var dQ=a=>{let b=(0,L.useRef)(a);return Object.assign(b.current,a),b.current},dR=O(null),dS=({onCancel:a,onChange:b,onSelect:c,colorPickerType:d})=>{let f=dO({className:"excalidraw-eye-dropper-backdrop",parentSelector:".excalidraw-eye-dropper-container"}),g=L.default.useContext(dN),h=kd(),i=j9(),j=dQ({app:i,onCancel:a,onChange:b,onSelect:c,selectedElements:(0,F.vk)(h,g)}),{container:k}=kc();(0,L.useEffect)(()=>{let a=l.current;if(!a||!i.canvas||!f)return;let b=!1,c=i.canvas.getContext("2d"),e=({clientX:a,clientY:b})=>{let d=c.getImageData((a-g.offsetLeft)*window.devicePixelRatio,(b-g.offsetTop)*window.devicePixelRatio,1,1).data;return(0,F.k)(d[0],d[1],d[2])},h=({clientX:c,clientY:f,altKey:g})=>{a.style.top=`${f+20}px`,a.style.left=`${c+20}px`;let h=e({clientX:c,clientY:f});b&&j.onChange(d,h,j.selectedElements,{altKey:g}),a.style.background=h},m=()=>{j.onCancel()},n=a=>{b=!0,a.stopImmediatePropagation()},o=a=>{var c;b=!1,k?.focus(),a.stopImmediatePropagation(),a.preventDefault(),c=e(a),j.onSelect(c,a)},p=a=>{a.key===F.hg.ESCAPE&&(a.preventDefault(),a.stopImmediatePropagation(),m())};return f.tabIndex=-1,f.focus(),h({clientX:j.app.lastViewportPosition.x,clientY:j.app.lastViewportPosition.y,altKey:!1}),f.addEventListener("keydown",p),f.addEventListener("pointerdown",n),f.addEventListener("pointerup",o),window.addEventListener("pointermove",h,{passive:!0}),window.addEventListener("blur",m),()=>{b=!1,f.removeEventListener("keydown",p),f.removeEventListener("pointerdown",n),f.removeEventListener("pointerup",o),window.removeEventListener("pointermove",h),window.removeEventListener("blur",m)}},[j,i.canvas,f,d,k,g.offsetLeft,g.offsetTop]);let l=(0,L.useRef)(null);return dP(l,()=>{a()},a=>!!a.target.closest(".excalidraw-eye-dropper-trigger, .excalidraw-eye-dropper-backdrop")),f?(0,aw.createPortal)((0,e.jsx)("div",{ref:l,className:"excalidraw-eye-dropper-preview"}),f):null},dT=({color:a,onChange:b,label:c,colorPickerType:d})=>{let f=kb(),[g,h]=(0,L.useState)(a),[i,j]=cW(dE);(0,L.useEffect)(()=>{h(a)},[a]);let k=(0,L.useCallback)(a=>{let c=a.toLowerCase(),d=dX(c);d&&b(d),h(c)},[b]),l=(0,L.useRef)(null),m=(0,L.useRef)(null);(0,L.useEffect)(()=>{l.current&&l.current.focus()},[i]);let[n,o]=cW(dR);return(0,L.useEffect)(()=>()=>{o(null)},[o]),(0,e.jsxs)("div",{className:"color-picker__input-label",children:[(0,e.jsx)("div",{className:"color-picker__input-hash",children:"#"}),(0,e.jsx)("input",{ref:"hex"===i?l:void 0,style:{border:0,padding:0},spellCheck:!1,className:"color-picker-input","aria-label":c,onChange:a=>{k(a.target.value)},value:(g||"").replace(/^#/,""),onBlur:()=>{h(a)},tabIndex:-1,onFocus:()=>j("hex"),onKeyDown:a=>{a.key!==F.hg.TAB&&(a.key===F.hg.ESCAPE&&m.current?.focus(),a.stopPropagation())}}),!f.editor.isMobile&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{style:{width:"1px",height:"1.25rem",backgroundColor:"var(--default-border-color)"}}),(0,e.jsx)("div",{ref:m,className:(0,av.default)("excalidraw-eye-dropper-trigger",{selected:n}),onClick:()=>o(a=>a?null:{keepOpenOnAlt:!1,onSelect:a=>b(a),colorPickerType:d}),title:`${c8("labels.eyeDropper")} \u2014 ${F.hg.I.toLocaleUpperCase()} or ${(0,F.kb)("Alt")} `,children:F.df})]})]})},dU=L.default.forwardRef(({children:a,padding:b,className:c,style:d},f)=>(0,e.jsx)("div",{className:(0,av.default)("Island",c),style:{"--padding":b,...d},ref:f,children:a})),dV=L.default.forwardRef(({className:a,container:b,children:c,style:d,onClose:f,onKeyDown:g,onFocusOutside:h,onPointerLeave:i,onPointerDownOutside:j},k)=>{let l=kb();return(0,e.jsx)(bE,{container:b,children:(0,e.jsxs)(bG,{ref:k,className:(0,av.default)("focus-visible-none",a),"data-prevent-outside-click":!0,side:l.editor.isMobile&&!l.viewport.isLandscape?"bottom":"right",align:l.editor.isMobile&&!l.viewport.isLandscape?"center":"start",alignOffset:-16,sideOffset:20,style:{zIndex:"var(--zIndex-popup)"},onPointerLeave:i,onKeyDown:g,onFocusOutside:h,onPointerDownOutside:j,onCloseAutoFocus:a=>{a.stopPropagation(),a.preventDefault(),b&&!(0,F.$a)(document.activeElement)&&b.focus(),f()},children:[(0,e.jsx)(dU,{padding:3,style:d,children:c}),(0,e.jsx)(bL,{width:20,height:10,style:{fill:"var(--popup-bg-color)",filter:"drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)"}})]})})}),dW=a=>{let b=new Option().style;return b.color=a,!!b.color},dX=a=>(0,F.sb)(a)?a:dW(`#${a}`)?`#${a}`:dW(a)?a:null,dY=({type:a,color:b,onChange:c,label:d,elements:f,palette:g=F.e,updateData:h})=>{let{container:i}=kc(),[,j]=cW(dE),[k,l]=cW(dR),m=(0,e.jsxs)("div",{children:[(0,e.jsx)(dL,{children:c8("colorPicker.hexCode")}),(0,e.jsx)(dT,{color:b,label:d,onChange:a=>{c(a)},colorPickerType:a})]}),n=(0,L.useRef)(null);return(0,e.jsx)(dV,{container:i,style:{maxWidth:"13rem"},onFocusOutside:a=>{n.current?.querySelector(".color-picker-content")?.focus(),a.preventDefault()},onPointerDownOutside:a=>{k&&a.preventDefault()},onClose:()=>{h({openPopup:null}),j(null)},children:g?(0,e.jsx)(dM,{palette:g,color:b,onChange:a=>{c(a)},onEyeDropperToggle:b=>{l(d=>b?((d=d||{keepOpenOnAlt:!0,onSelect:c,colorPickerType:a}).keepOpenOnAlt=!0,d):!1===b||d?null:{keepOpenOnAlt:!1,onSelect:c,colorPickerType:a})},onEscape:a=>{k?l(null):h({openPopup:null})},label:d,type:a,elements:f,updateData:h,children:m}):m})},dZ=({label:a,color:b,type:c})=>(0,e.jsx)(bA,{type:"button",className:(0,av.default)("color-picker__button active-color properties-trigger",{"is-transparent":"transparent"===b||!b}),"aria-label":a,style:b?{"--swatch-color":b}:void 0,title:"elementStroke"===c?c8("labels.showStroke"):c8("labels.showBackground"),children:(0,e.jsx)("div",{className:"color-picker__button-outline"})}),d$=({type:a,color:b,onChange:c,label:d,elements:f,palette:g=F.e,topPicks:h,updateData:i,appState:j})=>(0,e.jsx)("div",{children:(0,e.jsxs)("div",{role:"dialog","aria-modal":"true",className:"color-picker-container",children:[(0,e.jsx)(dz,{activeColor:b,onChange:c,type:a,topPicks:h}),(0,e.jsx)(dA,{}),(0,e.jsxs)(bx,{open:j.openPopup===a,onOpenChange:b=>{i({openPopup:b?a:null})},children:[(0,e.jsx)(dZ,{color:b,label:d,type:a}),j.openPopup===a&&(0,e.jsx)(dY,{type:a,color:b,onChange:c,label:d,elements:f,palette:g,updateData:i})]})]})}),d_=({icon:a})=>(0,e.jsx)("span",{style:{width:"1em",margin:"0 0.5ex 0 0.5ex",display:"inline-block",lineHeight:0,verticalAlign:"middle"},children:a}),d0=({label:a,open:b,openTrigger:c,children:d,className:f})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{style:{cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center"},className:f,onClick:c,children:[a,(0,e.jsx)(d_,{icon:b?F.Mf:F.Lf})]}),b&&(0,e.jsx)("div",{style:{display:"flex",flexDirection:"column"},children:d})]}),d1=O(!1);function d2({options:a,value:b,label:c,onChange:d,onClose:f,numberOfOptionsToAlwaysShow:g=a.length}){let h=kb(),[i,j]=cW(d1),k=L.default.useMemo(()=>a.slice(0,g),[a,g]),l=L.default.useMemo(()=>a.slice(g),[a,g]);(0,L.useEffect)(()=>{k.some(a=>a.value===b)||j(!0)},[b,k,j]);let m=a=>(0,e.jsx)("div",{className:"picker-content",children:a.map((a,c)=>(0,e.jsxs)("button",{type:"button",className:(0,av.default)("picker-option",{active:b===a.value}),onClick:b=>{d(a.value)},title:`${a.text} ${a.keyBinding&&`\u2014 ${a.keyBinding.toUpperCase()}`}`,"aria-label":a.text||"none","aria-keyshortcuts":a.keyBinding||void 0,ref:c=>{b===a.value&&setTimeout(()=>{c?.focus()},0)},children:[a.icon,a.keyBinding&&(0,e.jsx)("span",{className:"picker-keybinding",children:a.keyBinding})]},a.text))});return(0,e.jsx)(bG,{side:h.editor.isMobile&&!h.viewport.isLandscape?"top":"bottom",align:"start",sideOffset:12,style:{zIndex:"var(--zIndex-popup)"},onKeyDown:c=>{let e=a.find(a=>a.keyBinding===c.key.toLowerCase());if(!(c.metaKey||c.altKey||c.ctrlKey)&&e)d(e.value),c.preventDefault();else if(c.key===F.hg.TAB){let e=a.findIndex(a=>a.value===b),f=c.shiftKey?(a.length+e-1)%a.length:(e+1)%a.length;d(a[f].value)}else if((0,F.jg)(c.key)){let e=c4.rtl,f=a.findIndex(a=>a.value===b);if(-1!==f){let b=a.length,h=f;switch(c.key){case e?F.hg.ARROW_LEFT:F.hg.ARROW_RIGHT:h=(f+1)%b;break;case e?F.hg.ARROW_RIGHT:F.hg.ARROW_LEFT:h=(b+f-1)%b;break;case F.hg.ARROW_DOWN:h=(f+(g??1))%b;break;case F.hg.ARROW_UP:h=(b+f-(g??1))%b}d(a[h].value)}c.preventDefault()}else(c.key===F.hg.ESCAPE||c.key===F.hg.ENTER)&&(c.preventDefault(),f());c.nativeEvent.stopImmediatePropagation(),c.stopPropagation()},children:(0,e.jsxs)("div",{className:"picker",role:"dialog","aria-modal":"true","aria-label":c,children:[m(k),l.length>0&&(0,e.jsx)(d0,{label:c8("labels.more_options"),open:i,openTrigger:()=>{j(a=>!a)},className:"picker-collapsible",children:m(l)})]})})}function d3({value:a,label:b,options:c,onChange:d,group:f="",numberOfOptionsToAlwaysShow:g}){let[h,i]=L.default.useState(!1),j=L.default.useRef(null);return(0,e.jsx)("div",{children:(0,e.jsxs)(bx,{open:h,onOpenChange:a=>i(a),children:[(0,e.jsx)(bA,{name:f,type:"button","aria-label":b,onClick:()=>i(!h),ref:j,className:h?"active":"",children:c.find(b=>b.value===a)?.icon}),h&&(0,e.jsx)(d2,{options:c,value:a,label:b,onChange:d,onClose:()=>{i(!1)},numberOfOptionsToAlwaysShow:g})]})})}var d4=L.default.forwardRef(({className:a,placeholder:b,onChange:c},d)=>(0,e.jsxs)("div",{className:(0,av.default)("QuickSearch__wrapper",a),children:[F.pf,(0,e.jsx)("input",{ref:d,className:"QuickSearch__input",type:"text",placeholder:b,onChange:a=>c(a.target.value.trim().toLowerCase())})]})),d5=({className:a,placeholder:b,children:c})=>{let d=!L.Children.count(c);return(0,e.jsx)("div",{className:(0,av.default)("ScrollableList__wrapper",a),role:"menu",children:d?(0,e.jsx)("div",{className:"empty",children:b}):c})},d6=({children:a,className:b="",style:c,title:d})=>(0,e.jsxs)("div",{className:`dropdown-menu-group ${b}`,style:c,children:[d&&(0,e.jsx)("p",{className:"dropdown-menu-group-title",children:d}),a]});d6.displayName="DropdownMenuGroup";var d7=L.default.createContext({}),d8=(a="",b=!1,c=!1)=>`dropdown-menu-item dropdown-menu-item-base ${a}
2
- ${b?"dropdown-menu-item--selected":""} ${c?"dropdown-menu-item--hovered":""}`.trim(),d9=(a,b)=>{let c=(0,L.useContext)(d7);return(0,F.Ib)(a,a=>{let d=new CustomEvent("menu.itemSelect",{bubbles:!0,cancelable:!0});b?.(d),d.defaultPrevented||c.onSelect?.(d)})},ea=({textStyle:a,icon:b,shortcut:c,children:d})=>{let f=kb();return(0,e.jsxs)(e.Fragment,{children:[b&&(0,e.jsx)("div",{className:"dropdown-menu-item__icon",children:b}),(0,e.jsx)("div",{style:a,className:"dropdown-menu-item__text",children:d}),c&&!f.editor.isMobile&&(0,e.jsx)("div",{className:"dropdown-menu-item__shortcut",children:c})]})},eb=({icon:a,value:b,order:c,children:d,shortcut:f,className:g,hovered:h,selected:i,textStyle:j,onSelect:k,onClick:l,...m})=>{let n=d9(l,k),o=(0,L.useRef)(null);return(0,L.useEffect)(()=>{h&&(0===c?o.current?.scrollIntoView({block:"end"}):o.current?.scrollIntoView({block:"nearest"}))},[h,c]),(0,e.jsx)("button",{...m,ref:o,value:b,onClick:n,className:d8(g,i,h),title:m.title??m["aria-label"],children:(0,e.jsx)(ea,{textStyle:j,icon:a,shortcut:f,children:d})})};eb.displayName="DropdownMenuItem";var ec="blue",ed=({type:a=ec,children:b})=>{let{theme:c}=ke(),d={display:"inline-flex",marginLeft:"auto",padding:"2px 4px",borderRadius:6,fontSize:9,fontFamily:"Cascadia, monospace",border:c===F.G.LIGHT?"1.5px solid white":"none"};switch(a){case"green":Object.assign(d,{backgroundColor:"var(--background-color-badge)",color:"var(--color-badge)"});break;case"red":Object.assign(d,{backgroundColor:"pink",color:"darkred"});break;default:Object.assign(d,{background:"var(--color-promo)",color:"var(--color-surface-lowest)"})}return(0,e.jsx)("div",{className:"DropDownMenuItemBadge",style:d,children:b})};ed.displayName="DropdownMenuItemBadge",eb.Badge=ed;var ee=L.default.memo(({selectedFontFamily:a,hoveredFontFamily:b,onSelect:c,onHover:d,onLeave:f,onOpen:g,onClose:h})=>{let{container:i}=kc(),{fonts:j}=j9(),{showDeprecatedFonts:k}=ka(),[l,m]=(0,L.useState)(""),n=(0,L.useRef)(null),o=(0,L.useMemo)(()=>Array.from(F.Qf.registered.entries()).filter(([a,{metadata:b}])=>!b.serverSide&&!b.fallback).map(([a,{metadata:b,fontFaces:c}])=>{let d={value:a,icon:b.icon??F.Oe,text:c[0]?.fontFace?.family??"Unknown"};return b.deprecated&&Object.assign(d,{deprecated:b.deprecated,badge:{type:"red",placeholder:c8("fontList.badge.old")}}),d}).sort((a,b)=>a.text.toLowerCase()>b.text.toLowerCase()?1:-1),[]),p=(0,L.useMemo)(()=>new Set(j.getSceneFamilies()),[a]),q=(0,L.useMemo)(()=>o.filter(a=>p.has(a.value)),[o,p]),r=(0,L.useMemo)(()=>o.filter(a=>!p.has(a.value)&&(k||!a.deprecated)),[o,p,k]),s=(0,L.useMemo)(()=>(0,F.zb)([...q,...r].filter(a=>a.text?.toLowerCase().includes(l))),[q,r,l]),t=(0,L.useMemo)(()=>{let c;return b?c=s.find(a=>a.value===b):a&&(c=s.find(b=>b.value===a)),!c&&l&&(s[0]?.value?d(s[0].value):f()),c},[b,a,l,s,d,f]),u=(0,L.useCallback)(a=>{(({event:a,inputRef:b,hoveredFont:c,filteredFonts:d,onClose:e,onSelect:f,onHover:g})=>!a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key.toLowerCase()===F.hg.F?(b.current?.focus(),!0):a.key===F.hg.ESCAPE?(e(),!0):a.key===F.hg.ENTER?(c?.value&&f(c.value),!0):a.key===F.hg.ARROW_DOWN?(c?.next?g(c.next.value):d[0]?.value&&g(d[0].value),!0):a.key===F.hg.ARROW_UP?(c?.prev?g(c.prev.value):d[d.length-1]?.value&&g(d[d.length-1].value),!0):void 0)({event:a,inputRef:n,hoveredFont:t,filteredFonts:s,onSelect:c,onHover:d,onClose:h})&&(a.preventDefault(),a.stopPropagation())},[t,s,c,d,h]);(0,L.useEffect)(()=>(g(),()=>{h()}),[]);let v=(0,L.useMemo)(()=>s.filter(a=>p.has(a.value)),[s,p]),w=(0,L.useMemo)(()=>s.filter(a=>!p.has(a.value)),[s,p]),x=(b,f)=>(0,e.jsxs)(eb,{icon:b.icon,value:b.value,order:f,textStyle:{fontFamily:(0,F.bb)({fontFamily:b.value})},hovered:b.value===t?.value,selected:b.value===a,tabIndex:b.value===a?0:-1,onClick:a=>{c(Number(a.currentTarget.value))},onMouseMove:()=>{t?.value!==b.value&&d(b.value)},children:[b.text,b.badge&&(0,e.jsx)(ed,{type:b.badge.type,children:b.badge.placeholder})]},b.value),y=[];return v.length&&y.push((0,e.jsx)(d6,{title:c8("fontList.sceneFonts"),children:v.map(x)},"group_1")),w.length&&y.push((0,e.jsx)(d6,{title:c8("fontList.availableFonts"),children:w.map((a,b)=>x(a,b+v.length))},"group_2")),(0,e.jsxs)(dV,{className:"properties-content",container:i,style:{width:"15rem"},onClose:h,onPointerLeave:f,onKeyDown:u,children:[(0,e.jsx)(d4,{ref:n,placeholder:c8("quickSearch.placeholder"),onChange:(0,F.db)(m,20)}),(0,e.jsx)(d5,{className:"dropdown-menu fonts manual-hover",placeholder:c8("fontList.empty"),children:y.length?y:null})]})},(a,b)=>a.selectedFontFamily===b.selectedFontFamily&&a.hoveredFontFamily===b.hoveredFontFamily),ef=({selectedFontFamily:a})=>{let b=(0,L.useMemo)(()=>!!(a&&!ei(a)),[a]);return(0,e.jsx)(bA,{asChild:!0,children:(0,e.jsx)("div",{children:(0,e.jsx)(dx,{standalone:!0,icon:F.qd,title:c8("labels.showFonts"),className:"properties-trigger",testId:"font-family-show-fonts",active:b,onClick:()=>{}})})})},eg=[{value:F.F.Excalifont,icon:F.pd,text:c8("labels.handDrawn"),testId:"font-family-hand-drawn"},{value:F.F.Nunito,icon:F.Oe,text:c8("labels.normal"),testId:"font-family-normal"},{value:F.F["Comic Shanns"],icon:F.Pe,text:c8("labels.code"),testId:"font-family-code"}],eh=new Set(eg.map(a=>a.value)),ei=a=>!!a&&eh.has(a),ej=L.default.memo(({isOpened:a,selectedFontFamily:b,hoveredFontFamily:c,onSelect:d,onHover:f,onLeave:g,onPopupChange:h})=>{let i=(0,L.useMemo)(()=>eg,[]),j=(0,L.useCallback)(a=>{a&&d(a)},[d]);return(0,e.jsxs)("div",{role:"dialog","aria-modal":"true",className:"FontPicker__container",children:[(0,e.jsx)(dy,{type:"button",options:i,value:b,onClick:j}),(0,e.jsx)(dA,{}),(0,e.jsxs)(bx,{open:a,onOpenChange:h,children:[(0,e.jsx)(ef,{selectedFontFamily:b}),a&&(0,e.jsx)(ee,{selectedFontFamily:b,hoveredFontFamily:c,onSelect:j,onHover:f,onLeave:g,onOpen:()=>h(!0),onClose:()=>h(!1)})]})]})},(a,b)=>a.isOpened===b.isOpened&&a.selectedFontFamily===b.selectedFontFamily&&a.hoveredFontFamily===b.hoveredFontFamily),ek=({updateData:a,appState:b,elements:c,testId:d})=>{let f=L.default.useRef(null),g=L.default.useRef(null),h=em(c,b,a=>a.opacity,!0,b.currentItemOpacity);return(0,L.useEffect)(()=>{if(f.current&&g.current){let a=f.current,b=g.current,c=h/100*(a.offsetWidth-15)+7.5;b.style.left=`${c}px`,a.style.background=`linear-gradient(to right, var(--color-slider-track) 0%, var(--color-slider-track) ${h}%, var(--button-bg) ${h}%, var(--button-bg) 100%)`}},[h]),(0,e.jsxs)("label",{className:"control-label",children:[c8("labels.opacity"),(0,e.jsxs)("div",{className:"range-wrapper",children:[(0,e.jsx)("input",{ref:f,type:"range",min:"0",max:"100",step:"10",onChange:b=>{a(+b.target.value)},value:h,className:"range-input","data-testid":d}),(0,e.jsx)("div",{className:"value-bubble",ref:g,children:0!==h?h:null}),(0,e.jsx)("div",{className:"zero-label",children:"0"})]})]})},el=(a,b,c,d=!1)=>{let e=(0,F.xb)((0,F.vk)(a,b,{includeBoundTextElement:d}));return a.map(a=>e.get(a.id)||a.id===b.editingTextElement?.id?c(a):a)},em=function(a,b,c,d,e){let f=b.editingTextElement,g=(0,F.pk)(a),h=null;return f&&(h=c(f)),h||(h=(0,F.tk)(g,b)?(0,F.uk)(!0===d?g:g.filter(a=>d(a)),b,c)??("function"==typeof e?e(!0):e):"function"==typeof e?e(!1):e),h},en=(a,b,c,d,e)=>{let f=new Set,g=el(a,b,a=>{if((0,F._b)(a)){let b,e=d(a);f.add(e);let g=(0,F.Qj)(a,{fontSize:e});return(0,F.uj)(g,c.scene.getContainerElement(a),c.scene.getNonDeletedElementsMap()),b=g,g=(0,F.nc)(b)||!b.autoResize?b:(0,F.Pj)(b,{x:"left"===a.textAlign?a.x:a.x+(a.width-b.width)/("center"===a.textAlign?2:1),y:a.y+(a.height-b.height)/2},!1)}return a},!0),h=(0,F.xb)(g);return(0,F.vk)(a,b,{includeBoundTextElement:!0}).forEach(a=>{(0,F._b)(a)&&(0,F.Pg)(a,h)}),{elements:g,appState:{...b,currentItemFontSize:1===f.size?[...f][0]:e??b.currentItemFontSize},captureUpdate:F.Wg.IMMEDIATELY}},eo=((0,F.$c)({name:"changeStrokeColor",label:"labels.stroke",trackEvent:!1,perform:(a,b,c)=>({...c.currentItemStrokeColor&&{elements:el(a,b,a=>(0,F.Wi)(a.type)?(0,F.Qj)(a,{strokeColor:c.currentItemStrokeColor}):a,!0)},appState:{...b,...c},captureUpdate:c.currentItemStrokeColor?F.Wg.IMMEDIATELY:F.Wg.EVENTUALLY}),PanelComponent:({elements:a,appState:b,updateData:c,appProps:d})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("h3",{"aria-hidden":"true",children:c8("labels.stroke")}),(0,e.jsx)(d$,{topPicks:F.f,palette:F.i,type:"elementStroke",label:c8("labels.stroke"),color:em(a,b,a=>a.strokeColor,!0,b.currentItemStrokeColor),onChange:a=>c({currentItemStrokeColor:a}),elements:a,appState:b,updateData:c})]})}),(0,F.$c)({name:"changeBackgroundColor",label:"labels.changeBackground",trackEvent:!1,perform:(a,b,c)=>({...c.currentItemBackgroundColor&&{elements:el(a,b,a=>(0,F.Qj)(a,{backgroundColor:c.currentItemBackgroundColor}))},appState:{...b,...c},captureUpdate:c.currentItemBackgroundColor?F.Wg.IMMEDIATELY:F.Wg.EVENTUALLY}),PanelComponent:({elements:a,appState:b,updateData:c,appProps:d})=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("h3",{"aria-hidden":"true",children:c8("labels.background")}),(0,e.jsx)(d$,{topPicks:F.g,palette:F.j,type:"elementBackground",label:c8("labels.background"),color:em(a,b,a=>a.backgroundColor,!0,b.currentItemBackgroundColor),onChange:a=>c({currentItemBackgroundColor:a}),elements:a,appState:b,updateData:c})]})}),(0,F.$c)({name:"changeFillStyle",label:"labels.fill",trackEvent:!1,perform:(a,b,c,d)=>(dw("element","changeFillStyle",`${c} (${d.device.editor.isMobile?"mobile":"desktop"})`),{elements:el(a,b,a=>(0,F.Qj)(a,{fillStyle:c})),appState:{...b,currentItemFillStyle:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>{let d=(0,F.vk)(a,b),f=d.length>0&&d.every(a=>"zigzag"===a.fillStyle);return(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.fill")}),(0,e.jsx)(dy,{type:"button",options:[{value:"hachure",text:`${f?c8("labels.zigzag"):c8("labels.hachure")} (${(0,F.kb)("Alt-Click")})`,icon:f?F.je:F.ke,active:!!f||void 0,testId:"fill-hachure"},{value:"cross-hatch",text:c8("labels.crossHatch"),icon:F.le,testId:"fill-cross-hatch"},{value:"solid",text:c8("labels.solid"),icon:F.me,testId:"fill-solid"}],value:em(a,b,a=>a.fillStyle,a=>a.hasOwnProperty("fillStyle"),a=>a?null:b.currentItemFillStyle),onClick:(a,b)=>{c(b.altKey&&"hachure"===a&&d.every(a=>"hachure"===a.fillStyle)?"zigzag":a)}})]})}}),(0,F.$c)({name:"changeStrokeWidth",label:"labels.strokeWidth",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>(0,F.Qj)(a,{strokeWidth:c})),appState:{...b,currentItemStrokeWidth:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.strokeWidth")}),(0,e.jsx)(dy,{group:"stroke-width",options:[{value:F.va.thin,text:c8("labels.thin"),icon:F.ne,testId:"strokeWidth-thin"},{value:F.va.bold,text:c8("labels.bold"),icon:F.oe,testId:"strokeWidth-bold"},{value:F.va.extraBold,text:c8("labels.extraBold"),icon:F.pe,testId:"strokeWidth-extraBold"}],value:em(a,b,a=>a.strokeWidth,a=>a.hasOwnProperty("strokeWidth"),a=>a?null:b.currentItemStrokeWidth),onChange:a=>c(a)})]})}),(0,F.$c)({name:"changeSloppiness",label:"labels.sloppiness",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>(0,F.Qj)(a,{seed:(0,F.rc)(),roughness:c})),appState:{...b,currentItemRoughness:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.sloppiness")}),(0,e.jsx)(dy,{group:"sloppiness",options:[{value:0,text:c8("labels.architect"),icon:F.se},{value:1,text:c8("labels.artist"),icon:F.te},{value:2,text:c8("labels.cartoonist"),icon:F.ue}],value:em(a,b,a=>a.roughness,a=>a.hasOwnProperty("roughness"),a=>a?null:b.currentItemRoughness),onChange:a=>c(a)})]})}),(0,F.$c)({name:"changeStrokeStyle",label:"labels.strokeStyle",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>(0,F.Qj)(a,{strokeStyle:c})),appState:{...b,currentItemStrokeStyle:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.strokeStyle")}),(0,e.jsx)(dy,{group:"strokeStyle",options:[{value:"solid",text:c8("labels.strokeStyle_solid"),icon:F.ne},{value:"dashed",text:c8("labels.strokeStyle_dashed"),icon:F.qe},{value:"dotted",text:c8("labels.strokeStyle_dotted"),icon:F.re}],value:em(a,b,a=>a.strokeStyle,a=>a.hasOwnProperty("strokeStyle"),a=>a?null:b.currentItemStrokeStyle),onChange:a=>c(a)})]})}),(0,F.$c)({name:"changeOpacity",label:"labels.opacity",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>(0,F.Qj)(a,{opacity:c}),!0),appState:{...b,currentItemOpacity:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsx)(ek,{updateData:c,elements:a,appState:b,testId:"opacity"})}),(0,F.$c)({name:"changeFontSize",label:"labels.fontSize",trackEvent:!1,perform:(a,b,c,d)=>en(a,b,d,()=>c,c),PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.fontSize")}),(0,e.jsx)(dy,{group:"font-size",options:[{value:16,text:c8("labels.small"),icon:F.Je,testId:"fontSize-small"},{value:20,text:c8("labels.medium"),icon:F.Ke,testId:"fontSize-medium"},{value:28,text:c8("labels.large"),icon:F.Le,testId:"fontSize-large"},{value:36,text:c8("labels.veryLarge"),icon:F.Me,testId:"fontSize-veryLarge"}],value:em(a,b,a=>{if((0,F._b)(a))return a.fontSize;let b=(0,F.zj)(a,d.scene.getNonDeletedElementsMap());return b?b.fontSize:null},a=>(0,F._b)(a)||null!==(0,F.zj)(a,d.scene.getNonDeletedElementsMap()),a=>a?null:b.currentItemFontSize||F.I),onChange:a=>c(a)})]})}),(0,F.$c)({name:"decreaseFontSize",label:"labels.decreaseFontSize",icon:F.Ne,trackEvent:!1,perform:(a,b,c,d)=>en(a,b,d,a=>Math.round(1/1.1*a.fontSize)),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&(a.key===F.hg.CHEVRON_LEFT||a.key===F.hg.COMMA)})),ep=(0,F.$c)({name:"increaseFontSize",label:"labels.increaseFontSize",icon:F.Ne,trackEvent:!1,perform:(a,b,c,d)=>en(a,b,d,a=>Math.round(1.1*a.fontSize)),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&(a.key===F.hg.CHEVRON_RIGHT||a.key===F.hg.PERIOD)}),eq=((0,F.$c)({name:"changeFontFamily",label:"labels.fontFamily",trackEvent:!1,perform:(a,b,c,d)=>{let{cachedElements:e,resetAll:f,resetContainers:g,...h}=c;if(f)return{elements:el(a,b,a=>{let b=e?.get(a.id);return b?(0,F.Qj)(a,{...b}):a},!0),appState:{...b,...h},captureUpdate:F.Wg.NEVER};let{currentItemFontFamily:i,currentHoveredFontFamily:j}=c,k=F.Wg.EVENTUALLY,l,m=!1;if(i)l=i,k=F.Wg.IMMEDIATELY;else if(j){l=j,k=F.Wg.EVENTUALLY;let c=(0,F.vk)(a,b,{includeBoundTextElement:!0}).filter(a=>(0,F._b)(a));if(c.length>200)m=!0;else{let a=0,b=0;for(;a<c.length&&b<5e3;){let d=c[a];b+=d?.originalText.length||0,a++}b>5e3&&(m=!0)}}let n={appState:{...b,...h},captureUpdate:k};if(l&&!m){let c=new Map,f=new Set,h=!1,k=Array.from(F.Qf.loadedFontsCache.values()),m=Object.entries(F.F).find(([a,b])=>b===l)?.[0];j&&m&&k.some(a=>a.startsWith(m))&&(h=!0),Object.assign(n,{elements:el(a,b,a=>{if((0,F._b)(a)&&(a.fontFamily!==l||i)){let b=(0,F.Qj)(a,{fontFamily:l,lineHeight:(0,F.Rf)(l)}),i=e?.get(a.containerId||"")||{},j=d.scene.getContainerElement(a);return g&&j&&i&&(0,F.Pj)(j,{...i},!1),h||(f=new Set([...f,...Array.from(b.originalText)])),c.set(b,j),b}return a},!0)});let o=`10px ${(0,F.bb)({fontFamily:l})}`,p=Array.from(f.values()).join();if(h||window.document.fonts.check(o,p))for(let[a,b]of c)(0,F.uj)(a,b,d.scene.getNonDeletedElementsMap(),!1);else window.document.fonts.load(o,p).then(a=>{for(let[a,b]of c){let c=d.scene.getElement(a.id),e=b?d.scene.getElement(b.id):null;c&&(0,F.uj)(c,e,d.scene.getNonDeletedElementsMap(),!1)}d.fonts.onLoaded(a)})}return n},PanelComponent:({elements:a,appState:b,app:c,updateData:d})=>{let f=(0,L.useRef)(new Map),g=(0,L.useRef)(null),[h,i]=(0,L.useState)({}),j=(0,L.useRef)(!0),k=(0,L.useMemo)(()=>{let d=(a,c)=>em(a,b,a=>{if((0,F._b)(a))return a.fontFamily;let b=(0,F.zj)(a,c);return b?b.fontFamily:null},a=>(0,F._b)(a)||null!==(0,F.zj)(a,c),a=>a?null:b.currentItemFontFamily||F.J);return"fontFamily"===h.openPopup&&"fontFamily"===b.openPopup?d(Array.from(f.current?.values()??[]),f.current):h.openPopup||"fontFamily"===b.openPopup?g.current:d(a,c.scene.getNonDeletedElementsMap())},[h.openPopup,b,a,c.scene]);return(0,L.useEffect)(()=>{g.current=k},[k]),(0,L.useEffect)(()=>{Object.keys(h).length&&(d(h),i({}))},[h]),(0,L.useEffect)(()=>(j.current=!1,()=>{j.current=!0}),[]),(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.fontFamily")}),(0,e.jsx)(ej,{isOpened:"fontFamily"===b.openPopup,selectedFontFamily:k,hoveredFontFamily:b.currentHoveredFontFamily,onSelect:a=>{i({openPopup:null,currentHoveredFontFamily:null,currentItemFontFamily:a}),f.current.clear()},onHover:a=>{i({currentHoveredFontFamily:a,cachedElements:new Map(f.current),resetContainers:!0})},onLeave:()=>{i({currentHoveredFontFamily:null,cachedElements:new Map(f.current),resetAll:!0})},onPopupChange:e=>{if(e){f.current.clear();let{editingTextElement:d}=b;if(d?.type==="text"){let a=c.scene.getElement(d.id);f.current.set(d.id,(0,F.Qj)(a||d,{},!0))}else for(let c of(0,F.vk)(a,b,{includeBoundTextElement:!0}))f.current.set(c.id,(0,F.Qj)(c,{},!0));i({openPopup:"fontFamily"})}else{let a={openPopup:null,currentHoveredFontFamily:null,cachedElements:new Map(f.current),resetAll:!0};j.current?d({...h,...a}):i(a),f.current.clear()}}})]})}}),(0,F.$c)({name:"changeTextAlign",label:"Change text alignment",trackEvent:!1,perform:(a,b,c,d)=>({elements:el(a,b,a=>{if((0,F._b)(a)){let b=(0,F.Qj)(a,{textAlign:c});return(0,F.uj)(b,d.scene.getContainerElement(a),d.scene.getNonDeletedElementsMap()),b}return a},!0),appState:{...b,currentItemTextAlign:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>{let f=d.scene.getNonDeletedElementsMap();return(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.textAlign")}),(0,e.jsx)(dy,{group:"text-align",options:[{value:"left",text:c8("labels.left"),icon:F.Qe,testId:"align-left"},{value:"center",text:c8("labels.center"),icon:F.Re,testId:"align-horizontal-center"},{value:"right",text:c8("labels.right"),icon:F.Se,testId:"align-right"}],value:em(a,b,a=>{if((0,F._b)(a))return a.textAlign;let b=(0,F.zj)(a,f);return b?b.textAlign:null},a=>(0,F._b)(a)||null!==(0,F.zj)(a,f),a=>a?null:b.currentItemTextAlign),onChange:a=>c(a)})]})}}),(0,F.$c)({name:"changeVerticalAlign",label:"Change vertical alignment",trackEvent:{category:"element"},perform:(a,b,c,d)=>({elements:el(a,b,a=>{if((0,F._b)(a)){let b=(0,F.Qj)(a,{verticalAlign:c});return(0,F.uj)(b,d.scene.getContainerElement(a),d.scene.getNonDeletedElementsMap()),b}return a},!0),appState:{...b},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)("fieldset",{children:(0,e.jsx)(dy,{group:"text-align",options:[{value:F.sa.TOP,text:c8("labels.alignTop"),icon:(0,e.jsx)(F.Te,{theme:b.theme}),testId:"align-top"},{value:F.sa.MIDDLE,text:c8("labels.centerVertically"),icon:(0,e.jsx)(F.Ve,{theme:b.theme}),testId:"align-middle"},{value:F.sa.BOTTOM,text:c8("labels.alignBottom"),icon:(0,e.jsx)(F.Ue,{theme:b.theme}),testId:"align-bottom"}],value:em(a,b,a=>{if((0,F._b)(a)&&a.containerId)return a.verticalAlign;let b=(0,F.zj)(a,d.scene.getNonDeletedElementsMap());return b?b.verticalAlign:null},a=>(0,F._b)(a)||null!==(0,F.zj)(a,d.scene.getNonDeletedElementsMap()),a=>a?null:F.sa.MIDDLE),onChange:a=>c(a)})})}),(0,F.$c)({name:"changeRoundness",label:"Change edge roundness",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>(0,F.ec)(a)?a:(0,F.Qj)(a,{roundness:"round"===c?{type:(0,F.oc)(a.type)?F.ua.ADAPTIVE_RADIUS:F.ua.PROPORTIONAL_RADIUS}:null})),appState:{...b,currentItemRoundness:c},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>{let d=(0,F.wk)((0,F.pk)(a),b).some(a=>a.roundness?.type===F.ua.LEGACY);return(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.edges")}),(0,e.jsx)(dy,{group:"edges",options:[{value:"sharp",text:c8("labels.sharp"),icon:F.ve},{value:"round",text:c8("labels.round"),icon:F.we}],value:em(a,b,a=>d?null:a.roundness?"round":"sharp",a=>!(0,F.dc)(a)&&a.hasOwnProperty("roundness"),a=>a?null:b.currentItemRoundness),onChange:a=>c(a)})]})}}),a=>[{value:null,text:c8("labels.arrowhead_none"),keyBinding:"q",icon:F.xe},{value:"arrow",text:c8("labels.arrowhead_arrow"),keyBinding:"w",icon:(0,e.jsx)(F.ye,{flip:a})},{value:"triangle",text:c8("labels.arrowhead_triangle"),icon:(0,e.jsx)(F.Ce,{flip:a}),keyBinding:"e"},{value:"triangle_outline",text:c8("labels.arrowhead_triangle_outline"),icon:(0,e.jsx)(F.De,{flip:a}),keyBinding:"r"},{value:"circle",text:c8("labels.arrowhead_circle"),keyBinding:"a",icon:(0,e.jsx)(F.ze,{flip:a})},{value:"circle_outline",text:c8("labels.arrowhead_circle_outline"),keyBinding:"s",icon:(0,e.jsx)(F.Ae,{flip:a})},{value:"diamond",text:c8("labels.arrowhead_diamond"),icon:(0,e.jsx)(F.Ee,{flip:a}),keyBinding:"d"},{value:"diamond_outline",text:c8("labels.arrowhead_diamond_outline"),icon:(0,e.jsx)(F.Fe,{flip:a}),keyBinding:"f"},{value:"bar",text:c8("labels.arrowhead_bar"),keyBinding:"z",icon:(0,e.jsx)(F.Be,{flip:a})},{value:"crowfoot_one",text:c8("labels.arrowhead_crowfoot_one"),icon:(0,e.jsx)(F.He,{flip:a}),keyBinding:"c"},{value:"crowfoot_many",text:c8("labels.arrowhead_crowfoot_many"),icon:(0,e.jsx)(F.Ge,{flip:a}),keyBinding:"x"},{value:"crowfoot_one_or_many",text:c8("labels.arrowhead_crowfoot_one_or_many"),icon:(0,e.jsx)(F.Ie,{flip:a}),keyBinding:"v"}]);(0,F.$c)({name:"changeArrowhead",label:"Change arrowheads",trackEvent:!1,perform:(a,b,c)=>({elements:el(a,b,a=>{if((0,F.cc)(a)){let{position:b,type:d}=c;if("start"===b)return(0,F.Qj)(a,{startArrowhead:d});if("end"===b)return(0,F.Qj)(a,{endArrowhead:d})}return a}),appState:{...b,["start"===c.position?"currentItemStartArrowhead":"currentItemEndArrowhead"]:c.type},captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c})=>{let d=c4.rtl;return(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.arrowheads")}),(0,e.jsxs)("div",{className:"iconSelectList buttonList",children:[(0,e.jsx)(d3,{label:"arrowhead_start",options:eq(!d),value:em(a,b,a=>(0,F.cc)(a)&&(0,F.$i)(a.type)?a.startArrowhead:b.currentItemStartArrowhead,!0,b.currentItemStartArrowhead),onChange:a=>c({position:"start",type:a}),numberOfOptionsToAlwaysShow:4}),(0,e.jsx)(d3,{label:"arrowhead_end",group:"arrowheads",options:eq(!!d),value:em(a,b,a=>(0,F.cc)(a)&&(0,F.$i)(a.type)?a.endArrowhead:b.currentItemEndArrowhead,!0,b.currentItemEndArrowhead),onChange:a=>c({position:"end",type:a}),numberOfOptionsToAlwaysShow:4})]})]})}}),(0,F.$c)({name:"changeArrowType",label:"Change arrow types",trackEvent:!1,perform:(a,b,c,d)=>{let e=el(a,b,e=>{if(!(0,F.dc)(e))return e;let f=(0,F.Qj)(e,{roundness:c===F.Fa.round?{type:F.ua.PROPORTIONAL_RADIUS}:null,elbowed:c===F.Fa.elbow,points:c===F.Fa.elbow||e.elbowed?[e.points[0],e.points[e.points.length-1]]:e.points});if((0,F.ec)(f)){let c=d.scene.getNonDeletedElementsMap();d.dismissLinearEditor();let e=F.pj.getPointAtIndexGlobalCoordinates(f,0,c),g=F.pj.getPointAtIndexGlobalCoordinates(f,-1,c),h=!f.startBinding&&(0,F.Og)((0,F.ob)(e),a,c,b.zoom,!1,!0),i=!f.endBinding&&(0,F.Og)((0,F.ob)(g),a,c,b.zoom,!1,!0),j=h||f.startBinding&&c.get(f.startBinding.elementId),k=i||f.endBinding&&c.get(f.endBinding.elementId),l=h?(0,F.Qg)(f,h,"start"):e,m=i?(0,F.Qg)(f,i,"end"):g;h&&(0,F.Mg)(f,h,"start",c),i&&(0,F.Mg)(f,i,"end",c),(0,F.Pj)(f,{points:[l,m].map(a=>(0,F.Ua)(a[0]-f.x,a[1]-f.y)),...j&&f.startBinding?{startBinding:{...f.startBinding,...(0,F.Rg)(f,j,"start",c)}}:{},...k&&f.endBinding?{endBinding:{...f.endBinding,...(0,F.Rg)(f,k,"end",c)}}:{}}),F.pj.updateEditorMidPointsCache(f,c,d.state)}return f}),f={...b,currentItemArrowType:c},g=b.selectedLinearElement?.elementId;if(g){let a=e.find(a=>a.id===g);a&&(f.selectedLinearElement=new F.pj(a))}return{elements:e,appState:f,captureUpdate:F.Wg.IMMEDIATELY}},PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.arrowtypes")}),(0,e.jsx)(dy,{group:"arrowtypes",options:[{value:F.Fa.sharp,text:c8("labels.arrowtype_sharp"),icon:F.If,testId:"sharp-arrow"},{value:F.Fa.round,text:c8("labels.arrowtype_round"),icon:F.Kf,testId:"round-arrow"},{value:F.Fa.elbow,text:c8("labels.arrowtype_elbowed"),icon:F.Jf,testId:"elbow-arrow"}],value:em(a,b,a=>(0,F.dc)(a)?a.elbowed?F.Fa.elbow:a.roundness?F.Fa.round:F.Fa.sharp:null,a=>(0,F.dc)(a),a=>a?null:b.currentItemArrowType),onChange:a=>c(a)})]})});var er=({viewportX:a,viewportY:b,nextZoom:c},d)=>{let e=a-d.offsetLeft,f=b-d.offsetTop,g=d.zoom.value;return{scrollX:d.scrollX+(e-e/g)+-(e-e/c),scrollY:d.scrollY+(f-f/g)+-(f-f/c),zoom:{value:c}}},es=()=>{let a=document.querySelector(".excalidraw-tooltip");if(a)return a;let b=document.createElement("div");return document.body.appendChild(b),b.classList.add("excalidraw-tooltip"),b},et=(a,b,c="bottom")=>{let d,e=a.getBoundingClientRect(),f=window.innerWidth,g=window.innerHeight,h=b.left+b.width/2-e.width/2;h<0?h=5:h+e.width>=f&&(h=f-e.width-5),"bottom"===c?(d=b.top+b.height+5)+e.height>=g&&(d=b.top-e.height-5):(d=b.top-e.height-5)<0&&(d=b.top+b.height+5),Object.assign(a.style,{top:`${d}px`,left:`${h}px`})},eu=({children:a,label:b,long:c=!1,style:d,disabled:f})=>((0,L.useEffect)(()=>()=>es().classList.remove("excalidraw-tooltip--visible"),[]),f?null:(0,e.jsx)("div",{className:"excalidraw-tooltip-wrapper",onPointerEnter:a=>{var d,e;return d=a.currentTarget,e=es(),void(e.classList.add("excalidraw-tooltip--visible"),e.style.minWidth=c?"50ch":"10ch",e.style.maxWidth=c?"50ch":"15ch",e.textContent=b,et(e,d.getBoundingClientRect()))},onPointerLeave:()=>es().classList.remove("excalidraw-tooltip--visible"),style:d,children:a}));(0,F.$c)({name:"changeViewBackgroundColor",label:"labels.canvasBackground",paletteName:"Change canvas background color",trackEvent:!1,predicate:(a,b,c,d)=>!!d.props.UIOptions.canvasActions.changeViewBackgroundColor&&!b.viewModeEnabled,perform:(a,b,c)=>({appState:{...b,...c},captureUpdate:c.viewBackgroundColor?F.Wg.IMMEDIATELY:F.Wg.EVENTUALLY}),PanelComponent:({elements:a,appState:b,updateData:c,appProps:d})=>(0,e.jsx)(d$,{palette:null,topPicks:F.h,label:c8("labels.canvasBackground"),type:"canvasBackground",color:b.viewBackgroundColor,onChange:a=>c({viewBackgroundColor:a}),"data-testid":"canvas-background-picker",elements:a,appState:b,updateData:c})});var ev=(0,F.$c)({name:"clearCanvas",label:"labels.clearCanvas",paletteName:"Clear canvas",icon:F.ud,trackEvent:{category:"canvas"},predicate:(a,b,c,d)=>!!d.props.UIOptions.canvasActions.clearCanvas&&!b.viewModeEnabled&&b.openDialog?.name!=="elementLinkSelector",perform:(a,b,c,d)=>(d.imageCache.clear(),{elements:a.map(a=>(0,F.Qj)(a,{isDeleted:!0})),appState:{...(0,F.Fc)(),files:{},theme:b.theme,penMode:b.penMode,penDetected:b.penDetected,exportBackground:b.exportBackground,exportEmbedScene:b.exportEmbedScene,gridSize:b.gridSize,gridStep:b.gridStep,gridModeEnabled:b.gridModeEnabled,stats:b.stats,pasteDialog:b.pasteDialog,activeTool:"image"===b.activeTool.type?{...b.activeTool,type:"selection"}:b.activeTool},captureUpdate:F.Wg.IMMEDIATELY})}),ew=(0,F.$c)({name:"zoomIn",label:"buttons.zoomIn",viewMode:!0,icon:F.rd,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>({appState:{...b,...er({viewportX:b.width/2+b.offsetLeft,viewportY:b.height/2+b.offsetTop,nextZoom:(0,F.Ak)(b.zoom.value+F.$)},b),userToFollow:null},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)(de,{type:"button",className:"zoom-in-button zoom-button",icon:F.rd,title:`${c8("buttons.zoomIn")} \u2014 ${(0,F.kb)("CtrlOrCmd++")}`,"aria-label":c8("buttons.zoomIn"),disabled:b.zoom.value>=F.ba,onClick:()=>{a(null)}}),keyTest:a=>(a.code===F.gg.EQUAL||a.code===F.gg.NUM_ADD)&&(a[F.hg.CTRL_OR_CMD]||a.shiftKey)}),ex=(0,F.$c)({name:"zoomOut",label:"buttons.zoomOut",icon:F.sd,viewMode:!0,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>({appState:{...b,...er({viewportX:b.width/2+b.offsetLeft,viewportY:b.height/2+b.offsetTop,nextZoom:(0,F.Ak)(b.zoom.value-F.$)},b),userToFollow:null},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)(de,{type:"button",className:"zoom-out-button zoom-button",icon:F.sd,title:`${c8("buttons.zoomOut")} \u2014 ${(0,F.kb)("CtrlOrCmd+-")}`,"aria-label":c8("buttons.zoomOut"),disabled:b.zoom.value<=F.aa,onClick:()=>{a(null)}}),keyTest:a=>(a.code===F.gg.MINUS||a.code===F.gg.NUM_SUBTRACT)&&(a[F.hg.CTRL_OR_CMD]||a.shiftKey)}),ey=(0,F.$c)({name:"resetZoom",label:"buttons.resetZoom",icon:F.td,viewMode:!0,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>({appState:{...b,...er({viewportX:b.width/2+b.offsetLeft,viewportY:b.height/2+b.offsetTop,nextZoom:(0,F.Ak)(1)},b),userToFollow:null},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({updateData:a,appState:b})=>(0,e.jsx)(eu,{label:c8("buttons.resetZoom"),style:{height:"100%"},children:(0,e.jsxs)(de,{type:"button",className:"reset-zoom-button zoom-button",title:c8("buttons.resetZoom"),"aria-label":c8("buttons.resetZoom"),onClick:()=>{a(null)},children:[(100*b.zoom.value).toFixed(0),"%"]})}),keyTest:a=>(a.code===F.gg.ZERO||a.code===F.gg.NUM_ZERO)&&(a[F.hg.CTRL_OR_CMD]||a.shiftKey)}),ez=({canvasOffsets:a,targetElements:b,appState:c,fitToViewport:d,viewportZoomFactor:e,minZoom:f,maxZoom:g})=>(({bounds:a,appState:b,canvasOffsets:c,fitToViewport:d=!1,viewportZoomFactor:e=1,minZoom:f=-1/0,maxZoom:g=1/0})=>{e=(0,F.Ia)(e,F.aa,F.ba);let[h,i,j,k]=a,l=c?.left??0,m=c?.top??0,n=c?.right??0,o=c?.bottom??0,p=b.width-l-n,q=b.height-m-o,r;r=d?Math.min(p/(j-h),q/(k-i))*e:((a,b,c=1)=>{let[d,e,f,g]=a;return Math.min(Math.min(b.width/(f-d),b.height/(g-e))*(0,F.Ia)(c,.1,1),1)})(a,{width:p,height:q},e);let s=(0,F.Ak)((0,F.Ia)((0,F.Ka)(r,F.$,"floor"),f,g)),t=(0,F.yk)({scenePoint:{x:(h+j)/2,y:(i+k)/2},viewportDimensions:{width:b.width,height:b.height},offsets:c,zoom:{value:s}});return{appState:{...b,scrollX:t.scrollX,scrollY:t.scrollY,zoom:{value:s}},captureUpdate:F.Wg.EVENTUALLY}})({canvasOffsets:a,bounds:(0,F.bj)((0,F.pk)(b)),appState:c,fitToViewport:d,viewportZoomFactor:e,minZoom:f,maxZoom:g}),eA=((0,F.$c)({name:"zoomToFitSelectionInViewport",label:"labels.zoomToFitViewport",icon:F.zf,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);return ez({targetElements:e.length?e:a,appState:{...b,userToFollow:null},fitToViewport:!1,canvasOffsets:d.getEditorUIOffsets()})},keyTest:a=>a.code===F.gg.TWO&&a.shiftKey&&!a.altKey&&!a[F.hg.CTRL_OR_CMD]}),(0,F.$c)({name:"zoomToFitSelection",label:"helpDialog.zoomToSelection",icon:F.zf,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);return ez({targetElements:e.length?e:a,appState:{...b,userToFollow:null},fitToViewport:!0,canvasOffsets:d.getEditorUIOffsets()})},keyTest:a=>a.code===F.gg.THREE&&a.shiftKey&&!a.altKey&&!a[F.hg.CTRL_OR_CMD]}),(0,F.$c)({name:"zoomToFit",label:"helpDialog.zoomToFit",icon:F.zf,viewMode:!0,trackEvent:{category:"canvas"},perform:(a,b,c,d)=>ez({targetElements:a,appState:{...b,userToFollow:null},fitToViewport:!1,canvasOffsets:d.getEditorUIOffsets()}),keyTest:a=>a.code===F.gg.ONE&&a.shiftKey&&!a.altKey&&!a[F.hg.CTRL_OR_CMD]}),(0,F.$c)({name:"toggleTheme",label:(a,b)=>b.theme===F.G.DARK?"buttons.lightMode":"buttons.darkMode",keywords:["toggle","dark","light","mode","theme"],icon:a=>a.theme===F.G.LIGHT?F.xd:F.yd,viewMode:!0,trackEvent:{category:"canvas"},perform:(a,b,c)=>({appState:{...b,theme:c||(b.theme===F.G.LIGHT?F.G.DARK:F.G.LIGHT)},captureUpdate:F.Wg.EVENTUALLY}),keyTest:a=>a.altKey&&a.shiftKey&&a.code===F.gg.D,predicate:(a,b,c,d)=>!!d.props.UIOptions.canvasActions.toggleTheme})),eB=((0,F.$c)({name:"toggleEraserTool",label:"toolBar.eraser",trackEvent:{category:"toolbar"},perform:(a,b)=>{let c;return c=(0,F.Gc)(b)?(0,F.jb)(b,{...b.activeTool.lastActiveTool||{type:"selection"},lastActiveToolBeforeEraser:null}):(0,F.jb)(b,{type:"eraser",lastActiveToolBeforeEraser:b.activeTool}),{appState:{...b,selectedElementIds:{},selectedGroupIds:{},activeEmbeddable:null,activeTool:c},captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>a.key===F.hg.E}),(0,F.$c)({name:"toggleHandTool",label:"toolBar.hand",paletteName:"Toggle hand tool",trackEvent:{category:"toolbar"},icon:F.Ye,viewMode:!1,perform:(a,b,c,d)=>{let e;return(0,F.Hc)(b)?e=(0,F.jb)(b,{...b.activeTool.lastActiveTool||{type:"selection"},lastActiveToolBeforeEraser:null}):(e=(0,F.jb)(b,{type:"hand",lastActiveToolBeforeEraser:b.activeTool}),(0,F.bd)(d.interactiveCanvas,F.z.GRAB)),{appState:{...b,selectedElementIds:{},selectedGroupIds:{},activeEmbeddable:null,activeTool:e},captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>!a.altKey&&!a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.H})),eC=(0,F.$c)({name:"finalize",label:"",trackEvent:!1,perform:(a,b,c,d)=>{let e,{interactiveCanvas:f,focusContainer:g,scene:h}=d,i=h.getNonDeletedElementsMap();if(b.editingLinearElement){let{elementId:c,startBindingElement:d,endBindingElement:e}=b.editingLinearElement,f=F.pj.getElement(c,i);if(f)return(0,F.gc)(f)&&(0,F.Ig)(f,d,e,i,h),{elements:f.points.length<2||(0,F.Sj)(f)?a.filter(a=>a.id!==f.id):void 0,appState:{...b,cursorButton:"up",editingLinearElement:null},captureUpdate:F.Wg.IMMEDIATELY}}let j=a,k=b.pendingImageElementId&&h.getElement(b.pendingImageElementId);k&&(0,F.Pj)(k,{isDeleted:!0},!1),window.document.activeElement instanceof HTMLElement&&g();let l=b.multiElement?b.multiElement:b.newElement?.type==="freedraw"?b.newElement:null;if(l){if("freedraw"!==l.type&&"touch"!==b.lastPointerDownWith){let{points:a,lastCommittedPoint:b}=l;b&&a[a.length-1]===b||(0,F.Pj)(l,{points:l.points.slice(0,-1)})}(0,F.Sj)(l)&&(j=j.filter(a=>a.id!==l.id));let c=(0,F.xg)(l.points,b.zoom.value);if(("line"===l.type||"freedraw"===l.type)&&c){let a=l.points,b=a[0];(0,F.Pj)(l,{points:a.map((c,d)=>d===a.length-1?(0,F.Ua)(b[0],b[1]):c)})}if((0,F.gc)(l)&&!c&&l.points.length>1){let[c,d]=F.pj.getPointAtIndexGlobalCoordinates(l,-1,(0,F.xb)(a));(0,F.Lg)(l,b,{x:c,y:d},i,a)}}return(b.activeTool.locked||"freedraw"===b.activeTool.type)&&l||(0,F.ad)(f),e="eraser"===b.activeTool.type?(0,F.jb)(b,{...b.activeTool.lastActiveTool||{type:"selection"},lastActiveToolBeforeEraser:null}):(0,F.jb)(b,{type:"selection"}),{elements:j,appState:{...b,cursorButton:"up",activeTool:(b.activeTool.locked||"freedraw"===b.activeTool.type)&&l?b.activeTool:e,activeEmbeddable:null,newElement:null,selectionElement:null,multiElement:null,editingTextElement:null,startBoundElement:null,suggestedBindings:[],selectedElementIds:l&&!b.activeTool.locked&&"freedraw"!==b.activeTool.type?{...b.selectedElementIds,[l.id]:!0}:b.selectedElementIds,selectedLinearElement:l&&(0,F.cc)(l)?new F.pj(l):b.selectedLinearElement,pendingImageElementId:null},captureUpdate:F.Wg.IMMEDIATELY}},keyTest:(a,b)=>a.key===F.hg.ESCAPE&&(null!==b.editingLinearElement||!b.newElement&&null===b.multiElement)||(a.key===F.hg.ESCAPE||a.key===F.hg.ENTER)&&null!==b.multiElement,PanelComponent:({appState:a,updateData:b,data:c})=>(0,e.jsx)(de,{type:"button",icon:F.Qd,title:c8("buttons.done"),"aria-label":c8("buttons.done"),onClick:b,visible:null!=a.multiElement,size:c?.size||"medium",style:{pointerEvents:"all"}})}),eD=a=>{let{id:b}=kc(),[c,d]=(0,L.useState)(a.value);return(0,e.jsxs)("div",{className:"ProjectName",children:[(0,e.jsx)("label",{className:"ProjectName-label",htmlFor:"filename",children:`${a.label}:`}),(0,e.jsx)("input",{type:"text",className:"TextInput",onBlur:b=>{a.ignoreFocus||(0,F.vb)(b.target);let c=b.target.value;c!==a.value&&a.onChange(c)},onKeyDown:a=>{a.key===F.hg.ENTER&&(a.preventDefault(),a.nativeEvent.isComposing||229===a.keyCode||a.currentTarget.blur())},id:`${b}-filename`,value:c,onChange:a=>d(a.target.value)})]})},eE=a=>{let b=a.title||(a.value===F.G.DARK?c8("buttons.lightMode"):c8("buttons.darkMode"));return(0,e.jsx)(de,{type:"icon",icon:a.value===F.G.LIGHT?eF.MOON:eF.SUN,title:b,"aria-label":b,onClick:()=>a.onChange(a.value===F.G.DARK?F.G.LIGHT:F.G.DARK),"data-testid":"toggle-dark-mode"})},eF={SUN:(0,e.jsx)("svg",{width:"512",height:"512",className:"rtl-mirror",viewBox:"0 0 512 512",children:(0,e.jsx)("path",{fill:"currentColor",d:"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"})}),MOON:(0,e.jsx)("svg",{width:"512",height:"512",className:"rtl-mirror",viewBox:"0 0 512 512",children:(0,e.jsx)("path",{fill:"currentColor",d:"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"})})},eG=(a,{selectedElementIds:b},c)=>{a=(0,F.pk)(a);let d=c&&(0,F.tk)(a,{selectedElementIds:b}),e=null,f=d?(0,F.vk)(a,{selectedElementIds:b},{includeBoundTextElement:!0}):a;return d&&(1===f.length&&(0,F.bc)(f[0])?(e=f[0],f=(0,F.Pi)(a,e)):f.length>1&&(f=(0,F.vk)(a,{selectedElementIds:b},{includeBoundTextElement:!0,includeElementsInFrames:!0}))),{exportingFrame:e,exportedElements:(0,F.Nb)(f)}},eH=async(b,c,d,e,{exportBackground:f,exportPadding:g=F.ma,viewBackgroundColor:h,name:i=d.name||F.Ca,fileHandle:j=null,exportingFrame:k=null})=>{if(0===c.length)throw Error(c8("alerts.cannotExportEmptyCanvas"));if("svg"===b||"clipboard-svg"===b){let a=(0,F.ei)(c,{exportBackground:f,exportWithDarkMode:d.exportWithDarkMode,viewBackgroundColor:h,exportPadding:g,exportScale:d.exportScale,exportEmbedScene:d.exportEmbedScene&&"svg"===b},e,{exportingFrame:k});if("svg"===b)return(0,F.gh)(a.then(a=>new Blob([a.outerHTML],{type:F.T.svg})),{description:"Export to SVG",name:i,extension:d.exportEmbedScene?"excalidraw.svg":"svg",mimeTypes:[F.S.svg],fileHandle:j});if("clipboard-svg"===b){let b=await a.then(a=>a.outerHTML);try{await (0,F.oi)(b)}catch{throw Error(c8("errors.copyToSystemClipboardFailed"))}return}}let l=(0,F.di)(c,d,e,{exportBackground:f,viewBackgroundColor:h,exportPadding:g,exportingFrame:k});if("png"===b){let b=(0,F.yh)(l);return d.exportEmbedScene&&(b=b.then(b=>a.A(965128).then(({encodePngMetadata:a})=>a({blob:b,metadata:(0,F.Jh)(c,d,e,"local")})))),(0,F.gh)(b,{description:"Export to PNG",name:i,extension:d.exportEmbedScene?"excalidraw.png":"png",mimeTypes:[F.S.png],fileHandle:j})}if("clipboard"===b)try{let a=(0,F.yh)(l);await (0,F.ni)(a)}catch(a){throw console.warn(a),"CANVAS_POSSIBLY_TOO_BIG"===a.name?Error(c8("canvasError.canvasTooBig")):F.n&&"TypeError"===a.name?Error(`${c8("alerts.couldNotCopyToClipboard")}
3
-
4
- ${c8("hints.firefox_clipboard_write")}`):Error(c8("alerts.couldNotCopyToClipboard"))}else throw Error("Unsupported export type")},eI=async(a,b,c,d)=>{let{exportBackground:e,viewBackgroundColor:f,fileHandle:g}=b,h=(0,F.qh)(g);if(!g||!(0,F.rh)(h))throw Error("fileHandle should exist and should be of type svg or png when resaving");let{exportedElements:i,exportingFrame:j}=eG(a,b={...b,exportEmbedScene:!0},!1);return await eH(h,i,b,c,{exportBackground:e,viewBackgroundColor:f,name:d,fileHandle:g,exportingFrame:j}),{fileHandle:g}},eJ=({children:a,checked:b,onChange:c,className:d})=>(0,e.jsxs)("div",{className:(0,av.default)("Checkbox",d,{"is-checked":b}),onClick:a=>{c(!b,a),a.currentTarget.querySelector(".Checkbox-box").focus()},children:[(0,e.jsx)("button",{type:"button",className:"Checkbox-box",role:"checkbox","aria-checked":b,children:F.Hd}),(0,e.jsx)("div",{className:"Checkbox-label",children:a})]}),eK=(0,F.$c)({name:"changeProjectName",label:"labels.fileTitle",trackEvent:!1,perform:(a,b,c)=>({appState:{...b,name:c},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({appState:a,updateData:b,appProps:c,data:d,app:f})=>(0,e.jsx)(eD,{label:c8("labels.fileTitle"),value:f.getName(),onChange:a=>b(a),ignoreFocus:d?.ignoreFocus??!1})}),eL=(0,F.$c)({name:"changeExportScale",label:"imageExportDialog.scale",trackEvent:{category:"export",action:"scale"},perform:(a,b,c)=>({appState:{...b,exportScale:c},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({elements:a,appState:b,updateData:c})=>{let d=(0,F.pk)(a),f=(0,F.tk)(d,b)?(0,F.vk)(d,b):d;return(0,e.jsx)(e.Fragment,{children:F.la.map(a=>{let[d,g]=(0,F.fi)(f,F.ma,a),h=`${c8("imageExportDialog.label.scale")} ${a}x (${d}x${g})`;return(0,e.jsx)(de,{size:"small",type:"radio",icon:`${a}x`,name:"export-canvas-scale",title:h,"aria-label":h,id:"export-canvas-scale",checked:a===b.exportScale,onChange:()=>c(a)},a)})})}}),eM=(0,F.$c)({name:"changeExportBackground",label:"imageExportDialog.label.withBackground",trackEvent:{category:"export",action:"toggleBackground"},perform:(a,b,c)=>({appState:{...b,exportBackground:c},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({appState:a,updateData:b})=>(0,e.jsx)(eJ,{checked:a.exportBackground,onChange:a=>b(a),children:c8("imageExportDialog.label.withBackground")})}),eN=(0,F.$c)({name:"changeExportEmbedScene",label:"imageExportDialog.tooltip.embedScene",trackEvent:{category:"export",action:"embedScene"},perform:(a,b,c)=>({appState:{...b,exportEmbedScene:c},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({appState:a,updateData:b})=>(0,e.jsxs)(eJ,{checked:a.exportEmbedScene,onChange:a=>b(a),children:[c8("imageExportDialog.label.embedScene"),(0,e.jsx)(eu,{label:c8("imageExportDialog.tooltip.embedScene"),long:!0,children:(0,e.jsx)("div",{className:"excalidraw-tooltip-icon",children:F.Td})})]})}),eO=(0,F.$c)({name:"saveToActiveFile",label:"buttons.save",icon:F.Ad,trackEvent:{category:"export"},predicate:(a,b,c,d)=>!!d.props.UIOptions.canvasActions.saveToActiveFile&&!!b.fileHandle&&!b.viewModeEnabled,perform:async(a,b,c,d)=>{let e=!!b.fileHandle;try{let{fileHandle:c}=(0,F.sh)(b.fileHandle)?await eI(a,b,d.files,d.getName()):await (0,F.Kh)(a,b,d.files,d.getName());return{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,fileHandle:c,toast:e?{message:c?.name?c8("toast.fileSavedToFilename").replace("{filename}",`"${c.name}"`):c8("toast.fileSaved")}:null}}}catch(a){return a?.name!=="AbortError"?console.error(a):console.warn(a),{captureUpdate:F.Wg.EVENTUALLY}}},keyTest:a=>a.key===F.hg.S&&a[F.hg.CTRL_OR_CMD]&&!a.shiftKey}),eP=(0,F.$c)({name:"saveFileToDisk",label:"exportDialog.disk_title",icon:F.Ad,viewMode:!0,trackEvent:{category:"export"},perform:async(a,b,c,d)=>{try{let{fileHandle:c}=await (0,F.Kh)(a,{...b,fileHandle:null},d.files,d.getName());return{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,openDialog:null,fileHandle:c,toast:{message:c8("toast.fileSaved")}}}}catch(a){return a?.name!=="AbortError"?console.error(a):console.warn(a),{captureUpdate:F.Wg.EVENTUALLY}}},keyTest:a=>a.key===F.hg.S&&a.shiftKey&&a[F.hg.CTRL_OR_CMD],PanelComponent:({updateData:a})=>(0,e.jsx)(de,{type:"button",icon:F.Kd,title:c8("buttons.saveAs"),"aria-label":c8("buttons.saveAs"),showAriaLabel:kb().editor.isMobile,hidden:!G.supported,onClick:()=>a(null),"data-testid":"save-as-button"})}),eQ=(0,F.$c)({name:"loadScene",label:"buttons.load",trackEvent:{category:"export"},predicate:(a,b,c,d)=>!!d.props.UIOptions.canvasActions.loadScene&&!b.viewModeEnabled,perform:async(a,b,c,d)=>{try{let{elements:c,appState:d,files:e}=await (0,F.Lh)(b,a);return{elements:c,appState:d,files:e,captureUpdate:F.Wg.IMMEDIATELY}}catch(c){return c?.name==="AbortError"?(console.warn(c),!1):{elements:a,appState:{...b,errorMessage:c.message},files:d.files,captureUpdate:F.Wg.EVENTUALLY}}},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.O}),eR=(0,F.$c)({name:"exportWithDarkMode",label:"imageExportDialog.label.darkMode",trackEvent:{category:"export",action:"toggleTheme"},perform:(a,b,c)=>({appState:{...b,exportWithDarkMode:c},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({appState:a,updateData:b})=>(0,e.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:"-45px",marginBottom:"10px"},children:(0,e.jsx)(eE,{value:a.exportWithDarkMode?F.G.DARK:F.G.LIGHT,onChange:a=>{b(a===F.G.DARK)},title:c8("imageExportDialog.label.darkMode")})})}),eS="{}",eT=(0,F.$c)({name:"copyStyles",label:"labels.copyStyles",icon:F.yf,trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=[],f=a.find(a=>b.selectedElementIds[a.id]);if(e.push(f),f&&(0,F.mc)(f)){let a=(0,F.zj)(f,d.scene.getNonDeletedElementsMap());e.push(a)}return f&&(eS=JSON.stringify(e)),{appState:{...b,toast:{message:c8("toast.copyStyles")}},captureUpdate:F.Wg.EVENTUALLY}},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.C}),eU=(0,F.$c)({name:"pasteStyles",label:"labels.pasteStyles",icon:F.yf,trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=JSON.parse(eS),f=e[0],g=e[1];if(!(0,F.kc)(f))return{elements:a,captureUpdate:F.Wg.EVENTUALLY};let h=(0,F.vk)(a,b,{includeBoundTextElement:!0}),i=h.map(a=>a.id);return{elements:a.map(a=>{if(i.includes(a.id)){let b=f;if((0,F._b)(a)&&a.containerId&&(b=g),!b)return a;let c=(0,F.Qj)(a,{backgroundColor:b?.backgroundColor,strokeWidth:b?.strokeWidth,strokeColor:b?.strokeColor,strokeStyle:b?.strokeStyle,fillStyle:b?.fillStyle,opacity:b?.opacity,roughness:b?.roughness,roundness:b.roundness?(0,F.pc)(b.roundness.type,a)?b.roundness:(0,F.qc)(a):null});if((0,F._b)(c)){let a=b.fontSize||F.I,e=b.fontFamily||F.J;c=(0,F.Qj)(c,{fontSize:a,fontFamily:e,textAlign:b.textAlign||F.K,lineHeight:b.lineHeight||(0,F.Rf)(e)});let f=null;c.containerId&&(f=h.find(a=>(0,F._b)(c)&&a.id===c.containerId)||null),(0,F.uj)(c,f,d.scene.getNonDeletedElementsMap())}return"arrow"===c.type&&(0,F.dc)(b)&&(c=(0,F.Qj)(c,{startArrowhead:b.startArrowhead,endArrowhead:b.endArrowhead})),(0,F.bc)(a)&&(c=(0,F.Qj)(c,{roundness:null,backgroundColor:"transparent"})),c}return a}),captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.V});(0,F.$c)({name:"toggleCanvasMenu",label:"buttons.menu",trackEvent:{category:"menu"},perform:(a,b)=>({appState:{...b,openMenu:"canvas"===b.openMenu?null:"canvas"},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({appState:a,updateData:b})=>(0,e.jsx)(de,{type:"button",icon:F.zd,"aria-label":c8("buttons.menu"),onClick:b,selected:"canvas"===a.openMenu})}),(0,F.$c)({name:"toggleEditMenu",label:"buttons.edit",trackEvent:{category:"menu"},perform:(a,b)=>({appState:{...b,openMenu:"shape"===b.openMenu?null:"shape"},captureUpdate:F.Wg.EVENTUALLY}),PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsx)(de,{visible:(0,F.lk)(b,(0,F.pk)(a)),type:"button",icon:F.Md,"aria-label":c8("buttons.edit"),onClick:c,selected:"shape"===b.openMenu})});var eV=(0,F.$c)({name:"toggleShortcuts",label:"welcomeScreen.defaults.helpHint",icon:F.Cd,viewMode:!0,trackEvent:{category:"menu",action:"toggleHelpDialog"},perform:(a,b,c,{focusContainer:d})=>(b.openDialog?.name==="help"&&d(),{appState:{...b,openDialog:b.openDialog?.name==="help"?null:{name:"help"}},captureUpdate:F.Wg.EVENTUALLY}),keyTest:a=>a.key===F.hg.QUESTION_MARK}),eW=(a,b,c)=>{let d=c.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0});return d.length>=2&&!(a=>{if(a.length>=2){for(let b of a[0].groupIds)if(a.reduce((a,c)=>a&&(0,F.Pc)(c,b),!0))return!0}return!1})(d)&&!(0,F.Qi)(d)},eX=(0,F.$c)({name:"group",label:"labels.group",icon:a=>(0,e.jsx)(F.he,{theme:a.theme}),trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=(0,F.Di)(d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0}));if(e.length<2)return{appState:b,elements:a,captureUpdate:F.Wg.EVENTUALLY};let f=(0,F.Mc)(b);if(1===f.length){let c=f[0],d=new Set((0,F.Qc)(a,c).map(a=>a.id)),g=new Set(e.map(a=>a.id));if(new Set([...Array.from(d),...Array.from(g)]).size===d.size)return{appState:b,elements:a,captureUpdate:F.Wg.EVENTUALLY}}let g=[...a];new Set(e.map(a=>a.frameId)).size>1&&(0,F.Ai)(e).forEach((a,b)=>{(0,F.Ji)(a,d.scene.getNonDeletedElementsMap())});let h=(0,F.sc)(),i=(0,F.xb)(e);g=g.map(a=>i.get(a.id)?(0,F.Qj)(a,{groupIds:(0,F.Sc)(a.groupIds,h,b.editingGroupId)}):a);let j=(0,F.Qc)(g,h),k=j[j.length-1],l=g.lastIndexOf(k),m=g.slice(l+1),n=g.slice(0,l).filter(a=>!(0,F.Pc)(a,h)),o=(0,F.Mj)([...n,...j,...m],(0,F.xb)(j));return{appState:{...b,...(0,F.Ic)(h,{...b,selectedGroupIds:{}},(0,F.pk)(g))},elements:o,captureUpdate:F.Wg.IMMEDIATELY}},predicate:(a,b,c,d)=>eW(a,b,d),keyTest:a=>!a.shiftKey&&a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.G,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!eW(a,b,d),type:"button",icon:(0,e.jsx)(F.he,{theme:b.theme}),onClick:()=>c(null),title:`${c8("labels.group")} \u2014 ${(0,F.kb)("CtrlOrCmd+G")}`,"aria-label":c8("labels.group"),visible:(0,F.tk)((0,F.pk)(a),b)})}),eY=(0,F.$c)({name:"ungroup",label:"labels.ungroup",icon:a=>(0,e.jsx)(F.ie,{theme:a.theme}),trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=(0,F.Mc)(b),f=(0,F.xb)(a);if(0===e.length)return{appState:b,elements:a,captureUpdate:F.Wg.EVENTUALLY};let g=[...a],h=[];g=g.map(a=>{(0,F.nc)(a)&&h.push(a.id);let c=(0,F.Tc)(a.groupIds,b.selectedGroupIds);return c.length===a.groupIds.length?a:(0,F.Qj)(a,{groupIds:c})});let i=(0,F.Jc)(b,(0,F.pk)(g),b,null),j=new Set(d.scene.getSelectedElements(b).filter(a=>a.frameId).map(a=>a.frameId));return(0,F.Ci)(a).filter(a=>j.has(a.id)).forEach(a=>{a&&(g=(0,F.Li)(g,(0,F.Ei)(g,a,b,f),a,d))}),i.selectedElementIds=Object.entries(i.selectedElementIds).reduce((a,[b,c])=>(c&&!h.includes(b)&&(a[b]=!0),a),{}),{appState:{...b,...i},elements:g,captureUpdate:F.Wg.IMMEDIATELY}},keyTest:a=>a.shiftKey&&a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.G.toUpperCase(),predicate:(a,b)=>(0,F.Mc)(b).length>0,PanelComponent:({elements:a,appState:b,updateData:c})=>(0,e.jsx)(de,{type:"button",hidden:0===(0,F.Mc)(b).length,icon:(0,e.jsx)(F.ie,{theme:b.theme}),onClick:()=>c(null),title:`${c8("labels.ungroup")} \u2014 ${(0,F.kb)("CtrlOrCmd+Shift+G")}`,"aria-label":c8("labels.ungroup"),visible:(0,F.tk)((0,F.pk)(a),b)})}),eZ=(a,b,c,d,e,f,g)=>{a.beginPath(),a.moveTo(b+f,c),a.lineTo(b+d-f,c),a.quadraticCurveTo(b+d,c,b+d,c+f),a.lineTo(b+d,c+e-f),a.quadraticCurveTo(b+d,c+e,b+d-f,c+e),a.lineTo(b+f,c+e),a.quadraticCurveTo(b,c+e,b,c+e-f),a.lineTo(b,c+f),a.quadraticCurveTo(b,c,b+f,c),a.closePath(),a.fill(),g&&(a.strokeStyle=g),a.stroke()},e$=(a,b)=>`hsl(${Math.abs(function(a){let b=0;if(0===a.length)return b;for(let c=0;c<a.length;c++)b=(b<<5)-b+a.charCodeAt(c);return b}(b?.id||a))%37*10}, 100%, 83%)`,e_=({color:a,onClick:b,name:c,src:d,className:f})=>{let g,h=((g=c?.trim()?.codePointAt(0))?String.fromCodePoint(g):"?").toUpperCase(),[i,j]=(0,L.useState)(!1),k=!i&&d;return(0,e.jsx)("div",{className:(0,av.default)("Avatar",f),style:k?void 0:{background:a},onClick:b,children:k?(0,e.jsx)("img",{className:"Avatar-img",src:d,alt:h,referrerPolicy:"no-referrer",onError:()=>j(!0)}):h})};(0,F.$c)({name:"goToCollaborator",label:"Go to a collaborator",viewMode:!0,trackEvent:{category:"collab"},perform:(a,b,c)=>!c.socketId||b.userToFollow?.socketId===c.socketId||c.isCurrentUser?{appState:{...b,userToFollow:null},captureUpdate:F.Wg.EVENTUALLY}:{appState:{...b,userToFollow:{socketId:c.socketId,username:c.username||""},openMenu:"canvas"===b.openMenu?null:b.openMenu},captureUpdate:F.Wg.EVENTUALLY},PanelComponent:({updateData:a,data:b,appState:c})=>{let{socketId:d,collaborator:f,withName:g,isBeingFollowed:h}=b,i=e$(d,f),j=(0,av.default)({"is-followed":h,"is-current-user":!0===f.isCurrentUser,"is-speaking":f.isSpeaking,"is-in-call":f.isInCall,"is-muted":f.isMuted}),k=f.isInCall?f.isSpeaking?(0,e.jsxs)("div",{className:"UserList__collaborator-status-icon-speaking-indicator",title:c8("userList.hint.isSpeaking"),children:[(0,e.jsx)("div",{}),(0,e.jsx)("div",{}),(0,e.jsx)("div",{})]}):f.isMuted?(0,e.jsx)("div",{className:"UserList__collaborator-status-icon-microphone-muted",title:c8("userList.hint.micMuted"),children:F.sf}):(0,e.jsx)("div",{title:c8("userList.hint.inCall"),children:F.rf}):null;return g?(0,e.jsxs)("div",{className:`dropdown-menu-item dropdown-menu-item-base UserList__collaborator ${j}`,style:{"--avatar-size":"1.5rem"},onClick:()=>a(f),children:[(0,e.jsx)(e_,{color:i,onClick:()=>{},name:f.username||"",src:f.avatarUrl,className:j}),(0,e.jsx)("div",{className:"UserList__collaborator-name",children:f.username}),(0,e.jsxs)("div",{className:"UserList__collaborator-status-icons","aria-hidden":!0,children:[h&&(0,e.jsx)("div",{className:"UserList__collaborator-status-icon-is-followed",title:c8("userList.hint.followStatus"),children:F.lf}),k]})]}):(0,e.jsxs)("div",{className:`UserList__collaborator UserList__collaborator--avatar-only ${j}`,children:[(0,e.jsx)(e_,{color:i,onClick:()=>{a(f)},name:f.username||"",src:f.avatarUrl,className:j}),k&&(0,e.jsx)("div",{className:"UserList__collaborator-status-icon",children:k})]})}});var e0=(0,F.$c)({name:"addToLibrary",trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});for(let a of F.za)if(e.some(b=>b.type===a))return{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:c8(`errors.libraryElementTypeError.${a}`)}};return d.library.getLatestLibrary().then(a=>d.library.setLibrary([{id:(0,F.sc)(),status:"unpublished",elements:e.map(F.bg),created:Date.now()},...a])).then(()=>({captureUpdate:F.Wg.EVENTUALLY,appState:{...b,toast:{message:c8("toast.addedToLibrary")}}})).catch(a=>({captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:a.message}}))},label:"labels.addToLibrary"}),e1=(a,b)=>{let c=b.scene.getSelectedElements(a);return c.length>1&&!c.some(a=>(0,F.bc)(a))},e2=(a,b,c,d)=>{var e;let f,g,h=c.scene.getSelectedElements(b),i=(0,F.xb)(a),j=(e=c.scene,f=(0,F.Uc)(h,i),g=(0,F.cj)(h),f.flatMap(a=>{let b=((a,b,{axis:c,position:d})=>{let e=(0,F.cj)(a),[f,g]="x"===c?["minX","maxX"]:["minY","maxY"],h={x:0,y:0};return"start"===d?{...h,[c]:b[f]-e[f]}:"end"===d?{...h,[c]:b[g]-e[g]}:{...h,[c]:(b[f]+b[g])/2-(e[f]+e[g])/2}})(a,g,d);return a.map(c=>{let d=(0,F.Pj)(c,{x:c.x+b.x,y:c.y+b.y});return(0,F.Pg)(c,e.getNonDeletedElementsMap(),{simultaneouslyUpdated:a}),d})})),k=(0,F.xb)(j);return(0,F.Mi)(a.map(a=>k.get(a.id)||a),b,c)};(0,F.$c)({name:"alignTop",label:"labels.alignTop",icon:F.Zd,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"start",axis:"y"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key===F.hg.ARROW_UP,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F.Zd,onClick:()=>c(null),title:`${c8("labels.alignTop")} \u2014 ${(0,F.kb)("CtrlOrCmd+Shift+Up")}`,"aria-label":c8("labels.alignTop"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"alignBottom",label:"labels.alignBottom",icon:F._d,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"end",axis:"y"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key===F.hg.ARROW_DOWN,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F._d,onClick:()=>c(null),title:`${c8("labels.alignBottom")} \u2014 ${(0,F.kb)("CtrlOrCmd+Shift+Down")}`,"aria-label":c8("labels.alignBottom"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"alignLeft",label:"labels.alignLeft",icon:F.$d,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"start",axis:"x"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key===F.hg.ARROW_LEFT,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F.$d,onClick:()=>c(null),title:`${c8("labels.alignLeft")} \u2014 ${(0,F.kb)("CtrlOrCmd+Shift+Left")}`,"aria-label":c8("labels.alignLeft"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"alignRight",label:"labels.alignRight",icon:F.ae,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"end",axis:"x"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key===F.hg.ARROW_RIGHT,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F.ae,onClick:()=>c(null),title:`${c8("labels.alignRight")} \u2014 ${(0,F.kb)("CtrlOrCmd+Shift+Right")}`,"aria-label":c8("labels.alignRight"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"alignVerticallyCentered",label:"labels.centerVertically",icon:F.de,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"center",axis:"y"}),captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F.de,onClick:()=>c(null),title:c8("labels.centerVertically"),"aria-label":c8("labels.centerVertically"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"alignHorizontallyCentered",label:"labels.centerHorizontally",icon:F.ee,trackEvent:{category:"element"},predicate:(a,b,c,d)=>e1(b,d),perform:(a,b,c,d)=>({appState:b,elements:e2(a,b,d,{position:"center",axis:"x"}),captureUpdate:F.Wg.IMMEDIATELY}),PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e1(b,d),type:"button",icon:F.ee,onClick:()=>c(null),title:c8("labels.centerHorizontally"),"aria-label":c8("labels.centerHorizontally"),visible:(0,F.tk)((0,F.pk)(a),b)})});var e3=(a,b)=>{let c=b.scene.getSelectedElements(a);return c.length>1&&!c.some(a=>(0,F.bc)(a))},e4=(a,b,c,d)=>{let e=((a,b,c)=>{let[d,e,f,g]="x"===c.axis?["minX","midX","maxX","width"]:["minY","midY","maxY","height"],h=(0,F.cj)(a),i=(0,F.Uc)(a,b).map(a=>[a,(0,F.cj)(a)]).sort((a,b)=>a[1][e]-b[1][e]),j=0;for(let a of i)j+=a[1][g];let k=(h[g]-j)/(i.length-1);if(k<0){let a=i.findIndex(a=>a[1][d]===h[d]),b=i.findIndex(a=>a[1][f]===h[f]),g=(i[b][1][e]-i[a][1][e])/(i.length-1),j=i[a][1][e];return i.flatMap(([d,f],h)=>{let i={x:0,y:0};return h!==a&&h!==b&&(j+=g,i[c.axis]=j-f[e]),d.map(a=>(0,F.Qj)(a,{x:a.x+i.x,y:a.y+i.y}))})}let l=h[d];return i.flatMap(([a,b])=>{let e={x:0,y:0};return e[c.axis]=l-b[d],l+=k,l+=b[g],a.map(a=>(0,F.Qj)(a,{x:a.x+e.x,y:a.y+e.y}))})})(c.scene.getSelectedElements(b),c.scene.getNonDeletedElementsMap(),d),f=(0,F.xb)(e);return(0,F.Mi)(a.map(a=>f.get(a.id)||a),b,c)};(0,F.$c)({name:"distributeHorizontally",label:"labels.distributeHorizontally",trackEvent:{category:"element"},perform:(a,b,c,d)=>({appState:b,elements:e4(a,b,d,{space:"between",axis:"x"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.H,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e3(b,d),type:"button",icon:F.be,onClick:()=>c(null),title:`${c8("labels.distributeHorizontally")} \u2014 ${(0,F.kb)("Alt+H")}`,"aria-label":c8("labels.distributeHorizontally"),visible:(0,F.tk)((0,F.pk)(a),b)})}),(0,F.$c)({name:"distributeVertically",label:"labels.distributeVertically",trackEvent:{category:"element"},perform:(a,b,c,d)=>({appState:b,elements:e4(a,b,d,{space:"between",axis:"y"}),captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.V,PanelComponent:({elements:a,appState:b,updateData:c,app:d})=>(0,e.jsx)(de,{hidden:!e3(b,d),type:"button",icon:F.ce,onClick:()=>c(null),title:`${c8("labels.distributeVertically")} \u2014 ${(0,F.kb)("Alt+V")}`,"aria-label":c8("labels.distributeVertically"),visible:(0,F.tk)((0,F.pk)(a),b)})});var e5=(0,F.$c)({name:"flipHorizontal",label:"labels.flipHorizontal",icon:F.xf,trackEvent:{category:"element"},perform:(a,b,c,d)=>({elements:(0,F.Mi)(e7(a,d.scene.getNonDeletedElementsMap(),b,"horizontal",d),b,d),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a.shiftKey&&a.code===F.gg.H}),e6=(0,F.$c)({name:"flipVertical",label:"labels.flipVertical",icon:F.wf,trackEvent:{category:"element"},perform:(a,b,c,d)=>({elements:(0,F.Mi)(e7(a,d.scene.getNonDeletedElementsMap(),b,"vertical",d),b,d),appState:b,captureUpdate:F.Wg.IMMEDIATELY}),keyTest:a=>a.shiftKey&&a.code===F.gg.V&&!a[F.hg.CTRL_OR_CMD]}),e7=(a,b,c,d,e)=>{let f=e8((0,F.vk)((0,F.pk)(a),c,{includeBoundTextElement:!0,includeElementsInFrames:!0}),b,c,d,e),g=(0,F.xb)(f);return a.map(a=>g.get(a.id)||a)},e8=(a,b,c,d,e)=>{if(a.every(a=>(0,F.dc)(a)&&(a.startBinding||a.endBinding)))return a.map(a=>(0,F.Qj)(a,{startArrowhead:a.endArrowhead,endArrowhead:a.startArrowhead}));let{midX:f,midY:g}=(0,F.cj)(a);(0,F.hk)(a,b,"nw",e.scene,new Map(Array.from(b.values()).map(a=>[a.id,(0,F.bg)(a)])),{flipByX:"horizontal"===d,flipByY:"vertical"===d,shouldResizeFromCenter:!0,shouldMaintainAspectRatio:!0}),(0,F.Jg)(a.filter(F.cc),b,e.scene.getNonDeletedElements(),e.scene,(0,F.Fg)(c),[],c.zoom);let{elbowArrows:h,otherElements:i}=a.reduce((a,b)=>(0,F.ec)(b)?{...a,elbowArrows:a.elbowArrows.concat(b)}:{...a,otherElements:a.otherElements.concat(b)},{elbowArrows:[],otherElements:[]}),{midX:j,midY:k}=(0,F.cj)(a),[l,m]=[f-j,g-k];return i.forEach(a=>(0,F.Pj)(a,{x:a.x+l,y:a.y+m})),h.forEach(a=>(0,F.Pj)(a,{x:a.x+l,y:a.y+m})),a},e9=(0,F.$c)({name:"copy",label:"labels.copy",icon:F.wd,trackEvent:{category:"element"},perform:async(a,b,c,d)=>{let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});try{await (0,F.ki)(e,d.files,c)}catch(a){return{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:a.message}}}return{captureUpdate:F.Wg.EVENTUALLY}},keyTest:void 0}),fa=(0,F.$c)({name:"paste",label:"labels.paste",trackEvent:{category:"element"},perform:async(a,b,c,d)=>{let e;try{e=await (0,F.li)()}catch(a){return"AbortError"!==a.name&&"NotAllowedError"!==a.name&&(console.error(`actionPaste ${a.name}: ${a.message}`),F.n?{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:c8("hints.firefox_clipboard_write")}}:{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:c8("errors.asyncPasteFailedOnRead")}})}try{d.pasteFromClipboard((0,F.ji)({types:e}))}catch(a){return console.error(a),{captureUpdate:F.Wg.EVENTUALLY,appState:{...b,errorMessage:c8("errors.asyncPasteFailedOnParse")}}}return{captureUpdate:F.Wg.EVENTUALLY}},keyTest:void 0}),fb=(0,F.$c)({name:"cut",label:"labels.cut",icon:F.$e,trackEvent:{category:"element"},perform:(a,b,c,d)=>(e9.perform(a,b,c,d),dg.perform(a,b,null,d)),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.X}),fc=(0,F.$c)({name:"copyAsSvg",label:"labels.copyAsSvg",icon:F.Af,trackEvent:{category:"element"},perform:async(a,b,c,d)=>{if(!d.canvas)return{captureUpdate:F.Wg.EVENTUALLY};let{exportedElements:e,exportingFrame:f}=eG(a,b,!0);try{await eH("clipboard-svg",e,b,d.files,{...b,exportingFrame:f,name:d.getName()});let a=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});return{appState:{toast:{message:c8("toast.copyToClipboardAsSvg",{exportSelection:a.length?c8("toast.selection"):c8("toast.canvas"),exportColorScheme:b.exportWithDarkMode?c8("buttons.darkMode"):c8("buttons.lightMode")})}},captureUpdate:F.Wg.EVENTUALLY}}catch(a){return console.error(a),{appState:{errorMessage:a.message},captureUpdate:F.Wg.EVENTUALLY}}},predicate:a=>F.hi&&a.length>0,keywords:["svg","clipboard","copy"]}),fd=(0,F.$c)({name:"copyAsPng",label:"labels.copyAsPng",icon:F.Bf,trackEvent:{category:"element"},perform:async(a,b,c,d)=>{if(!d.canvas)return{captureUpdate:F.Wg.EVENTUALLY};let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0}),{exportedElements:f,exportingFrame:g}=eG(a,b,!0);try{return await eH("clipboard",f,b,d.files,{...b,exportingFrame:g,name:d.getName()}),{appState:{...b,toast:{message:c8("toast.copyToClipboardAsPng",{exportSelection:e.length?c8("toast.selection"):c8("toast.canvas"),exportColorScheme:b.exportWithDarkMode?c8("buttons.darkMode"):c8("buttons.lightMode")})}},captureUpdate:F.Wg.EVENTUALLY}}catch(a){return console.error(a),{appState:{...b,errorMessage:a.message},captureUpdate:F.Wg.EVENTUALLY}}},predicate:a=>F.ii&&a.length>0,keyTest:a=>a.code===F.gg.C&&a.altKey&&a.shiftKey,keywords:["png","clipboard","copy"]}),fe=(0,F.$c)({name:"copyText",label:"labels.copyText",trackEvent:{category:"element"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0});try{(0,F.oi)((0,F.Jj)(e))}catch{throw Error(c8("errors.copyToSystemClipboardFailed"))}return{captureUpdate:F.Wg.EVENTUALLY}},predicate:(a,b,c,d)=>F.hi&&d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0}).some(F._b),keywords:["text","clipboard","copy"]}),ff=(0,F.$c)({name:"gridMode",icon:F.Gf,keywords:["snap"],label:"labels.toggleGrid",viewMode:!0,trackEvent:{category:"canvas",predicate:a=>a.gridModeEnabled},perform(a,b){return{appState:{...b,gridModeEnabled:!this.checked(b),objectsSnapModeEnabled:!1},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.gridModeEnabled,predicate:(a,b,c)=>void 0===c.gridModeEnabled,keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.code===F.gg.QUOTE}),fg=(0,F.$c)({name:"zenMode",label:"buttons.zenMode",icon:F.Df,paletteName:"Toggle zen mode",viewMode:!0,trackEvent:{category:"canvas",predicate:a=>!a.zenModeEnabled},perform(a,b){return{appState:{...b,zenModeEnabled:!this.checked(b)},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.zenModeEnabled,predicate:(a,b,c)=>typeof c.zenModeEnabled>"u",keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.Z}),fh=(0,F.$c)({name:"objectsSnapMode",label:"buttons.objectsSnapMode",icon:F.Cf,viewMode:!1,trackEvent:{category:"canvas",predicate:a=>!a.objectsSnapModeEnabled},perform(a,b){return{appState:{...b,objectsSnapModeEnabled:!this.checked(b),gridModeEnabled:!1},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.objectsSnapModeEnabled,predicate:(a,b,c)=>typeof c.objectsSnapModeEnabled>"u",keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.S}),fi=(0,F.$c)({name:"stats",label:"stats.fullTitle",icon:F.vf,paletteName:"Toggle stats",viewMode:!0,trackEvent:{category:"menu"},keywords:["edit","attributes","customize"],perform(a,b){return{appState:{...b,stats:{...b.stats,open:!this.checked(b)}},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.stats.open,keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.SLASH}),fj=(0,F.$c)({name:"unbindText",label:"labels.unbindText",trackEvent:{category:"element"},predicate:(a,b,c,d)=>d.scene.getSelectedElements(b).some(a=>(0,F.mc)(a)),perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b),f=d.scene.getNonDeletedElementsMap();return e.forEach(a=>{let b=(0,F.zj)(a,f);if(b){let{width:c,height:d}=(0,F.vc)(b.originalText,(0,F.cb)(b),b.lineHeight),e=(0,F.tj)(a.id);(0,F.sj)(a.id);let{x:g,y:h}=(0,F.xj)(a,b,f);(0,F.Pj)(b,{containerId:null,width:c,height:d,text:b.originalText,x:g,y:h}),(0,F.Pj)(a,{boundElements:a.boundElements?.filter(a=>a.id!==b.id),height:e||a.height})}}),{elements:a,appState:b,captureUpdate:F.Wg.IMMEDIATELY}}}),fk=(0,F.$c)({name:"bindText",label:"labels.bindText",trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);if(2===e.length){let a=(0,F._b)(e[0])||(0,F._b)(e[1]),b;if((0,F.jc)(e[0])?b=e[0]:(0,F.jc)(e[1])&&(b=e[1]),a&&b&&null===(0,F.zj)(b,d.scene.getNonDeletedElementsMap()))return!0}return!1},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b),f,g;(0,F._b)(e[0])&&(0,F.jc)(e[1])?(f=e[0],g=e[1]):(f=e[1],g=e[0]),(0,F.Pj)(f,{containerId:g.id,verticalAlign:F.sa.MIDDLE,textAlign:F.ta.CENTER,autoResize:!0}),(0,F.Pj)(g,{boundElements:(g.boundElements||[]).concat({type:"text",id:f.id})});let h=g.height;return(0,F.uj)(f,g,d.scene.getNonDeletedElementsMap()),(0,F.rj)(g.id,h),{elements:fl(a,g,f),appState:{...b,selectedElementIds:{[g.id]:!0}},captureUpdate:F.Wg.IMMEDIATELY}}}),fl=(a,b,c)=>{let d=a.slice(),e=d.findIndex(a=>a.id===c.id);d.splice(e,1);let f=d.findIndex(a=>a.id===b.id);return d.splice(f+1,0,c),(0,F.Mj)(d,(0,F.xb)([b,c])),d},fm=(a,b,c)=>{let d=a.slice(),e=d.findIndex(a=>a.id===b.id);d.splice(e,1);let f=d.findIndex(a=>a.id===c.id);return d.splice(f,0,b),(0,F.Mj)(d,(0,F.xb)([b,c])),d},fn=(0,F.$c)({name:"wrapTextInContainer",label:"labels.createContainerFromText",trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b),f=e.every(a=>(0,F._b)(a));return e.length>0&&f},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b),f=a.slice(),g={};for(let a of e)if((0,F._b)(a)){let c=(0,F.Sf)({type:"rectangle",backgroundColor:b.currentItemBackgroundColor,boundElements:[...a.boundElements||[],{id:a.id,type:"text"}],angle:a.angle,fillStyle:b.currentItemFillStyle,strokeColor:b.currentItemStrokeColor,roughness:b.currentItemRoughness,strokeWidth:b.currentItemStrokeWidth,strokeStyle:b.currentItemStrokeStyle,roundness:"round"===b.currentItemRoundness?{type:(0,F.oc)("rectangle")?F.ua.ADAPTIVE_RADIUS:F.ua.PROPORTIONAL_RADIUS}:null,opacity:100,locked:!1,x:a.x-F.ra,y:a.y-F.ra,width:(0,F.Gj)(a.width,"rectangle"),height:(0,F.Gj)(a.height,"rectangle"),groupIds:a.groupIds,frameId:a.frameId});if(a.boundElements?.length){let b=a.boundElements.filter(a=>"arrow"===a.type).map(a=>a.id);f.filter(a=>b.includes(a.id)).forEach(b=>{let d=b.startBinding,e=b.endBinding;d?.elementId===a.id&&(d={...d,elementId:c.id}),e?.elementId===a.id&&(e={...e,elementId:c.id}),(d||e)&&(0,F.Pj)(b,{startBinding:d,endBinding:e},!1)})}(0,F.Pj)(a,{containerId:c.id,verticalAlign:F.sa.MIDDLE,boundElements:null,textAlign:F.ta.CENTER,autoResize:!0},!1),(0,F.uj)(a,c,d.scene.getNonDeletedElementsMap()),f=fm([...f,c],c,a),g[c.id]=!0}return{elements:f,appState:{...b,selectedElementIds:g},captureUpdate:F.Wg.IMMEDIATELY}}}),fo=!1,fp=new Map,fq=({element:a,elementsMap:b,setAppState:c,onLinkOpen:d,setToast:f,updateEmbedValidationStatus:g})=>{let h=ke(),i=ka(),j=kb(),k=a.link||"",[l,m]=(0,L.useState)(k),n=(0,L.useRef)(null),o="editor"===h.showHyperlinkPopup,p=(0,L.useCallback)(()=>{if(!n.current)return;let b=(0,F.Xc)(n.current.value)||null;if(!a.link&&b&&dw("hyperlink","create"),(0,F.Xb)(a)){if(h.activeEmbeddable?.element===a&&c({activeEmbeddable:null}),!b){(0,F.Pj)(a,{link:null}),g(a,!1);return}if((0,F.$g)(b,i.validateEmbeddable)){let{width:c,height:d}=a,e=(0,F.Zg)(b);e?.error instanceof URIError&&f({message:c8("toast.unrecognizedLinkFormat"),closable:!0});let h=e?e.intrinsicSize.w/e.intrinsicSize.h:1,i=fp.get(a.id)!==a.link;(0,F.Pj)(a,{...i?{width:e?.type==="video"?c>d?c:d*h:c,height:e?.type==="video"&&c>d?c/h:d}:{},link:b}),g(a,!0),fp.has(a.id)&&fp.delete(a.id)}else b&&f({message:c8("toast.unableToEmbed"),closable:!0}),a.link&&fp.set(a.id,a.link),(0,F.Pj)(a,{link:b}),g(a,!1)}else(0,F.Pj)(a,{link:b})},[a,f,i.validateEmbeddable,h.activeEmbeddable,c,g]);(0,L.useLayoutEffect)(()=>()=>{p()},[p]),(0,L.useEffect)(()=>{o&&n?.current&&!(j.viewport.isMobile||j.isTouchScreen)&&n.current.select()},[o,j.viewport.isMobile,j.isTouchScreen]),(0,L.useEffect)(()=>{let d=null,e=e=>{!o&&(d&&clearTimeout(d),fv(a,b,h,(0,F.Ua)(e.clientX,e.clientY))&&(d=window.setTimeout(()=>{c({showHyperlinkPopup:!1})},500)))};return window.addEventListener("pointermove",e,!1),()=>{window.removeEventListener("pointermove",e,!1),d&&clearTimeout(d)}},[h,a,o,c,b]);let q=(0,L.useCallback)(()=>{dw("hyperlink","delete"),(0,F.Pj)(a,{link:null}),c({showHyperlinkPopup:!1})},[c,a]),{x:r,y:s}=fr(a,h,b);return h.contextMenu||h.selectedElementsAreBeingDragged||h.resizingElement||h.isRotating||h.openMenu||h.viewModeEnabled?null:(0,e.jsxs)("div",{className:"excalidraw-hyperlinkContainer",style:{top:`${s}px`,left:`${r}px`,width:380,padding:5},children:[o?(0,e.jsx)("input",{className:(0,av.default)("excalidraw-hyperlinkContainer-input"),placeholder:c8("labels.link.hint"),ref:n,value:l,onChange:a=>m(a.target.value),autoFocus:!0,onKeyDown:a=>{a.stopPropagation(),a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.K&&a.preventDefault(),(a.key===F.hg.ENTER||a.key===F.hg.ESCAPE)&&(p(),c({showHyperlinkPopup:"info"}))}}):a.link?(0,e.jsx)("a",{href:(0,F.Xc)(a.link||""),className:"excalidraw-hyperlinkContainer-link",target:(0,F.Yc)(a.link)?"_self":"_blank",onClick:b=>{if(a.link&&d){let c=(0,F.Cb)("excalidraw-link",b.nativeEvent);d({...a,link:(0,F.Xc)(a.link)},c),c.defaultPrevented&&b.preventDefault()}},rel:"noopener noreferrer",children:a.link}):(0,e.jsx)("div",{className:"excalidraw-hyperlinkContainer-link",children:c8("labels.link.empty")}),(0,e.jsxs)("div",{className:"excalidraw-hyperlinkContainer__buttons",children:[!o&&(0,e.jsx)(de,{type:"button",title:c8("buttons.edit"),"aria-label":c8("buttons.edit"),label:c8("buttons.edit"),onClick:()=>{dw("hyperlink","edit","popup-ui"),c({showHyperlinkPopup:"editor"})},className:"excalidraw-hyperlinkContainer--edit",icon:F.pd}),(0,e.jsx)(de,{type:"button",title:c8("labels.linkToElement"),"aria-label":c8("labels.linkToElement"),label:c8("labels.linkToElement"),onClick:()=>{c({openDialog:{name:"elementLinkSelector",sourceElementId:a.id}})},icon:F.Pf}),k&&!(0,F.Xb)(a)&&(0,e.jsx)(de,{type:"button",title:c8("buttons.remove"),"aria-label":c8("buttons.remove"),label:c8("buttons.remove"),onClick:q,className:"excalidraw-hyperlinkContainer--remove",icon:F.ud})]})]})},fr=(a,b,c)=>{let[d,e]=(0,F.aj)(a,c),{x:f,y:g}=(0,F.mb)({sceneX:d+a.width/2,sceneY:e},b);return{x:f-b.offsetLeft-190,y:g-b.offsetTop-85}},fs=(a,b)=>{let c=(0,F.vk)(a,b);return(0,F.Xb)(c[0])?"labels.link.editEmbed":c[0]?.link?"labels.link.edit":"labels.link.create"},ft=null,fu=()=>{ft&&clearTimeout(ft),fo&&(fo=!1,es().classList.remove("excalidraw-tooltip--visible"))},fv=(a,b,c,[d,e])=>{let{x:f,y:g}=(0,F.lb)({clientX:d,clientY:e},c),h=15/c.zoom.value;if((0,F.og)(f,g,a,b))return!1;let[i,j,k]=(0,F.aj)(a,b);if(f>=i&&f<=k&&g>=j-85&&g<=j)return!1;let{x:l,y:m}=fr(a,c,b);return!(d>=l-h&&d<=l+380+10+h&&e>=m-h&&e<=m+h+10+42)},fw=(0,F.$c)({name:"hyperlink",label:(a,b)=>fs(a,b),icon:F.Id,perform:(a,b)=>"editor"!==b.showHyperlinkPopup&&{elements:a,appState:{...b,showHyperlinkPopup:"editor",openMenu:null},captureUpdate:F.Wg.IMMEDIATELY},trackEvent:{category:"hyperlink",action:"click"},keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.K,predicate:(a,b)=>1===(0,F.vk)(a,b).length,PanelComponent:({elements:a,appState:b,updateData:c})=>{let d=(0,F.vk)(a,b);return(0,e.jsx)(de,{type:"button",icon:F.Id,"aria-label":c8(fs(a,b)),title:`${(0,F.Xb)(a[0])?c8("labels.link.labelEmbed"):c8("labels.link.label")} - ${(0,F.kb)("CtrlOrCmd+K")}`,onClick:()=>c(null),selected:1===d.length&&!!d[0].link})}}),fx=a=>a.every(a=>!a.locked),fy=(0,F.$c)({name:"toggleElementLock",label:(a,b,c)=>{let d=c.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!1});return 1!==d.length||(0,F.bc)(d[0])?fx(d)?"labels.elementLock.lockAll":"labels.elementLock.unlockAll":d[0].locked?"labels.elementLock.unlock":"labels.elementLock.lock"},icon:(a,b)=>fx((0,F.vk)(b,a))?F.kd:F.jd,trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);return e.length>0&&!e.some(a=>a.locked&&a.frameId)},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});if(!e.length)return!1;let f=fx(e),g=(0,F.xb)(e);return{elements:a.map(a=>g.has(a.id)?(0,F.Qj)(a,{locked:f}):a),appState:{...b,selectedLinearElement:f?null:b.selectedLinearElement},captureUpdate:F.Wg.IMMEDIATELY}},keyTest:(a,b,c,d)=>a.key.toLocaleLowerCase()===F.hg.L&&a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!1}).length>0}),fz=(0,F.$c)({name:"unlockAllElements",paletteName:"Unlock all elements",trackEvent:{category:"canvas"},viewMode:!1,icon:F.jd,predicate:(a,b)=>0===(0,F.vk)(a,b).length&&a.some(a=>a.locked),perform:(a,b)=>{let c=a.filter(a=>a.locked);return{elements:a.map(a=>a.locked?(0,F.Qj)(a,{locked:!1}):a),appState:{...b,selectedElementIds:Object.fromEntries(c.map(a=>[a.id,!0]))},captureUpdate:F.Wg.IMMEDIATELY}},label:"labels.elementLock.unlockAll"}),fA=a=>{let{closeOnClickOutside:b=!0}=a,c=dO({className:"excalidraw-modal-container"}),d=(0,L.useRef)(document.body.classList.contains("excalidraw-animations-disabled"));return c?(0,aw.createPortal)((0,e.jsxs)("div",{className:(0,av.default)("Modal",a.className,{"animations-disabled":d.current}),role:"dialog","aria-modal":"true",onKeyDown:b=>{b.key===F.hg.ESCAPE&&(b.nativeEvent.stopImmediatePropagation(),b.stopPropagation(),a.onCloseRequest())},"aria-labelledby":a.labelledBy,"data-prevent-outside-click":!0,children:[(0,e.jsx)("div",{className:"Modal__background",onClick:b?a.onCloseRequest:void 0}),(0,e.jsx)("div",{className:"Modal__content",style:{"--max-width":`${a.maxWidth}px`},tabIndex:0,children:a.children})]}),c):null},fB=O(new Map),fC=async a=>await (0,F.ri)({elements:a,appState:{exportBackground:!1,viewBackgroundColor:F.e.white},files:null,renderEmbeddables:!1,skipInliningFonts:!0}),fD=()=>{let[a]=cW(fB);return{clearLibraryCache:()=>a.clear(),deleteItemsFromLibraryCache:b=>{b.forEach(b=>a.delete(b))},svgCache:a}},fE=class{constructor(){(0,K.d)(this,"jobs",[]),(0,K.d)(this,"running",!1)}tick(){if(this.running)return;let a=this.jobs.shift();a?(this.running=!0,a.promise.resolve((0,F.Tb)(a.jobFactory,...a.args).finally(()=>{this.running=!1,this.tick()}))):this.running=!1}push(a,...b){let c=(0,F.tb)();return this.jobs.push({jobFactory:a,promise:c,args:b}),this.tick(),c}},fF=new F.Vg,fG=O({status:"loaded",isInitialized:!1,libraryItems:[]}),fH=a=>(0,F.Nb)(a),fI=(a,b)=>!a.find(a=>a.elements.length===b.elements.length&&a.elements.every((a,c)=>a.id===b.elements[c].id&&a.versionNonce===b.elements[c].versionNonce)),fJ=class{constructor(a){(0,K.d)(this,"currLibraryItems",[]),(0,K.d)(this,"prevLibraryItems",fH(this.currLibraryItems)),(0,K.d)(this,"app"),(0,K.d)(this,"updateQueue",[]),(0,K.d)(this,"getLastUpdateTask",()=>this.updateQueue[this.updateQueue.length-1]),(0,K.d)(this,"notifyListeners",()=>{if(this.updateQueue.length>0)c_.set(fG,a=>({status:"loading",libraryItems:this.currLibraryItems,isInitialized:a.isInitialized}));else{c_.set(fG,{status:"loaded",libraryItems:this.currLibraryItems,isInitialized:!0});try{let a=this.prevLibraryItems;this.prevLibraryItems=fH(this.currLibraryItems);let b=fH(this.currLibraryItems);this.app.props.onLibraryChange?.(b),fF.trigger(((a,b)=>{let c=(0,F.xb)(b),d={deletedItems:new Map,addedItems:new Map};for(let b of a)c.has(b.id)||d.deletedItems.set(b.id,b);let e=(0,F.xb)(a);for(let a of b)e.has(a.id)||d.addedItems.set(a.id,a);return d})(a,b),b)}catch(a){console.error(a)}}}),(0,K.d)(this,"destroy",()=>{this.updateQueue=[],this.currLibraryItems=[],c_.set(fB,new Map)}),(0,K.d)(this,"resetLibrary",()=>this.setLibrary([])),(0,K.d)(this,"getLatestLibrary",()=>new Promise(async a=>{try{let b=await (this.getLastUpdateTask()||this.currLibraryItems);a(this.updateQueue.length>0?this.getLatestLibrary():fH(b))}catch{return a(this.currLibraryItems)}})),(0,K.d)(this,"updateLibrary",async({libraryItems:a,prompt:b=!1,merge:c=!1,openLibraryMenu:d=!1,defaultStatus:e="unpublished"})=>(d&&this.app.setState({openSidebar:{name:F.ya.name,tab:F.wa}}),this.setLibrary(()=>new Promise(async(d,f)=>{try{let g=await ("function"==typeof a&&!(a instanceof Blob)?a(this.currLibraryItems):a),h;h=g instanceof Blob?await (0,F.xh)(g,e):(0,F.mh)(g,e),!b||window.confirm(c8("alerts.confirmAddLibrary",{numShapes:h.length}))?(b&&this.app.focusContainer(),d(c?((a,b)=>{let c=[];for(let d of b)fI(a,d)&&c.push(d);return[...c,...a]})(this.currLibraryItems,h):h)):f(new F.tc)}catch(a){f(a)}})))),(0,K.d)(this,"setLibrary",a=>{let b=new Promise(async(b,c)=>{try{await this.getLastUpdateTask(),"function"==typeof a&&(a=a(this.currLibraryItems)),this.currLibraryItems=fH(await a),b(this.currLibraryItems)}catch(a){c(a)}}).catch(a=>{if("AbortError"===a.name)return console.warn("Library update aborted by user"),this.currLibraryItems;throw a}).finally(()=>{this.updateQueue=this.updateQueue.filter(a=>a!==b),this.notifyListeners()});return this.updateQueue.push(b),this.notifyListeners(),b}),this.app=a}},fK=a=>{let b=Math.ceil(Math.sqrt(a.length)),c=[],d=c=>a.slice(c*b,c*b+b).reduce((a,b)=>{let{height:c}=(0,F.cj)(b.elements);return Math.max(a,c)},0),e=c=>{let d=0,e=0,f=0;for(let g of a){if(d%b==0&&(e=0),e===c){let{width:a}=(0,F.cj)(g.elements);f=Math.max(f,a)}d++,e++}return f},f=0,g=0,h=0,i=0,j=0,k=0,l=0;for(let m of a){j&&j%b==0&&(g+=h+50,f=0,k=0,l++),0===k&&(h=d(l)),i=e(k);let{minX:a,minY:n,width:o,height:p}=(0,F.cj)(m.elements),q=(i-o)/2,r=(h-p)/2;c.push(...m.elements.map(b=>({...b,x:b.x+f+q-a,y:b.y+g+r-n}))),f+=i+50,j++,k++}return c},fL=class a{constructor(a){(0,K.d)(this,"adapter"),this.adapter=a}static async getLibraryItems(b,c,d=!0){let e=()=>new Promise(async(a,d)=>{try{let d=await b.load({source:c});a((0,F.mh)(d?.libraryItems||[],"published"))}catch(a){d(a)}});return d?a.queue.push(e):e()}getLibraryItems(b){return a.getLibraryItems(this.adapter,b,!1)}};(0,K.d)(fL,"queue",new fE),(0,K.d)(fL,"run",async(a,b)=>{let c=new fL(a);return fL.queue.push(()=>b(c))});var fM=(0,L.forwardRef)(({children:a,gap:b,align:c,justifyContent:d,className:f,style:g},h)=>(0,e.jsx)("div",{className:(0,av.default)("Stack Stack_horizontal",f),style:{"--gap":b,alignItems:c,justifyContent:d,...g},ref:h,children:a})),fN=(0,L.forwardRef)(({children:a,gap:b,align:c,justifyContent:d,className:f,style:g},h)=>(0,e.jsx)("div",{className:(0,av.default)("Stack Stack_vertical",f),style:{"--gap":b,justifyItems:c,justifyContent:d,...g},ref:h,children:a})),fO=({theme:a,id:b,libraryReturnUrl:c})=>{let d=c||window.location.origin+window.location.pathname;return(0,e.jsx)("a",{className:"library-menu-browse-button",href:`${H.a.VITE_APP_LIBRARY_URL}?target=${window.name||"_blank"}&referrer=${d}&useHash=true&token=${b}&theme=${a}&version=${F.qa.excalidrawLibrary}`,target:"_excalidraw_libraries",children:c8("labels.libraries")})},fP=({libraryReturnUrl:a,theme:b,id:c,style:d,children:f,className:g})=>(0,e.jsxs)("div",{className:(0,av.default)("library-menu-control-buttons",g),style:d,children:[(0,e.jsx)(fO,{id:c,libraryReturnUrl:a,theme:b}),f]}),fQ=/({{[\w-]+}})|(<[\w-]+>)|(<\/[\w-]+>)/g,fR=/{{([\w-]+)}}/,fS=/<([\w-]+)>/,fT=/<\/([\w-]+)>/,fU=({i18nKey:a,children:b,...c})=>{var d;let e,{t:f}=da();return L.default.createElement(L.default.Fragment,{},...(d=f(a),e=[{name:"",children:[]}],d.split(fQ).filter(Boolean).forEach(a=>{let b=a.match(fS),f=a.match(fT),g=a.match(fR);if(null!==b){let a=b[1];c.hasOwnProperty(a)?e.push({name:a,children:[]}):console.warn(`Trans: missed to pass in prop ${a} for interpolating ${d}`)}else if(null!==f)if(f[1]===e[e.length-1].name){let a=e.pop(),b=L.default.createElement(L.default.Fragment,{},...a.children),d=c[a.name];"function"==typeof d&&e[e.length-1].children.push(d(b))}else console.warn(`Trans: unexpected end tag ${a} for interpolating ${d}`);else if(null!==g){let a=g[1];c.hasOwnProperty(a)?e[e.length-1].children.push(c[a]):console.warn(`Trans: key ${a} not in props for interpolating ${d}`)}else e[e.length-1].children.push(a)}),1!==e.length&&console.warn(`Trans: stack not empty for interpolating ${d}`),e[0].children))},fV=({label:a,onClick:b,className:c,children:d,actionType:f,type:g="button",isLoading:h,...i})=>{let j=f?`Dialog__action-button--${f}`:"";return(0,e.jsxs)("button",{className:(0,av.default)("Dialog__action-button",j,c),type:g,"aria-label":a,onClick:b,...i,children:[d&&(0,e.jsx)("div",{style:h?{visibility:"hidden"}:{},children:d}),(0,e.jsx)("div",{style:h?{visibility:"hidden"}:{},children:a}),h&&(0,e.jsx)("div",{style:{position:"absolute",inset:0},children:(0,e.jsx)(db,{})})]})},fW=a=>{let{onConfirm:b,onCancel:c,children:d,confirmText:f=c8("buttons.confirm"),cancelText:g=c8("buttons.cancel"),className:h="",...i}=a,j=kf(),k=cX(gd),{container:l}=kc();return(0,e.jsxs)(gi,{onCloseRequest:c,size:"small",...i,className:`confirm-dialog ${h}`,children:[d,(0,e.jsxs)("div",{className:"confirm-dialog-buttons",children:[(0,e.jsx)(fV,{label:g,onClick:()=>{j({openMenu:null}),k(!1),(0,aw.flushSync)(()=>{c()}),l?.focus()}}),(0,e.jsx)(fV,{label:f,onClick:()=>{j({openMenu:null}),k(!1),(0,aw.flushSync)(()=>{b()}),l?.focus()},actionType:"danger"})]})]})},fX=class{static has(a){try{return!!window.localStorage.getItem(a)}catch(a){return console.warn(`localStorage.getItem error: ${a.message}`),!1}}static get(a){try{let b=window.localStorage.getItem(a);return b?JSON.parse(b):null}catch(a){return console.warn(`localStorage.getItem error: ${a.message}`),null}}};(0,K.d)(fX,"set",(a,b)=>{try{return window.localStorage.setItem(a,JSON.stringify(b)),!0}catch(a){return console.warn(`localStorage.setItem error: ${a.message}`),!1}}),(0,K.d)(fX,"delete",a=>{try{window.localStorage.removeItem(a)}catch(a){console.warn(`localStorage.removeItem error: ${a.message}`)}});var fY=async a=>{let b=Math.round(8),c=Math.max(Math.round(2),2),d=(0,F.hb)(a,6),e=document.createElement("canvas");e.width=128*d[0].length+(d[0].length+1)*(2*b)-2*b,e.height=128*d.length+(d.length+1)*(2*b)-2*b;let f=e.getContext("2d");for(let[d,g]of(f.fillStyle=bN.default.white,f.fillRect(0,0,e.width,e.height),a.entries())){let a=await (0,F.pi)({elements:g.elements,files:null,maxWidthOrHeight:128}),{width:e,height:h}=a,i=Math.floor(d/6)*(128+2*b),j=d%6*(128+2*b);f.drawImage(a,j+(128-e)/2+b,i+(128-h)/2+b),f.lineWidth=c,f.strokeStyle=bN.default.gray[4],f.strokeRect(j+b/2,i+b/2,128+b,128+b)}return await (0,F.Eh)(new File([await (0,F.yh)(e)],"preview",{type:F.T.png}),{outputType:F.T.jpg,maxWidthOrHeight:5e3})},fZ=({libItem:a,appState:b,index:c,onChange:d,onRemove:f})=>{let g=(0,L.useRef)(null),h=(0,L.useRef)(null);return(0,L.useEffect)(()=>{let c=g.current;c&&(async()=>{c.innerHTML=(await (0,F.ri)({elements:a.elements,appState:{...b,viewBackgroundColor:bN.default.white,exportBackground:!0},files:null,skipInliningFonts:!0})).outerHTML})()},[a.elements,b]),(0,e.jsxs)("div",{className:"single-library-item",children:["published"===a.status&&(0,e.jsx)("span",{className:"single-library-item-status",children:c8("labels.statusPublished")}),(0,e.jsx)("div",{ref:g,className:"single-library-item__svg"}),(0,e.jsx)(de,{"aria-label":c8("buttons.remove"),type:"button",icon:F.ge,className:"single-library-item--remove",onClick:f.bind(null,a.id),title:c8("buttons.remove")}),(0,e.jsxs)("div",{style:{display:"flex",margin:"0.8rem 0",width:"100%",fontSize:"14px",fontWeight:500,flexDirection:"column"},children:[(0,e.jsxs)("label",{style:{display:"flex",justifyContent:"space-between",flexDirection:"column"},children:[(0,e.jsxs)("div",{style:{padding:"0.5em 0"},children:[(0,e.jsx)("span",{style:{fontWeight:500,color:bN.default.gray[6]},children:c8("publishDialog.itemName")}),(0,e.jsx)("span",{"aria-hidden":"true",className:"required",children:"*"})]}),(0,e.jsx)("input",{type:"text",ref:h,style:{width:"80%",padding:"0.2rem"},defaultValue:a.name,placeholder:"Item name",onChange:a=>{d(a.target.value,c)}})]}),(0,e.jsx)("span",{className:"error",children:a.error})]})]})},f$=({onClose:a,libraryItems:b,appState:c,onSuccess:d,onError:f,updateItemsInStorage:g,onRemove:h})=>{let i,[j,k]=(0,L.useState)({authorName:"",githubHandle:"",name:"",description:"",twitterHandle:"",website:""}),[l,m]=(0,L.useState)(!1);(0,L.useEffect)(()=>{let a=fX.get(F.Ba.PUBLISH_LIBRARY);a&&k(a)},[]);let[n,o]=(0,L.useState)(b.slice());(0,L.useEffect)(()=>{o(b.slice())},[b]);let p=a=>{k({...j,[a.target.name]:a.target.value})},q=async a=>{a.preventDefault(),m(!0);let b=[],c=!1;if(n.forEach(a=>{let d="";a.name||(d=c8("publishDialog.errors.required"),c=!0),b.push({...a,error:d})}),c){o(b),m(!1);return}let e=await fY(n),g=new Blob([JSON.stringify({type:F.V.excalidrawLibrary,version:F.qa.excalidrawLibrary,source:F.W,libraryItems:n},null,2)],{type:"application/json"}),h=new FormData;h.append("excalidrawLib",g),h.append("previewImage",e),h.append("previewImageType",e.type),h.append("title",j.name),h.append("authorName",j.authorName),h.append("githubHandle",j.githubHandle),h.append("name",j.name),h.append("description",j.description),h.append("twitterHandle",j.twitterHandle),h.append("website",j.website),fetch(`${H.a.VITE_APP_LIBRARY_BACKEND}/submit`,{method:"post",body:h}).then(a=>a.ok?a.json().then(({url:a})=>{fX.delete(F.Ba.PUBLISH_LIBRARY),d({url:a,authorName:j.authorName,items:n})}):a.json().catch(()=>{throw Error(a.statusText||"something went wrong")}).then(b=>{throw Error(b.message||a.statusText||"something went wrong")}),a=>{console.error(a),f(a),m(!1)}).catch(a=>{console.error(a),f(a),m(!1)})},r=(0,L.useCallback)(()=>{g(n),fX.set(F.Ba.PUBLISH_LIBRARY,j),a()},[n,a,g,j]),s=!!b.length,t=b.some(a=>"published"===a.status);return(0,e.jsx)(gi,{onCloseRequest:r,title:c8("publishDialog.title"),className:"publish-library",children:s?(0,e.jsxs)("form",{onSubmit:q,children:[(0,e.jsx)("div",{className:"publish-library-note",children:(0,e.jsx)(fU,{i18nKey:"publishDialog.noteDescription",link:a=>(0,e.jsx)("a",{href:"https://libraries.excalidraw.com",target:"_blank",rel:"noopener noreferrer",children:a})})}),(0,e.jsx)("span",{className:"publish-library-note",children:(0,e.jsx)(fU,{i18nKey:"publishDialog.noteGuidelines",link:a=>(0,e.jsx)("a",{href:"https://github.com/excalidraw/excalidraw-libraries#guidelines",target:"_blank",rel:"noopener noreferrer",children:a})})}),(0,e.jsx)("div",{className:"publish-library-note",children:c8("publishDialog.noteItems")}),t&&(0,e.jsx)("span",{className:"publish-library-note publish-library-warning",children:c8("publishDialog.republishWarning")}),(i=[],n.forEach((a,b)=>{i.push((0,e.jsx)("div",{className:"single-library-item-wrapper",children:(0,e.jsx)(fZ,{libItem:a,appState:c,index:b,onChange:(a,b)=>{let c=n.slice();c[b].name=a,o(c)},onRemove:h})},b))}),(0,e.jsx)("div",{className:"selected-library-items",children:i})),(0,e.jsxs)("div",{className:"publish-library__fields",children:[(0,e.jsxs)("label",{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("span",{children:c8("publishDialog.libraryName")}),(0,e.jsx)("span",{"aria-hidden":"true",className:"required",children:"*"})]}),(0,e.jsx)("input",{type:"text",name:"name",required:!0,value:j.name,onChange:p,placeholder:c8("publishDialog.placeholder.libraryName")})]}),(0,e.jsxs)("label",{style:{alignItems:"flex-start"},children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("span",{children:c8("publishDialog.libraryDesc")}),(0,e.jsx)("span",{"aria-hidden":"true",className:"required",children:"*"})]}),(0,e.jsx)("textarea",{name:"description",rows:4,required:!0,value:j.description,onChange:p,placeholder:c8("publishDialog.placeholder.libraryDesc")})]}),(0,e.jsxs)("label",{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("span",{children:c8("publishDialog.authorName")}),(0,e.jsx)("span",{"aria-hidden":"true",className:"required",children:"*"})]}),(0,e.jsx)("input",{type:"text",name:"authorName",required:!0,value:j.authorName,onChange:p,placeholder:c8("publishDialog.placeholder.authorName")})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:c8("publishDialog.githubUsername")}),(0,e.jsx)("input",{type:"text",name:"githubHandle",value:j.githubHandle,onChange:p,placeholder:c8("publishDialog.placeholder.githubHandle")})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:c8("publishDialog.twitterUsername")}),(0,e.jsx)("input",{type:"text",name:"twitterHandle",value:j.twitterHandle,onChange:p,placeholder:c8("publishDialog.placeholder.twitterHandle")})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:c8("publishDialog.website")}),(0,e.jsx)("input",{type:"text",name:"website",pattern:"https?://.+",title:c8("publishDialog.errors.website"),value:j.website,onChange:p,placeholder:c8("publishDialog.placeholder.website")})]}),(0,e.jsx)("span",{className:"publish-library-note",children:(0,e.jsx)(fU,{i18nKey:"publishDialog.noteLicense",link:a=>(0,e.jsx)("a",{href:"https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer",children:a})})})]}),(0,e.jsxs)("div",{className:"publish-library__buttons",children:[(0,e.jsx)(fV,{label:c8("buttons.cancel"),onClick:r,"data-testid":"cancel-clear-canvas-button"}),(0,e.jsx)(fV,{type:"submit",label:c8("buttons.submit"),actionType:"primary",isLoading:l})]})]}):(0,e.jsx)("p",{style:{padding:"1em",textAlign:"center",fontWeight:500},children:c8("publishDialog.atleastOneLibItem")})})},f_=({className:a="",children:b,onToggle:c,title:d,...f})=>{let g=kb(),h=(0,av.default)(`dropdown-menu-button ${a}`,"zen-mode-transition",{"dropdown-menu-button--mobile":g.editor.isMobile}).trim();return(0,e.jsx)("button",{"data-prevent-outside-click":!0,className:h,onClick:c,type:"button","data-testid":"dropdown-menu-button",title:d,...f,children:b})};f_.displayName="DropdownMenuTrigger";var f0=()=>(0,e.jsx)("div",{style:{height:"1px",backgroundColor:"var(--default-border-color)",margin:".5rem 0"}});f0.displayName="DropdownMenuSeparator";var f1=({children:a,onClickOutside:b,className:c="",onSelect:d,style:f})=>{let g=kb(),h=(0,L.useRef)(null),i=dQ({onClickOutside:b});dP(h,()=>{i.onClickOutside?.()}),(0,L.useEffect)(()=>{let a=a=>{a.key===F.hg.ESCAPE&&(a.stopImmediatePropagation(),i.onClickOutside?.())},b={capture:!0};return document.addEventListener("keydown",a,b),()=>{document.removeEventListener("keydown",a,b)}},[i]);let j=(0,av.default)(`dropdown-menu ${c}`,{"dropdown-menu--mobile":g.editor.isMobile}).trim();return(0,e.jsx)(d7.Provider,{value:{onSelect:d},children:(0,e.jsx)("div",{ref:h,className:j,style:f,"data-testid":"dropdown-menu",children:g.editor.isMobile?(0,e.jsx)(fN,{className:"dropdown-menu-container",children:a}):(0,e.jsx)(dU,{className:"dropdown-menu-container",padding:2,style:{zIndex:2},children:a})})})};f1.displayName="DropdownMenuContent";var f2=({icon:a,shortcut:b,href:c,children:d,onSelect:f,className:g="",selected:h,rel:i="noreferrer",...j})=>{let k=d9(j.onClick,f);return(0,e.jsx)("a",{...j,href:c,target:"_blank",rel:"noreferrer",className:d8(g,h),title:j.title??j["aria-label"],onClick:k,children:(0,e.jsx)(ea,{icon:a,shortcut:b,children:d})})};f2.displayName="DropdownMenuItemLink";var f3=({children:a,open:b})=>{let c=L.default.Children.toArray(a).find(a=>L.default.isValidElement(a)&&"string"!=typeof a.type&&a?.type.displayName&&"DropdownMenuTrigger"===a.type.displayName)||null,d=L.default.Children.toArray(a).find(a=>L.default.isValidElement(a)&&"string"!=typeof a.type&&a?.type.displayName&&"DropdownMenuContent"===a.type.displayName)||null;return(0,e.jsxs)(e.Fragment,{children:[c,b&&d]})};f3.Trigger=f_,f3.Content=f1,f3.Item=eb,f3.ItemLink=f2,f3.ItemCustom=({children:a,className:b="",selected:c,...d})=>(0,e.jsx)("div",{...d,className:`dropdown-menu-item-base dropdown-menu-item-custom ${b} ${c?"dropdown-menu-item--selected":""}`.trim(),children:a}),f3.Group=d6,f3.Separator=f0,f3.displayName="DropdownMenu";var f4=({setAppState:a,selectedItems:b,library:c,onRemoveFromLibrary:d,resetLibrary:f,onSelectItems:g,appState:h,className:i})=>{let j,k,l,[m]=cW(fG),[n,o]=cW(gd),[p,q]=(0,L.useState)(!1),r=!!b.length,s=r?m.libraryItems.filter(a=>b.includes(a.id)):m.libraryItems,t=r?c8("buttons.remove"):c8("buttons.resetLibrary"),[u,v]=(0,L.useState)(!1),[w,x]=(0,L.useState)(null),y=(0,L.useCallback)(()=>(0,e.jsxs)(gi,{onCloseRequest:()=>x(null),title:c8("publishSuccessDialog.title"),className:"publish-library-success",size:"small",children:[(0,e.jsx)("p",{children:(0,e.jsx)(fU,{i18nKey:"publishSuccessDialog.content",authorName:w.authorName,link:a=>(0,e.jsx)("a",{href:w?.url,target:"_blank",rel:"noopener noreferrer",children:a})})}),(0,e.jsx)(de,{type:"button",title:c8("buttons.close"),"aria-label":c8("buttons.close"),label:c8("buttons.close"),onClick:()=>x(null),"data-testid":"publish-library-success-close",className:"publish-library-success-close"})]}),[x,w]),z=async()=>{try{await c.updateLibrary({libraryItems:(0,F.fh)({description:"Excalidraw library files"}),merge:!0,openLibraryMenu:!0})}catch(b){if(b?.name==="AbortError")return void console.warn(b);a({errorMessage:c8("errors.importLibraryError")})}},A=async()=>{let b=r?s:await c.getLatestLibrary();(0,F.Nh)(b).catch(F.pb).catch(b=>{a({errorMessage:b.message})})};return(0,e.jsxs)("div",{className:(0,av.default)("library-menu-dropdown-container",i),children:[(0,e.jsxs)(f3,{open:n,children:[(0,e.jsx)(f3.Trigger,{onToggle:()=>o(!n),children:F.hd}),(0,e.jsxs)(f3.Content,{onClickOutside:()=>o(!1),onSelect:()=>o(!1),className:"library-menu",children:[!r&&(0,e.jsx)(f3.Item,{onSelect:z,icon:F.Ld,"data-testid":"lib-dropdown--load",children:c8("buttons.load")}),!!s.length&&(0,e.jsx)(f3.Item,{onSelect:A,icon:F.Ad,"data-testid":"lib-dropdown--export",children:c8("buttons.export")}),!!s.length&&(0,e.jsx)(f3.Item,{onSelect:()=>q(!0),icon:F.ud,children:t}),r&&(0,e.jsx)(f3.Item,{icon:F.Xe,onSelect:()=>v(!0),"data-testid":"lib-dropdown--remove",children:c8("buttons.publishLibrary")})]})]}),b.length>0&&(0,e.jsx)("div",{className:"library-actions-counter",children:b.length}),p&&(j=b.length?c8("alerts.removeItemsFromsLibrary",{count:b.length}):c8("alerts.resetLibrary"),k=b.length?c8("confirmDialog.removeItemsFromLib"):c8("confirmDialog.resetLibrary"),(0,e.jsx)(fW,{onConfirm:()=>{b.length?d():f(),q(!1)},onCancel:()=>{q(!1)},title:k,children:(0,e.jsx)("p",{children:j})})),u&&(0,e.jsx)(f$,{onClose:()=>v(!1),libraryItems:(l=m.libraryItems,l.filter(a=>b.includes(a.id))),appState:h,onSuccess:a=>{var d;let e;return d=m.libraryItems,v(!1),x({url:a.url,authorName:a.authorName}),void((e=d.slice()).forEach(a=>{b.includes(a.id)&&(a.status="published")}),c.setLibrary(e))},onError:a=>window.alert(a),updateItemsInStorage:()=>c.setLibrary(m.libraryItems),onRemove:a=>g(b.filter(b=>b!==a))}),w&&y()]})},f5=({selectedItems:a,onSelectItems:b,className:c})=>{let{library:d}=j9(),{clearLibraryCache:f,deleteItemsFromLibraryCache:g}=fD(),h=L.default.useContext(dN),i=kf(),[j]=cW(fG),k=async c=>{let e=c.filter(b=>!a.includes(b.id));d.setLibrary(e).catch(()=>{i({errorMessage:c8("alerts.errorRemovingFromLibrary")})}),g(a),b([])};return(0,e.jsx)(f4,{appState:h,setAppState:i,selectedItems:a,onSelectItems:b,library:d,onRemoveFromLibrary:()=>k(j.libraryItems),resetLibrary:()=>{d.resetLibrary(),f()},className:c})},f6=(0,L.memo)(({id:a,elements:b,isPending:c,onClick:d,selected:f,onToggle:g,onDrag:h,svgCache:i})=>{let j=(0,L.useRef)(null),k=((a,b,c)=>{let[d,e]=(0,L.useState)();return(0,L.useEffect)(()=>{if(b)if(a){let d=c.get(a);d?e(d):(async()=>{let d=await fC(b);d.querySelector(".style-fonts")?.remove(),d&&(c.set(a,d),e(d))})()}else(async()=>{e(await fC(b))})()},[a,b,c,e]),d})(a,b,i);(0,L.useEffect)(()=>{let a=j.current;if(a)return k&&(a.innerHTML=k.outerHTML),()=>{a.innerHTML=""}},[k]);let[l,m]=(0,L.useState)(!1),n=kb().editor.isMobile,o=c&&(0,e.jsx)("div",{className:"library-unit__adder",children:F.gd});return(0,e.jsxs)("div",{className:(0,av.default)("library-unit",{"library-unit__active":b,"library-unit--hover":b&&l,"library-unit--selected":f,"library-unit--skeleton":!k}),onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:[(0,e.jsx)("div",{className:(0,av.default)("library-unit__dragger",{"library-unit__pulse":!!c}),ref:j,draggable:!!b,onClick:b||c?b=>{a&&b.shiftKey?g(a,b):d(a)}:void 0,onDragStart:b=>{a?(m(!1),h(a,b)):b.preventDefault()}}),o,a&&b&&(l||n||f)&&(0,e.jsx)(eJ,{checked:f,onChange:(b,c)=>g(a,c),className:"library-unit__checkbox"})]})}),f7=()=>(0,e.jsx)("div",{className:"library-unit library-unit--skeleton"}),f8=L.default.useTransition||function(){return[!1,(0,L.useCallback)(a=>a(),[])]},f9=({children:a})=>(0,e.jsx)("div",{className:"library-menu-items-container__grid",children:a}),ga=(0,L.memo)(({items:a,onItemSelectToggle:b,onItemDrag:c,isItemSelected:d,onClick:f,svgCache:g,itemsRenderedPerBatch:h})=>{let[,i]=f8(),[j,k]=(0,L.useState)(0);return(0,L.useEffect)(()=>{j<a.length&&i(()=>{k(j+h)})},[j,a.length,i,h]),(0,e.jsx)(e.Fragment,{children:a.map((a,h)=>h<j?(0,e.jsx)(f6,{elements:a?.elements,isPending:!a?.id&&!!a?.elements,onClick:f,svgCache:g,id:a?.id,selected:d(a.id),onToggle:b,onDrag:c},a?.id??h):(0,e.jsx)(f7,{},h))})}),gb=O(0);function gc({isLoading:a,libraryItems:b,onAddToLibrary:c,onInsertLibraryItems:d,pendingElements:f,theme:g,id:h,libraryReturnUrl:i,onSelectItems:j,selectedItems:k}){let l=(0,L.useRef)(null),m=(a=>{let[b,c]=cW(gb);return(0,L.useEffect)(()=>{let{current:b}=a;if(!b)return;let d=(0,bO.default)(()=>{let{scrollTop:a}=b;c(a)},200);return b.addEventListener("scroll",d),()=>{d.cancel(),b.removeEventListener("scroll",d)}},[a,c]),b})(l);(0,L.useEffect)(()=>{m>0&&l.current?.scrollTo(0,m)},[]);let{svgCache:n}=fD(),o=(0,L.useMemo)(()=>b.filter(a=>"published"!==a.status),[b]),p=(0,L.useMemo)(()=>b.filter(a=>"published"===a.status),[b]),q=!b.length&&!f.length,r=!f.length&&!o.length&&!p.length,[s,t]=(0,L.useState)(null),u=(0,L.useCallback)((a,b)=>{let c=!k.includes(a),d=[...o,...p];if(c){if(b.shiftKey&&s){let b=d.findIndex(a=>a.id===s),c=d.findIndex(b=>b.id===a);if(-1===b||-1===c)return void j([...k,a]);let e=(0,F.xb)(k);j(d.reduce((a,d,f)=>((f>=b&&f<=c||e.has(d.id))&&a.push(d.id),a),[]))}else j([...k,a]);t(a)}else t(null),j(k.filter(b=>b!==a))},[s,j,p,k,o]),v=(0,L.useCallback)(a=>(k.includes(a)?b.filter(a=>k.includes(a.id)):b.filter(b=>b.id===a)).map(a=>({...a,elements:(0,F.dg)(a.elements,{randomizeSeed:!0})})),[b,k]),w=(0,L.useCallback)((a,b)=>{b.dataTransfer.setData(F.T.excalidrawlib,(0,F.Mh)(v(a)))},[v]),x=(0,L.useCallback)(a=>!!a&&k.includes(a),[k]),y=(0,L.useCallback)(()=>{c(f)},[f,c]),z=(0,L.useCallback)(a=>{a&&d(v(a))},[v,d]),A=n.size>=b.length?64:17;return(0,e.jsxs)("div",{className:"library-menu-items-container",style:f.length||o.length||p.length?{justifyContent:"flex-start"}:{borderBottom:0},children:[!r&&(0,e.jsx)(f5,{selectedItems:k,onSelectItems:j,className:"library-menu-dropdown-container--in-heading"}),(0,e.jsxs)(fN,{className:"library-menu-items-container__items",align:"start",gap:1,style:{flex:p.length>0?1:"0 1 auto",marginBottom:0},ref:l,children:[(0,e.jsxs)(e.Fragment,{children:[!r&&(0,e.jsx)("div",{className:"library-menu-items-container__header",children:c8("labels.personalLib")}),a&&(0,e.jsx)("div",{style:{position:"absolute",top:"var(--container-padding-y)",right:"var(--container-padding-x)",transform:"translateY(50%)"},children:(0,e.jsx)(db,{})}),f.length||o.length?(0,e.jsxs)(f9,{children:[f.length>0&&(0,e.jsx)(ga,{itemsRenderedPerBatch:A,items:[{id:null,elements:f}],onItemSelectToggle:u,onItemDrag:w,onClick:y,isItemSelected:x,svgCache:n}),(0,e.jsx)(ga,{itemsRenderedPerBatch:A,items:o,onItemSelectToggle:u,onItemDrag:w,onClick:z,isItemSelected:x,svgCache:n})]}):(0,e.jsxs)("div",{className:"library-menu-items__no-items",children:[(0,e.jsx)("div",{className:"library-menu-items__no-items__label",children:c8("library.noItems")}),(0,e.jsx)("div",{className:"library-menu-items__no-items__hint",children:p.length>0?c8("library.hint_emptyPrivateLibrary"):c8("library.hint_emptyLibrary")})]})]}),(0,e.jsxs)(e.Fragment,{children:[(p.length>0||f.length>0||o.length>0)&&(0,e.jsx)("div",{className:"library-menu-items-container__header library-menu-items-container__header--excal",children:c8("labels.excalidrawLib")}),p.length>0?(0,e.jsx)(f9,{children:(0,e.jsx)(ga,{itemsRenderedPerBatch:A,items:p,onItemSelectToggle:u,onItemDrag:w,onClick:z,isItemSelected:x,svgCache:n})}):o.length>0?(0,e.jsx)("div",{style:{margin:"1rem 0",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",width:"100%",fontSize:".9rem"},children:c8("library.noItems")}):null]}),q&&(0,e.jsx)(fP,{style:{padding:"16px 0",width:"100%"},id:h,libraryReturnUrl:i,theme:g,children:(0,e.jsx)(f5,{selectedItems:k,onSelectItems:j})})]})]})}var gd=O(!1),ge=({children:a})=>(0,e.jsx)("div",{className:"layer-ui__library",children:a}),gf=(0,L.memo)(({onInsertLibraryItems:a,pendingElements:b,onAddToLibrary:c,setAppState:d,libraryReturnUrl:f,library:g,id:h,theme:i,selectedItems:j,onSelectItems:k})=>{let[l]=cW(fG),m=(0,L.useCallback)(a=>{(async(a,b)=>{for(let b of(dw("element","addToLibrary","ui"),F.za))if(a.some(a=>a.type===b))return d({errorMessage:c8(`errors.libraryElementTypeError.${b}`)});let e=[{status:"unpublished",elements:a,id:(0,F.sc)(),created:Date.now()},...b];c(),g.setLibrary(e).catch(()=>{d({errorMessage:c8("alerts.errorAddingToLibrary")})})})(a,l.libraryItems)},[c,g,d,l.libraryItems]),n=(0,L.useMemo)(()=>l.libraryItems,[l]);if("loading"===l.status&&!l.isInitialized)return(0,e.jsx)(ge,{children:(0,e.jsx)("div",{className:"layer-ui__library-message",children:(0,e.jsxs)("div",{children:[(0,e.jsx)(db,{size:"2em"}),(0,e.jsx)("span",{children:c8("labels.libraryLoadingMessage")})]})})});let o=l.libraryItems.length>0||b.length>0;return(0,e.jsxs)(ge,{children:[(0,e.jsx)(gc,{isLoading:"loading"===l.status,libraryItems:n,onAddToLibrary:m,onInsertLibraryItems:a,pendingElements:b,id:h,libraryReturnUrl:f,theme:i,onSelectItems:k,selectedItems:j}),o&&(0,e.jsx)(fP,{className:"library-menu-control-buttons--at-bottom",style:{padding:"16px 12px 0 12px"},id:h,libraryReturnUrl:f,theme:i})]})}),gg=(a,b)=>({elements:a,pending:(0,F.vk)(a,{selectedElementIds:b},{includeBoundTextElement:!0,includeElementsInFrames:!0}),selectedElementIds:b}),gh=(0,L.memo)(()=>{let a=j9(),{onInsertElements:b}=a,c=ka(),d=L.default.useContext(dN),f=kf(),[g,h]=(0,L.useState)([]),i=(0,L.useMemo)(()=>a.library,[a.library]),j=((a,b)=>{let c=kd(),[d,e]=(0,L.useState)(()=>gg(c,a.selectedElementIds)),f=(0,L.useRef)(new Map);return(0,L.useEffect)(()=>{for(let a of d.pending)f.current.set(a.id,a.version)},[d.pending]),(0,L.useEffect)(()=>{"up"===b.state.cursorButton&&"selection"===b.state.activeTool.type&&e(d=>{if(!(0,F.Hb)(d.selectedElementIds,a.selectedElementIds))return f.current.clear(),gg(c,a.selectedElementIds);let e=b.scene.getNonDeletedElementsMap();for(let b of Object.keys(a.selectedElementIds)){let d=e.get(b)?.version;if(d&&d!==f.current.get(b))return gg(c,a.selectedElementIds)}return d})},[b,b.state.cursorButton,b.state.activeTool.type,a.selectedElementIds,c]),d.pending})(d,a),k=(0,L.useCallback)(a=>{b(fK(a))},[b]),l=(0,L.useCallback)(()=>{f({selectedElementIds:{},selectedGroupIds:{},activeEmbeddable:null})},[f]);return(0,e.jsx)(gf,{pendingElements:j,onInsertLibraryItems:k,onAddToLibrary:l,setAppState:f,libraryReturnUrl:c.libraryReturnUrl,library:i,id:a.id,theme:d.theme,selectedItems:g,onSelectItems:h})}),gi=a=>{let[b,c]=(()=>{let[a,b]=(0,L.useState)(null);return[a,(0,L.useCallback)(a=>b(a),[])]})(),[d]=(0,L.useState)(document.activeElement),{id:f}=kc(),g=kb().viewport.isMobile;(0,L.useEffect)(()=>{if(!b)return;let c=(0,F.Gb)(b);setTimeout(()=>{c.length>0&&!1!==a.autofocus&&(c[1]||c[0]).focus()});let d=a=>{if(a.key===F.hg.TAB){let c=(0,F.Gb)(b),{activeElement:d}=document,e=c.findIndex(a=>a===d);0===e&&a.shiftKey?(c[c.length-1].focus(),a.preventDefault()):e!==c.length-1||a.shiftKey||(c[0].focus(),a.preventDefault())}};return b.addEventListener("keydown",d),()=>b.removeEventListener("keydown",d)},[b,a.autofocus]);let h=kf(),i=cX(gd),j=()=>{h({openMenu:null}),i(!1),d.focus(),a.onCloseRequest()};return(0,e.jsx)(fA,{className:(0,av.default)("Dialog",a.className,{"Dialog--fullscreen":g}),labelledBy:"dialog-title",maxWidth:function(a){if(a&&"number"==typeof a)return a;switch(a){case"small":return 550;case"wide":return 1024;default:return 800}}(a.size),onCloseRequest:j,closeOnClickOutside:a.closeOnClickOutside,children:(0,e.jsxs)(dU,{ref:c,children:[a.title&&(0,e.jsx)("h2",{id:`${f}-dialog-title`,className:"Dialog__title",children:(0,e.jsx)("span",{className:"Dialog__titleContent",children:a.title})}),g&&(0,e.jsx)("button",{className:"Dialog__close",onClick:j,title:c8("buttons.close"),"aria-label":c8("buttons.close"),type:"button",children:F.ge}),(0,e.jsx)("div",{className:"Dialog__content",children:a.children})]})})},gj=({type:a="button",onSelect:b,selected:c,children:d,className:f="",...g})=>(0,e.jsx)("button",{onClick:(0,F.Ib)(g.onClick,a=>{b()}),type:a,className:(0,av.default)("excalidraw-button",f,{selected:c}),...g,children:d}),gk=(0,L.forwardRef)(({onChange:a,label:b,fullWidth:c,placeholder:d,readonly:f,selectOnRender:g,onKeyDown:h,isRedacted:i=!1,icon:j,className:k,...l},m)=>{let n=(0,L.useRef)(null);(0,L.useImperativeHandle)(m,()=>n.current),(0,L.useLayoutEffect)(()=>{g&&(n.current?.focus(),n.current?.select())},[g]);let[o,p]=(0,L.useState)(!1);return(0,e.jsxs)("div",{className:(0,av.default)("ExcTextField",k,{"ExcTextField--fullWidth":c,"ExcTextField--hasIcon":!!j}),onClick:()=>{n.current?.focus()},children:[j,b&&(0,e.jsx)("div",{className:"ExcTextField__label",children:b}),(0,e.jsxs)("div",{className:(0,av.default)("ExcTextField__input",{"ExcTextField__input--readonly":f}),children:[(0,e.jsx)("input",{className:(0,av.default)({"is-redacted":"value"in l&&l.value&&i&&!o}),readOnly:f,value:"value"in l?l.value:void 0,defaultValue:"defaultValue"in l?l.defaultValue:void 0,placeholder:d,ref:n,onChange:b=>a?.(b.target.value),onKeyDown:h}),i&&(0,e.jsx)(gj,{onSelect:()=>p(!o),style:{border:0,userSelect:"none"},children:o?F.mf:F.lf})]})]})}),gl={toggleTheme:[(0,F.kb)("Shift+Alt+D")],saveScene:[(0,F.kb)("CtrlOrCmd+S")],loadScene:[(0,F.kb)("CtrlOrCmd+O")],clearCanvas:[(0,F.kb)("CtrlOrCmd+Delete")],imageExport:[(0,F.kb)("CtrlOrCmd+Shift+E")],commandPalette:[(0,F.kb)("CtrlOrCmd+/"),(0,F.kb)("CtrlOrCmd+Shift+P")],cut:[(0,F.kb)("CtrlOrCmd+X")],copy:[(0,F.kb)("CtrlOrCmd+C")],paste:[(0,F.kb)("CtrlOrCmd+V")],copyStyles:[(0,F.kb)("CtrlOrCmd+Alt+C")],pasteStyles:[(0,F.kb)("CtrlOrCmd+Alt+V")],selectAll:[(0,F.kb)("CtrlOrCmd+A")],deleteSelectedElements:[(0,F.kb)("Delete")],duplicateSelection:[(0,F.kb)("CtrlOrCmd+D"),(0,F.kb)(`Alt+${c8("helpDialog.drag")}`)],sendBackward:[(0,F.kb)("CtrlOrCmd+[")],bringForward:[(0,F.kb)("CtrlOrCmd+]")],sendToBack:[F.l?(0,F.kb)("CtrlOrCmd+Alt+["):(0,F.kb)("CtrlOrCmd+Shift+[")],bringToFront:[F.l?(0,F.kb)("CtrlOrCmd+Alt+]"):(0,F.kb)("CtrlOrCmd+Shift+]")],copyAsPng:[(0,F.kb)("Shift+Alt+C")],group:[(0,F.kb)("CtrlOrCmd+G")],ungroup:[(0,F.kb)("CtrlOrCmd+Shift+G")],gridMode:[(0,F.kb)("CtrlOrCmd+'")],zenMode:[(0,F.kb)("Alt+Z")],objectsSnapMode:[(0,F.kb)("Alt+S")],stats:[(0,F.kb)("Alt+/")],addToLibrary:[],flipHorizontal:[(0,F.kb)("Shift+H")],flipVertical:[(0,F.kb)("Shift+V")],viewMode:[(0,F.kb)("Alt+R")],hyperlink:[(0,F.kb)("CtrlOrCmd+K")],toggleElementLock:[(0,F.kb)("CtrlOrCmd+Shift+L")],resetZoom:[(0,F.kb)("CtrlOrCmd+0")],zoomOut:[(0,F.kb)("CtrlOrCmd+-")],zoomIn:[(0,F.kb)("CtrlOrCmd++")],zoomToFitSelection:[(0,F.kb)("Shift+3")],zoomToFit:[(0,F.kb)("Shift+1")],zoomToFitSelectionInViewport:[(0,F.kb)("Shift+2")],toggleEraserTool:[(0,F.kb)("E")],toggleHandTool:[(0,F.kb)("H")],setFrameAsActiveTool:[(0,F.kb)("F")],saveFileToDisk:[(0,F.kb)("CtrlOrCmd+S")],saveToActiveFile:[(0,F.kb)("CtrlOrCmd+S")],toggleShortcuts:[(0,F.kb)("?")],searchMenu:[(0,F.kb)("CtrlOrCmd+F")],wrapSelectionInFrame:[]},gm=(a,b=0)=>{let c=gl[a];return c&&c.length>0?c[b]||c[0]:""},gn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),go=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,gp={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"E",æ:"e",Þ:"T",þ:"t",ß:"s",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"I",ij:"i",Œ:"E",œ:"e",ʼn:"n",ſ:"s"},gq=a=>a.replace(go,a=>gp[a]||a).replace(gn,""),gr=L.default.createContext(null),gs=as(),gt=(a,b)=>{let c=b[0]?.type||null;for(let a of b)if(a.type!==c){c=null;break}return(0,F.Wi)(a.activeTool.type)&&"image"!==a.activeTool.type&&"image"!==c&&"frame"!==c&&"magicframe"!==c||b.some(a=>(0,F.Wi)(a.type))},gu=(a,b)=>(0,F.Vi)(a.activeTool.type)||b.some(a=>(0,F.Vi)(a.type)),gv=({appState:a,elementsMap:b,renderAction:c,app:d})=>{let f=(0,F.wk)(b,a),g=!1;2===f.length&&((0,F.mc)(f[0])||(0,F.mc)(f[1]))&&(g=!0);let h=!!(a.editingTextElement||a.newElement),i=kb(),j="rtl"===document.documentElement.getAttribute("dir"),k=(0,F.Vi)(a.activeTool.type)&&!(0,F.sb)(a.currentItemBackgroundColor)||f.some(a=>(0,F.Vi)(a.type)&&!(0,F.sb)(a.backgroundColor)),l=1===f.length||g,m=!a.editingLinearElement&&1===f.length&&(0,F.cc)(f[0])&&!(0,F.ec)(f[0]),n=!a.croppingElementId&&1===f.length&&(0,F.Wb)(f[0]),o=!g&&e1(a,d);return(0,e.jsxs)("div",{className:"panelColumn",children:[(0,e.jsx)("div",{children:gt(a,f)&&c("changeStrokeColor")}),gu(a,f)&&(0,e.jsx)("div",{children:c("changeBackgroundColor")}),k&&c("changeFillStyle"),((0,F.Xi)(a.activeTool.type)||f.some(a=>(0,F.Xi)(a.type)))&&c("changeStrokeWidth"),("freedraw"===a.activeTool.type||f.some(a=>"freedraw"===a.type))&&c("changeStrokeShape"),((0,F.Yi)(a.activeTool.type)||f.some(a=>(0,F.Yi)(a.type)))&&(0,e.jsxs)(e.Fragment,{children:[c("changeStrokeStyle"),c("changeSloppiness")]}),((0,F.Zi)(a.activeTool.type)||f.some(a=>(0,F.Zi)(a.type)))&&(0,e.jsx)(e.Fragment,{children:c("changeRoundness")}),((0,F._i)(a.activeTool.type)||f.some(a=>(0,F._i)(a.type)))&&(0,e.jsx)(e.Fragment,{children:c("changeArrowType")}),("text"===a.activeTool.type||f.some(F._b))&&(0,e.jsxs)(e.Fragment,{children:[c("changeFontFamily"),c("changeFontSize"),("text"===a.activeTool.type||(0,F.Ej)(f,b))&&c("changeTextAlign")]}),(0,F.Dj)(f,b)&&c("changeVerticalAlign"),((0,F.$i)(a.activeTool.type)||f.some(a=>(0,F.$i)(a.type)))&&(0,e.jsx)(e.Fragment,{children:c("changeArrowhead")}),c("changeOpacity"),(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.layers")}),(0,e.jsxs)("div",{className:"buttonList",children:[c("sendToBack"),c("sendBackward"),c("bringForward"),c("bringToFront")]})]}),o&&!g&&(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.align")}),(0,e.jsxs)("div",{className:"buttonList",children:[j?(0,e.jsxs)(e.Fragment,{children:[c("alignRight"),c("alignHorizontallyCentered"),c("alignLeft")]}):(0,e.jsxs)(e.Fragment,{children:[c("alignLeft"),c("alignHorizontallyCentered"),c("alignRight")]}),f.length>2&&c("distributeHorizontally"),(0,e.jsx)("div",{style:{flexBasis:"100%",height:0}}),(0,e.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".5rem",marginTop:"-0.5rem"},children:[c("alignTop"),c("alignVerticallyCentered"),c("alignBottom"),f.length>2&&c("distributeVertically")]})]})]}),!h&&f.length>0&&(0,e.jsxs)("fieldset",{children:[(0,e.jsx)("legend",{children:c8("labels.actions")}),(0,e.jsxs)("div",{className:"buttonList",children:[!i.editor.isMobile&&c("duplicateSelection"),!i.editor.isMobile&&c("deleteSelectedElements"),c("group"),c("ungroup"),l&&c("hyperlink"),n&&c("cropEditor"),m&&c("toggleLinearEditor")]})]})]})},gw=({activeTool:a,appState:b,app:c,UIOptions:d})=>{let[f,g]=(0,L.useState)(!1),h="frame"===a.type,i="laser"===a.type,j="embeddable"===a.type,{TTDDialogTriggerTunnel:k}=L.default.useContext(gr);return(0,e.jsxs)(e.Fragment,{children:[F.rg.map(({value:f,icon:g,key:h,numericKey:i,fillable:j},k)=>{if(d.tools?.[f]===!1)return null;let l=c8(`toolBar.${f}`),m=h&&(0,F.Ya)("string"==typeof h?h:h[0]),n=m?`${m} ${c8("helpDialog.or")} ${i}`:`${i}`;return(0,e.jsx)(de,{className:(0,av.default)("Shape",{fillable:j}),type:"radio",icon:g,checked:a.type===f,name:"editor-current-shape",title:`${(0,F.Ya)(l)} \u2014 ${n}`,keyBindingLabel:i||m,"aria-label":(0,F.Ya)(l),"aria-keyshortcuts":n,"data-testid":`toolbar-${f}`,onPointerDown:({pointerType:a})=>{b.penDetected||"pen"!==a||c.togglePenMode(!0)},onChange:({pointerType:a})=>{b.activeTool.type!==f&&dw("toolbar",f,"ui"),"image"===f?c.setActiveTool({type:f,insertOnCanvasDirectly:"mouse"!==a}):c.setActiveTool({type:f})}},f)}),(0,e.jsx)("div",{className:"App-toolbar__divider"}),(0,e.jsxs)(f3,{open:f,children:[(0,e.jsx)(f3.Trigger,{className:(0,av.default)("App-toolbar__extra-tools-trigger",{"App-toolbar__extra-tools-trigger--selected":h||j||i&&!c.props.isCollaborating}),onToggle:()=>g(!f),title:c8("toolBar.extraTools"),children:F.ef}),(0,e.jsxs)(f3.Content,{onClickOutside:()=>g(!1),onSelect:()=>g(!1),className:"App-toolbar__extra-tools-dropdown",children:[(0,e.jsx)(f3.Item,{onSelect:()=>c.setActiveTool({type:"frame"}),icon:F.ff,shortcut:F.hg.F.toLocaleUpperCase(),"data-testid":"toolbar-frame",selected:h,children:c8("toolBar.frame")}),(0,e.jsx)(f3.Item,{onSelect:()=>c.setActiveTool({type:"embeddable"}),icon:F.vd,"data-testid":"toolbar-embeddable",selected:j,children:c8("toolBar.embeddable")}),(0,e.jsx)(f3.Item,{onSelect:()=>c.setActiveTool({type:"laser"}),icon:F.if,"data-testid":"toolbar-laser",selected:i,shortcut:F.hg.K.toLocaleUpperCase(),children:c8("toolBar.laser")}),(0,e.jsx)("div",{style:{margin:"6px 0",fontSize:14,fontWeight:600},children:"Generate"}),!1!==c.props.aiEnabled&&(0,e.jsx)(k.Out,{}),(0,e.jsx)(f3.Item,{onSelect:()=>c.setOpenDialog({name:"ttd",tab:"mermaid"}),icon:F.gf,"data-testid":"toolbar-embeddable",children:c8("toolBar.mermaidToExcalidraw")}),!1!==c.props.aiEnabled&&c.plugins.diagramToCode&&(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)(f3.Item,{onSelect:()=>c.onMagicframeToolSelect(),icon:F.jf,"data-testid":"toolbar-magicframe",children:[c8("toolBar.magicframe"),(0,e.jsx)(f3.Item.Badge,{children:"AI"})]})})]})]})]})},gx=({renderAction:a,zoom:b})=>(0,e.jsx)(fN,{gap:1,className:F.E.ZOOM_ACTIONS,children:(0,e.jsxs)(fM,{align:"center",children:[a("zoomOut"),a("resetZoom"),a("zoomIn")]})}),gy=({renderAction:a,className:b})=>(0,e.jsxs)("div",{className:`undo-redo-buttons ${b}`,children:[(0,e.jsx)("div",{className:"undo-button-container",children:(0,e.jsx)(eu,{label:c8("buttons.undo"),children:a("undo")})}),(0,e.jsx)("div",{className:"redo-button-container",children:(0,e.jsxs)(eu,{label:c8("buttons.redo"),children:[" ",a("redo")]})})]}),gz=({actionManager:a,showExitZenModeBtn:b})=>(0,e.jsx)("button",{type:"button",className:(0,av.default)("disable-zen-mode",{"disable-zen-mode--visible":b}),onClick:()=>a.executeAction(fg),children:c8("buttons.exitZenMode")}),gA=({renderAction:a,className:b})=>(0,e.jsx)("div",{className:`finalize-button ${b}`,children:a("finalize",{size:"small"})}),gB=a=>{let b=(0,L.useRef)({userFn:a});return b.current.userFn=a,b.current.stableFn||(b.current.stableFn=(...a)=>b.current.userFn(...a)),b.current.stableFn},gC=O(null),gD=()=>{let[a,b]=cW(gC),c=kg();return a&&"clearCanvas"===a?(0,e.jsx)(fW,{onConfirm:()=>{c.executeAction(ev),b(null)},onCancel:()=>b(null),title:c8("clearCanvasDialog.title"),children:(0,e.jsxs)("p",{className:"clear-canvas__content",children:[" ",c8("alerts.clearReset")]})}):null},gE={};(0,K.c)(gE,{toggleTheme:()=>gF});var gF={...eA,category:"App",label:"Toggle theme",perform:({actionManager:a})=>{a.executeAction(eA,"commandPalette")}},gG=(0,F.$c)({name:"copyElementLink",label:"labels.copyElementLink",icon:F._e,trackEvent:{category:"element"},perform:async(a,b,c,d)=>{let e=(0,F.vk)(a,b);try{if(window.location){let c=(0,F.Zh)(e,b);return c?(await (0,F.oi)(d.props.generateLinkForSelection?d.props.generateLinkForSelection(c.id,c.type):(0,F.Yh)(c.id,c.type)),{appState:{toast:{message:c8("toast.elementLinkCopied"),closable:!0}},captureUpdate:F.Wg.EVENTUALLY}):{appState:b,elements:a,app:d,captureUpdate:F.Wg.EVENTUALLY}}}catch(a){console.error(a)}return{appState:b,elements:a,app:d,captureUpdate:F.Wg.EVENTUALLY}},predicate:(a,b)=>(0,F._h)((0,F.vk)(a,b))}),gH=(0,F.$c)({name:"linkToElement",label:"labels.linkToElement",icon:F.Pf,perform:(a,b,c,d)=>{let e=(0,F.vk)(a,b);return 1===e.length&&(0,F._h)(e)?{appState:{...b,openDialog:{name:"elementLinkSelector",sourceElementId:(0,F.vk)(a,b)[0].id}},captureUpdate:F.Wg.IMMEDIATELY}:{elements:a,appState:b,app:d,captureUpdate:F.Wg.EVENTUALLY}},predicate:(a,b,c,d)=>{let e=(0,F.vk)(a,b);return b.openDialog?.name!=="elementLinkSelector"&&1===e.length&&(0,F._h)(e)},trackEvent:!1}),gI=O(null),gJ="Export",gK="Tools",gL="Editor",gM="Elements",gN=({shortcut:a,className:b,children:c})=>{let d=a.replace("++","+$").split("+");return(0,e.jsxs)("div",{className:(0,av.default)("shortcut",b),children:[d.map((a,b)=>(0,e.jsx)("div",{className:"shortcut-wrapper",children:(0,e.jsx)("div",{className:"shortcut-key",children:"$"===a?"+":a})},a)),(0,e.jsx)("div",{className:"shortcut-desc",children:c})]})},gO=a=>!a.altKey&&a[F.hg.CTRL_OR_CMD]&&(a.shiftKey&&a.key.toLowerCase()===F.hg.P||a.key===F.hg.SLASH);function gP({customCommandPaletteItems:a}){let b=j9(),c=L.default.useContext(dN),d=kf(),f=ka(),g=kg(),[h,i]=cW(gI),[j,k]=(0,L.useState)(null),l=(0,L.useRef)(null),m=dQ({uiAppState:c,customCommandPaletteItems:a,appProps:f});(0,L.useEffect)(()=>{let{uiAppState:a,customCommandPaletteItems:c,appProps:e}=m,f=c=>{let d="";return c.label&&(d="function"==typeof c.label?c8(c.label(b.scene.getNonDeletedElements(),a,b)):c8(c.label)),d},j=c=>"function"==typeof c.icon?c.icon(a,b.scene.getNonDeletedElements()):c.icon,l=(a,b,c)=>{let d={label:f(a),icon:j(a),category:b,shortcut:gm(a.name),keywords:a.keywords,predicate:a.predicate,viewMode:a.viewMode,perform:()=>{g.executeAction(a,"commandPalette")}};return c?c(d,a):d};if(a&&b.scene&&g){let m=[g.actions.group,g.actions.ungroup,g.actions.cut,g.actions.copy,g.actions.deleteSelectedElements,g.actions.wrapSelectionInFrame,g.actions.copyStyles,g.actions.pasteStyles,g.actions.bringToFront,g.actions.bringForward,g.actions.sendBackward,g.actions.sendToBack,g.actions.alignTop,g.actions.alignBottom,g.actions.alignLeft,g.actions.alignRight,g.actions.alignVerticallyCentered,g.actions.alignHorizontallyCentered,g.actions.duplicateSelection,g.actions.flipHorizontal,g.actions.flipVertical,g.actions.zoomToFitSelection,g.actions.zoomToFitSelectionInViewport,g.actions.increaseFontSize,g.actions.decreaseFontSize,g.actions.toggleLinearEditor,g.actions.cropEditor,fw,gG,gH].map(a=>l(a,gM,(a,b)=>({...a,predicate:b.predicate?b.predicate:(a,b,c,d)=>(0,F.vk)(a,b).length>0}))),n=[g.actions.toggleHandTool,g.actions.setFrameAsActiveTool].map(a=>l(a,gK)),o=[g.actions.undo,g.actions.redo,g.actions.zoomIn,g.actions.zoomOut,g.actions.resetZoom,g.actions.zoomToFit,g.actions.zenMode,g.actions.viewMode,g.actions.gridMode,g.actions.objectsSnapMode,g.actions.toggleShortcuts,g.actions.selectAll,g.actions.toggleElementLock,g.actions.unlockAllElements,g.actions.stats].map(a=>l(a,gL)),p=[g.actions.saveToActiveFile,g.actions.saveFileToDisk,g.actions.copyAsPng,g.actions.copyAsSvg].map(a=>l(a,gJ)),q=[...m,...o,{label:f(ev),icon:j(ev),shortcut:gm(ev.name),category:gL,keywords:["delete","destroy"],viewMode:!1,perform:()=>{c_.set(gC,"clearCanvas")}},{label:c8("buttons.exportImage"),category:gJ,icon:F.Od,shortcut:gm("imageExport"),keywords:["export","image","png","jpeg","svg","clipboard","picture"],perform:()=>{d({openDialog:{name:"imageExport"}})}},...p,{label:c8("toolBar.library"),category:"App",icon:F.fd,viewMode:!1,perform:()=>{a.openSidebar?d({openSidebar:null}):d({openSidebar:{name:F.ya.name,tab:F.ya.defaultTab}})}},{label:c8("search.title"),category:"App",icon:F.pf,viewMode:!0,perform:()=>{g.executeAction(gS)}},{label:c8("labels.changeStroke"),keywords:["color","outline"],category:gM,icon:F.Nd,viewMode:!1,predicate:(a,b)=>{let c=(0,F.vk)(a,b);return c.length>0&&gt(b,c)},perform:()=>{d(a=>({openMenu:"shape"===a.openMenu?null:"shape",openPopup:"elementStroke"}))}},{label:c8("labels.changeBackground"),keywords:["color","fill"],icon:F.Nd,category:gM,viewMode:!1,predicate:(a,b)=>{let c=(0,F.vk)(a,b);return c.length>0&&gu(b,c)},perform:()=>{d(a=>({openMenu:"shape"===a.openMenu?null:"shape",openPopup:"elementBackground"}))}},{label:c8("labels.canvasBackground"),keywords:["color"],icon:F.Nd,category:gL,viewMode:!1,perform:()=>{d(a=>({openMenu:"canvas"===a.openMenu?null:"canvas",openPopup:"canvasBackground"}))}},...F.rg.reduce((a,c)=>{let{value:d,icon:f,key:g,numericKey:h}=c;if(e.UIOptions.tools?.[d]===!1)return a;let i=g&&(0,F.Ya)("string"==typeof g?g:g[0])||h,j={label:c8(`toolBar.${d}`),category:gK,shortcut:i,icon:f,keywords:["toolbar"],viewMode:!1,perform:({event:a})=>{"image"===d?b.setActiveTool({type:d,insertOnCanvasDirectly:"keydown"===a.type}):b.setActiveTool({type:d})}};return a.push(j),a},[]),...n,{label:c8("toolBar.lock"),category:gK,icon:a.activeTool.locked?F.kd:F.jd,shortcut:F.hg.Q.toLocaleUpperCase(),viewMode:!1,perform:()=>{b.toggleLock()}},{label:`${c8("labels.textToDiagram")}...`,category:gK,icon:F.of,viewMode:!1,predicate:e.aiEnabled,perform:()=>{d(a=>({...a,openDialog:{name:"ttd",tab:"text-to-diagram"}}))}},{label:`${c8("toolBar.mermaidToExcalidraw")}...`,category:gK,icon:F.gf,viewMode:!1,predicate:e.aiEnabled,perform:()=>{d(a=>({...a,openDialog:{name:"ttd",tab:"mermaid"}}))}},...c||[]].map(a=>({...a,icon:a.icon||F.tf,order:a.order??(a=>{switch(a){case"App":return 1;case gJ:return 2;case gL:return 3;case gK:return 4;case gM:return 5;case"Links":return 6;default:return 10}})(a.category),haystack:`${gq(a.label.toLocaleLowerCase())} ${a.keywords?.join(" ")||""}`}));k(q),i(q.find(a=>a.label===h?.label)??null)}},[m,b,g,k,h?.label,i,d]);let[n,o]=(0,L.useState)(""),[p,q]=(0,L.useState)(null),[r,s]=(0,L.useState)({}),t=a=>{d({openDialog:null},a),o("")},u=(a,b)=>{c.openDialog?.name==="commandPalette"&&(b.stopPropagation(),b.preventDefault(),document.body.classList.add("excalidraw-animations-disabled"),t(()=>{a.perform({actionManager:g,event:b}),i(a),requestAnimationFrame(()=>{document.body.classList.remove("excalidraw-animations-disabled")})}))},v=gB(a=>(!1!==a.viewMode||!c.viewModeEnabled)&&("function"==typeof a.predicate?a.predicate(b.scene.getNonDeletedElements(),c,f,b):void 0===a.predicate||a.predicate)),w=gB(a=>{let b=(0,F.ab)(a.target)||gO(a)||a.key===F.hg.ESCAPE;if(b&&a.key!==F.hg.ARROW_UP&&a.key!==F.hg.ARROW_DOWN&&a.key!==F.hg.ENTER)return;let c=Object.values(r).flat(),d=h&&!n&&v(h);if(a.key===F.hg.ARROW_UP){let b;a.preventDefault();let e=c.findIndex(a=>a.label===p?.label);if(d){if(0===e)return void q(h);if(p===h){let a=c[c.length-1];a&&q(a);return}}b=-1===e||0===e?c.length-1:(e-1)%c.length;let f=c[b];f&&q(f);return}if(a.key===F.hg.ARROW_DOWN){a.preventDefault();let b=c.findIndex(a=>a.label===p?.label);if(d){if(!p||b===c.length-1)return void q(h);if(p===h){let a=c[0];a&&q(a);return}}let e=(b+1)%c.length,f=c[e];f&&q(f);return}if(a.key===F.hg.ENTER&&p&&setTimeout(()=>{u(p,a)}),!b){if(a.stopPropagation(),/^[a-zA-Z0-9]$/.test(a.key))return void l?.current?.focus();a.preventDefault()}});return(0,L.useEffect)(()=>(window.addEventListener("keydown",w,{capture:!0}),()=>window.removeEventListener("keydown",w,{capture:!0})),[w]),(0,L.useEffect)(()=>{if(!j)return;let a=a=>{let b={};for(let c of a)b[c.category]?b[c.category].push(c):b[c.category]=[c];return b},b=j.filter(v).sort((a,b)=>a.order-b.order),c=!n&&h&&v(h);if(!n){s(a(c?b.filter(a=>a.label!==h?.label):b)),q(c?h:b[0]||null);return}let d=gq(n.toLocaleLowerCase().replace(/[<>_| -]/g,""));s(a(b=bP.default.filter(d,b,{extract:a=>a.haystack}).sort((a,b)=>b.score-a.score).map(a=>a.original))),q(b[0]??null)},[n,j,v,h]),(0,e.jsxs)(gi,{onCloseRequest:()=>t(),closeOnClickOutside:!0,title:!1,size:720,autofocus:!0,className:"command-palette-dialog",children:[(0,e.jsx)(gk,{value:n,placeholder:c8("commandPalette.search.placeholder"),onChange:a=>{o(a)},selectOnRender:!0,ref:l}),!b.device.viewport.isMobile&&(0,e.jsxs)("div",{className:"shortcuts-wrapper",children:[(0,e.jsx)(gN,{shortcut:"↑↓",children:c8("commandPalette.shortcuts.select")}),(0,e.jsx)(gN,{shortcut:"↵",children:c8("commandPalette.shortcuts.confirm")}),(0,e.jsx)(gN,{shortcut:(0,F.kb)("Esc"),children:c8("commandPalette.shortcuts.close")})]}),(0,e.jsxs)("div",{className:"commands",children:[h&&!n&&(0,e.jsxs)("div",{className:"command-category",children:[(0,e.jsxs)("div",{className:"command-category-title",children:[c8("commandPalette.recents"),(0,e.jsx)("div",{className:"icon",style:{marginLeft:"6px"},children:F.qf})]}),(0,e.jsx)(gQ,{command:h,isSelected:h.label===p?.label,onClick:a=>u(h,a),disabled:!v(h),onMouseMove:()=>q(h),showShortcut:!b.device.viewport.isMobile,appState:c})]}),Object.keys(r).length>0?Object.keys(r).map((a,d)=>(0,e.jsxs)("div",{className:"command-category",children:[(0,e.jsx)("div",{className:"command-category-title",children:a}),r[a].map(a=>(0,e.jsx)(gQ,{command:a,isSelected:a.label===p?.label,onClick:b=>u(a,b),onMouseMove:()=>q(a),showShortcut:!b.device.viewport.isMobile,appState:c},a.label))]},a)):j?(0,e.jsxs)("div",{className:"no-match",children:[(0,e.jsx)("div",{className:"icon",children:F.pf})," ",c8("commandPalette.search.noMatch")]}):null]})]})}Object.assign(a=>{let b=L.default.useContext(dN),c=kf();return(0,L.useEffect)(()=>{let a=a=>{gO(a)&&(a.preventDefault(),a.stopPropagation(),c(a=>{let b=a.openDialog?.name==="commandPalette"?null:{name:"commandPalette"};return b&&dw("command_palette","open","shortcut"),{openDialog:b}}))};return window.addEventListener("keydown",a,{capture:!0}),()=>window.removeEventListener("keydown",a,{capture:!0})},[c]),b.openDialog?.name!=="commandPalette"?null:(0,e.jsx)(gP,{...a})},{defaultItems:gE});var gQ=({command:a,isSelected:b,disabled:c,onMouseMove:d,onClick:f,showShortcut:g,appState:h})=>{let i=()=>{};return(0,e.jsxs)("div",{className:(0,av.default)("command-item",{"item-selected":b,"item-disabled":c}),ref:a=>{b&&!c&&a?.scrollIntoView?.({block:"nearest"})},onClick:c?i:f,onMouseMove:c?i:d,title:c?c8("commandPalette.itemNotAvailable"):"",children:[(0,e.jsxs)("div",{className:"name",children:[a.icon&&(0,e.jsx)(d_,{icon:"function"==typeof a.icon?a.icon(h):a.icon}),a.label]}),g&&a.shortcut&&(0,e.jsx)(gN,{shortcut:a.shortcut})]})},gR=(0,F.$c)({name:"toggleLinearEditor",category:gM,label:(a,b,c)=>c.scene.getSelectedElements({selectedElementIds:b.selectedElementIds})[0]?.type==="arrow"?"labels.lineEditor.editArrow":"labels.lineEditor.edit",keywords:["line"],trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);return!!(!b.editingLinearElement&&1===e.length&&(0,F.cc)(e[0])&&!(0,F.ec)(e[0]))},perform(a,b,c,d){let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0})[0],f=b.editingLinearElement?.elementId===e.id?null:new F.pj(e);return{appState:{...b,editingLinearElement:f},captureUpdate:F.Wg.IMMEDIATELY}},PanelComponent:({appState:a,updateData:b,app:c})=>{let d=c8("arrow"===c.scene.getSelectedElements({selectedElementIds:a.selectedElementIds})[0].type?"labels.lineEditor.editArrow":"labels.lineEditor.edit");return(0,e.jsx)(de,{type:"button",icon:F.Hf,title:d,"aria-label":d,onClick:()=>b(null)})}}),gS=(0,F.$c)({name:"searchMenu",icon:F.pf,keywords:["search","find"],label:"search.title",viewMode:!0,trackEvent:{category:"search_menu",action:"toggle",predicate:a=>a.gridModeEnabled},perform(a,b,c,d){if(b.openSidebar?.name===F.ya.name&&b.openSidebar.tab===F.xa){let a=d.excalidrawContainerValue.container?.querySelector(`.${F.E.SEARCH_MENU_INPUT_WRAPPER} input`);return a?.matches(":focus")?{appState:{...b,openSidebar:null},captureUpdate:F.Wg.EVENTUALLY}:(a?.focus(),a?.select(),!1)}return{appState:{...b,openSidebar:{name:F.ya.name,tab:F.xa},openDialog:null},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.gridModeEnabled,predicate:(a,b,c)=>void 0===c.gridModeEnabled,keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.F}),gT=(0,F.$c)({name:"cropEditor",label:"helpDialog.cropStart",icon:F.Of,viewMode:!0,trackEvent:{category:"menu"},keywords:["image","crop"],perform(a,b,c,d){let e=d.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!0})[0];return{appState:{...b,isCropping:!1,croppingElementId:e.id},captureUpdate:F.Wg.IMMEDIATELY}},predicate:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b);return!!(!b.croppingElementId&&1===e.length&&(0,F.Wb)(e[0]))},PanelComponent:({appState:a,updateData:b,app:c})=>{let d=c8("helpDialog.cropStart");return(0,e.jsx)(de,{type:"button",icon:F.Of,title:d,"aria-label":d,onClick:()=>b(null)})}}),gU=class{constructor(a=!0,b=!0){this.isUndoStackEmpty=a,this.isRedoStackEmpty=b}},gV=class a{constructor(){(0,K.d)(this,"onHistoryChangedEmitter",new F.Vg),(0,K.d)(this,"undoStack",[]),(0,K.d)(this,"redoStack",[])}get isUndoStackEmpty(){return 0===this.undoStack.length}get isRedoStackEmpty(){return 0===this.redoStack.length}clear(){this.undoStack.length=0,this.redoStack.length=0}record(a,b){let c=gW.create(b,a);c.isEmpty()||(this.undoStack.push(c.inverse()),c.elementsChange.isEmpty()||(this.redoStack.length=0),this.onHistoryChangedEmitter.trigger(new gU(this.isUndoStackEmpty,this.isRedoStackEmpty)))}undo(b,c,d){return this.perform(b,c,d,()=>a.pop(this.undoStack),c=>a.push(this.redoStack,c,b))}redo(b,c,d){return this.perform(b,c,d,()=>a.pop(this.redoStack),c=>a.push(this.undoStack,c,b))}perform(a,b,c,d,e){try{let f=d();if(null===f)return;let g=a,h=b,i=!1;for(;f;){try{[g,h,i]=f.applyTo(g,h,c)}finally{e(f)}if(i)break;f=d()}return[g,h]}finally{this.onHistoryChangedEmitter.trigger(new gU(this.isUndoStackEmpty,this.isRedoStackEmpty))}}static pop(a){if(!a.length)return null;let b=a.pop();return void 0!==b?b:null}static push(a,b,c){let d=b.inverse().applyLatestChanges(c);return a.push(d)}},gW=class a{constructor(a,b){this.appStateChange=a,this.elementsChange=b}static create(b,c){return new a(b,c)}inverse(){return new a(this.appStateChange.inverse(),this.elementsChange.inverse())}applyTo(a,b,c){let[d,e]=this.elementsChange.applyTo(a,c.elements),[f,g]=this.appStateChange.applyTo(b,d);return[d,f,e||g]}applyLatestChanges(b){let c=this.elementsChange.applyLatestChanges(b);return a.create(this.appStateChange,c)}isEmpty(){return this.appStateChange.isEmpty()&&this.elementsChange.isEmpty()}},gX=(a,b)=>{let[c,d]=(0,L.useState)(b);return(0,L.useEffect)(()=>{let b=a.on(a=>{d(a)});return()=>{b()}},[a]),c},gY=(a,b,c)=>{if(!b.multiElement&&!b.resizingElement&&!b.editingTextElement&&!b.newElement&&!b.selectedElementsAreBeingDragged&&!b.selectionElement&&!a.flowChartCreator.isCreatingChart){let a=c();if(!a)return{captureUpdate:F.Wg.EVENTUALLY};let[b,d]=a;return{appState:d,elements:Array.from(b.values()),captureUpdate:F.Wg.NEVER}}return{captureUpdate:F.Wg.EVENTUALLY}},gZ=(a,b,c,d,e,f)=>{if(a.trackEvent)try{"object"==typeof a.trackEvent&&(!a.trackEvent.predicate||a.trackEvent.predicate(c,d,f))&&dw(a.trackEvent.category,a.trackEvent.action||a.name,`${b} (${e.device.editor.isMobile?"mobile":"desktop"})`)}catch(a){console.error("error while logging action:",a)}},g$=class{constructor(a,b,c,d){(0,K.d)(this,"actions",{}),(0,K.d)(this,"updater"),(0,K.d)(this,"getAppState"),(0,K.d)(this,"getElementsIncludingDeleted"),(0,K.d)(this,"app"),(0,K.d)(this,"renderAction",(a,b)=>{let c=this.app.props.UIOptions.canvasActions;if(this.actions[a]&&"PanelComponent"in this.actions[a]&&(!(a in c)||c[a])){let c=this.actions[a],d=c.PanelComponent;d.displayName="PanelComponent";let f=this.getElementsIncludingDeleted(),g=this.getAppState(),h=a=>{gZ(c,"ui",g,f,this.app,a),this.updater(c.perform(this.getElementsIncludingDeleted(),this.getAppState(),a,this.app))};return(0,e.jsx)(d,{elements:this.getElementsIncludingDeleted(),appState:this.getAppState(),updateData:h,appProps:this.app.props,app:this.app,data:b})}return null}),(0,K.d)(this,"isActionEnabled",a=>{let b=this.getElementsIncludingDeleted(),c=this.getAppState();return!a.predicate||a.predicate(b,c,this.app.props,this.app)}),this.updater=b=>{if(!(0,F.Fb)(b))return a(b);b.then(b=>a(b))},this.getAppState=b,this.getElementsIncludingDeleted=c,this.app=d}registerAction(a){this.actions[a.name]=a}registerAll(a){a.forEach(a=>this.registerAction(a))}handleKeyDown(a){let b=this.app.props.UIOptions.canvasActions,c=Object.values(this.actions).sort((a,b)=>(b.keyPriority||0)-(a.keyPriority||0)).filter(c=>(!(c.name in b)||b[c.name])&&c.keyTest&&c.keyTest(a,this.getAppState(),this.getElementsIncludingDeleted(),this.app));if(1!==c.length)return c.length>1&&console.warn("Canceling as multiple actions match this shortcut",c),!1;let d=c[0];if(this.getAppState().viewModeEnabled&&!0!==d.viewMode)return!1;let e=this.getElementsIncludingDeleted(),f=this.getAppState();return gZ(d,"keyboard",f,e,this.app,null),a.preventDefault(),a.stopPropagation(),this.updater(c[0].perform(e,f,null,this.app)),!0}executeAction(a,b="api",c=null){let d=this.getElementsIncludingDeleted(),e=this.getAppState();gZ(a,b,e,d,this.app,c),this.updater(a.perform(d,e,c,this.app))}},g_=a=>{let b=Array.from(a.values());return{x:g1(b,a=>a.x)/b.length,y:g1(b,a=>a.y)/b.length}},g0=([a,b])=>Math.hypot(a.x-b.x,a.y-b.y),g1=(a,b)=>a.reduce((a,c)=>a+b(c),0),g2=({children:a,left:b,top:c,onCloseRequest:d,fitInViewport:f=!1,offsetLeft:g=0,offsetTop:h=0,viewportWidth:i=window.innerWidth,viewportHeight:j=window.innerHeight})=>{let k=(0,L.useRef)(null);(0,L.useEffect)(()=>{let a=k.current;if(!a)return;a.contains(document.activeElement)||a.focus();let b=b=>{if(b.key===F.hg.TAB){let c=(0,F.Gb)(a),{activeElement:d}=document,e=c.findIndex(a=>a===d);d===a?(b.shiftKey?c[c.length-1]?.focus():c[0].focus(),b.preventDefault(),b.stopImmediatePropagation()):0===e&&b.shiftKey?(c[c.length-1]?.focus(),b.preventDefault(),b.stopImmediatePropagation()):e!==c.length-1||b.shiftKey||(c[0]?.focus(),b.preventDefault(),b.stopImmediatePropagation())}};return a.addEventListener("keydown",b),()=>a.removeEventListener("keydown",b)},[]);let l=(0,L.useRef)(null);return(0,L.useLayoutEffect)(()=>{if(f&&k.current&&null!=c&&null!=b){let a=k.current,{width:d,height:e}=a.getBoundingClientRect();(l.current?.top!==c||l.current?.left!==b)&&(l.current={top:c,left:b},d>=i?(a.style.width=`${i}px`,a.style.left="0px",a.style.overflowX="scroll"):b+d-g>i?a.style.left=`${i-d-10}px`:a.style.left=`${b}px`,e>=j?(a.style.height=`${j-20}px`,a.style.top="10px",a.style.overflowY="scroll"):c+e-h>j?a.style.top=`${j-e}px`:a.style.top=`${c}px`)}},[c,b,f,i,j,g,h]),(0,L.useEffect)(()=>{if(d){let a=a=>{k.current?.contains(a.target)||(0,aw.unstable_batchedUpdates)(()=>d(a))};return document.addEventListener("pointerdown",a,!1),()=>document.removeEventListener("pointerdown",a,!1)}},[d]),(0,e.jsx)("div",{className:"popover",ref:k,tabIndex:-1,children:a})},g3="separator",g4=L.default.memo(({actionManager:a,items:b,top:c,left:d,onClose:f})=>{let g=ke(),h=kd(),i=b.reduce((b,c)=>(c&&(c===g3||!c.predicate||c.predicate(h,g,a.app.props,a.app))&&b.push(c),b),[]);return(0,e.jsx)(g2,{onCloseRequest:()=>{f()},top:c,left:d,fitInViewport:!0,offsetLeft:g.offsetLeft,offsetTop:g.offsetTop,viewportWidth:g.width,viewportHeight:g.height,children:(0,e.jsx)("ul",{className:"context-menu",onContextMenu:a=>a.preventDefault(),children:i.map((b,c)=>{if(b===g3)return i[c-1]&&i[c-1]!==g3?(0,e.jsx)("hr",{className:"context-menu-item-separator"},c):null;let d=b.name,j="";return b.label&&(j="function"==typeof b.label?c8(b.label(h,g,a.app)):c8(b.label)),(0,e.jsx)("li",{"data-testid":d,onClick:()=>{f(()=>{a.executeAction(b,"contextMenu")})},children:(0,e.jsxs)("button",{type:"button",className:(0,av.default)("context-menu-item",{dangerous:"deleteSelectedElements"===d,checkmark:b.checked?.(g)}),children:[(0,e.jsx)("div",{className:"context-menu-item__label",children:j}),(0,e.jsx)("kbd",{className:"context-menu-item__shortcut",children:d?gm(d):""})]})},c)})})})}),g5=({children:a,onClose:b})=>{let[c,d]=(0,L.useState)(!!a),{container:f}=kc(),g=L.default.useCallback(()=>{d(!1),b&&b(),f?.focus()},[b,f]);return(0,e.jsx)(e.Fragment,{children:c&&(0,e.jsx)(gi,{size:"small",onCloseRequest:g,title:c8("errorDialog.title"),children:(0,e.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:a})})})},g6=function({onChange:a,value:b,choices:c,name:d}){return(0,e.jsx)("div",{className:"RadioGroup",children:c.map(c=>(0,e.jsxs)("div",{className:(0,av.default)("RadioGroup__choice",{active:c.value===b}),title:c.ariaLabel,children:[(0,e.jsx)("input",{name:d,type:"radio",checked:c.value===b,onChange:()=>a(c.value),"aria-label":c.ariaLabel}),c.label]},String(c.value)))})},g7=({title:a,name:b,checked:c,onChange:d,disabled:f=!1})=>(0,e.jsx)("div",{className:(0,av.default)("Switch",{toggled:c,disabled:f}),children:(0,e.jsx)("input",{name:b,id:b,title:a,type:"checkbox",checked:c,disabled:f,onChange:()=>d(!c),onKeyDown:a=>{" "===a.key&&d(!c)}})}),g8=(0,L.forwardRef)(({children:a,icon:b,onClick:c,label:d,variant:f="filled",color:g="primary",size:h="medium",fullWidth:i,className:j,status:k},l)=>{let[m,n]=(0,L.useState)(!1),o=async a=>{let b=c?.(a);if((0,F.Fb)(b)){let a=window.setTimeout(()=>{n(!0)},50);try{await b}catch(a){if(a instanceof F.tc)console.warn(a);else throw a}finally{clearTimeout(a),n(!1)}}},p=m?"loading":k;return g="success"===p?"success":g,(0,e.jsx)("button",{className:(0,av.default)("ExcButton",`ExcButton--color-${g}`,`ExcButton--variant-${f}`,`ExcButton--size-${h}`,`ExcButton--status-${p}`,{"ExcButton--fullWidth":i},j),onClick:o,type:"button","aria-label":d,ref:l,disabled:"loading"===p||"success"===p,children:(0,e.jsxs)("div",{className:"ExcButton__contents",children:["loading"===p?(0,e.jsx)(db,{className:"ExcButton__statusIcon"}):"success"===p&&(0,e.jsx)("div",{className:"ExcButton__statusIcon",children:F.bf}),b&&(0,e.jsx)("div",{className:"ExcButton__icon","aria-hidden":!0,children:b}),"icon"!==f&&(a??d)]})})}),g9="filter"in document.createElement("canvas").getContext("2d"),ha=()=>(0,e.jsxs)("div",{children:[(0,e.jsx)("h3",{children:c8("canvasError.cannotShowPreview")}),(0,e.jsx)("p",{children:(0,e.jsx)("span",{children:c8("canvasError.canvasTooBig")})}),(0,e.jsxs)("em",{children:["(",c8("canvasError.canvasTooBigTip"),")"]})]}),hb=({appStateSnapshot:a,elementsSnapshot:b,files:c,actionManager:d,onExportImage:f,name:g})=>{let h=(0,F.tk)(b,a),[i,j]=(0,L.useState)(g),[k,l]=(0,L.useState)(h),[m,n]=(0,L.useState)(a.exportBackground),[o,p]=(0,L.useState)(a.exportWithDarkMode),[q,r]=(0,L.useState)(a.exportEmbedScene),[s,t]=(0,L.useState)(a.exportScale),u=(0,L.useRef)(null),[v,w]=(0,L.useState)(null),{onCopy:x,copyStatus:y,resetCopyStatus:z}=(()=>{let[a,b]=(0,L.useState)(null),c=(0,L.useRef)(0);return{copyStatus:a,resetCopyStatus:(0,L.useCallback)(()=>{b(null)},[]),onCopy:()=>{clearTimeout(c.current),b("success"),c.current=window.setTimeout(()=>{b(null)},2e3)}}})();(0,L.useEffect)(()=>{z()},[i,m,o,s,q,z]);let{exportedElements:A,exportingFrame:B}=eG(b,a,k);return(0,L.useEffect)(()=>{let b=u.current;if(!b)return;let d=b.offsetWidth,e=b.offsetHeight;d&&(0,F.pi)({elements:A,appState:{...a,name:i,exportBackground:m,exportWithDarkMode:o,exportScale:s,exportEmbedScene:q},files:c,exportPadding:F.ma,maxWidthOrHeight:Math.max(d,e),exportingFrame:B}).then(a=>(w(null),(0,F.yh)(a).then(()=>{b.replaceChildren(a)}).catch(a=>{throw"CANVAS_POSSIBLY_TOO_BIG"===a.name?Error(c8("canvasError.canvasTooBig")):a}))).catch(a=>{console.error(a),w(a)})},[a,c,A,B,i,m,o,s,q]),(0,e.jsxs)("div",{className:"ImageExportModal",children:[(0,e.jsx)("h3",{children:c8("imageExportDialog.header")}),(0,e.jsxs)("div",{className:"ImageExportModal__preview",children:[(0,e.jsx)("div",{className:"ImageExportModal__preview__canvas",ref:u,children:v&&(0,e.jsx)(ha,{})}),(0,e.jsx)("div",{className:"ImageExportModal__preview__filename",children:!G.supported&&(0,e.jsx)("input",{type:"text",className:"TextInput",value:i,style:{width:"30ch"},onChange:a=>{j(a.target.value),d.executeAction(eK,"ui",a.target.value)}})})]}),(0,e.jsxs)("div",{className:"ImageExportModal__settings",children:[(0,e.jsx)("h3",{children:c8("imageExportDialog.header")}),h&&(0,e.jsx)(hc,{label:c8("imageExportDialog.label.onlySelected"),name:"exportOnlySelected",children:(0,e.jsx)(g7,{name:"exportOnlySelected",checked:k,onChange:a=>{l(a)}})}),(0,e.jsx)(hc,{label:c8("imageExportDialog.label.withBackground"),name:"exportBackgroundSwitch",children:(0,e.jsx)(g7,{name:"exportBackgroundSwitch",checked:m,onChange:a=>{n(a),d.executeAction(eM,"ui",a)}})}),g9&&(0,e.jsx)(hc,{label:c8("imageExportDialog.label.darkMode"),name:"exportDarkModeSwitch",children:(0,e.jsx)(g7,{name:"exportDarkModeSwitch",checked:o,onChange:a=>{p(a),d.executeAction(eR,"ui",a)}})}),(0,e.jsx)(hc,{label:c8("imageExportDialog.label.embedScene"),tooltip:c8("imageExportDialog.tooltip.embedScene"),name:"exportEmbedSwitch",children:(0,e.jsx)(g7,{name:"exportEmbedSwitch",checked:q,onChange:a=>{r(a),d.executeAction(eN,"ui",a)}})}),(0,e.jsx)(hc,{label:c8("imageExportDialog.label.scale"),name:"exportScale",children:(0,e.jsx)(g6,{name:"exportScale",value:s,onChange:a=>{t(a),d.executeAction(eL,"ui",a)},choices:F.la.map(a=>({value:a,label:`${a}\xd7`}))})}),(0,e.jsxs)("div",{className:"ImageExportModal__settings__buttons",children:[(0,e.jsx)(g8,{className:"ImageExportModal__settings__buttons__button",label:c8("imageExportDialog.title.exportToPng"),onClick:()=>f(F.U.png,A,{exportingFrame:B}),icon:F.Ze,children:c8("imageExportDialog.button.exportToPng")}),(0,e.jsx)(g8,{className:"ImageExportModal__settings__buttons__button",label:c8("imageExportDialog.title.exportToSvg"),onClick:()=>f(F.U.svg,A,{exportingFrame:B}),icon:F.Ze,children:c8("imageExportDialog.button.exportToSvg")}),(F.ii||F.n)&&(0,e.jsx)(g8,{className:"ImageExportModal__settings__buttons__button",label:c8("imageExportDialog.title.copyPngToClipboard"),status:y,onClick:async()=>{await f(F.U.clipboard,A,{exportingFrame:B}),x()},icon:F._e,children:c8("imageExportDialog.button.copyPngToClipboard")})]})]})]})},hc=({label:a,children:b,tooltip:c,name:d})=>(0,e.jsxs)("div",{className:"ImageExportModal__settings__setting",title:a,children:[(0,e.jsxs)("label",{htmlFor:d,className:"ImageExportModal__settings__setting__label",children:[a,c&&(0,e.jsx)(eu,{label:c,long:!0,children:F.af})]}),(0,e.jsx)("div",{className:"ImageExportModal__settings__setting__content",children:b})]}),hd=({elements:a,appState:b,files:c,actionManager:d,onExportImage:f,onCloseRequest:g,name:h})=>{let[{appStateSnapshot:i,elementsSnapshot:j}]=(0,L.useState)(()=>({appStateSnapshot:(0,F.Nb)(b),elementsSnapshot:(0,F.Nb)(a)}));return(0,e.jsx)(gi,{onCloseRequest:g,size:"wide",title:!1,children:(0,e.jsx)(hb,{elementsSnapshot:j,appStateSnapshot:i,files:c,actionManager:d,onExportImage:f,name:h})})},he=({children:a,side:b,className:c})=>(0,e.jsx)("div",{className:(0,av.default)("FixedSideContainer",`FixedSideContainer_side_${b}`,c),children:a}),hf=a=>{switch(a){case F.hg.ARROW_UP:return"up";case F.hg.ARROW_DOWN:return"down";case F.hg.ARROW_RIGHT:return"right";case F.hg.ARROW_LEFT:return"left";default:return"right"}},hg=(a,b,c,d)=>{let e=[...c.values()].reduce((d,e)=>{let f;if((0,F.ec)(e)&&(f=e["predecessors"===a?"startBinding":"endBinding"])&&e["predecessors"===a?"endBinding":"startBinding"]?.elementId===b.id){let g=c.get(f.elementId);if(!g)return d;(0,F.Kb)((0,F.ic)(g),"not an ExcalidrawBindableElement");let h="predecessors"===a?e.points[e.points.length-1]:[0,0],i=(0,F.Dg)(b,(0,F.vg)(b),[h[0]+e.x,h[1]+e.y]);d.push({relative:g,heading:i})}return d},[]);switch(d){case"up":return e.filter(a=>(0,F.Cg)(a.heading,F.Bg)).map(a=>a.relative);case"down":return e.filter(a=>(0,F.Cg)(a.heading,F.zg)).map(a=>a.relative);case"right":return e.filter(a=>(0,F.Cg)(a.heading,F.yg)).map(a=>a.relative);case"left":return e.filter(a=>(0,F.Cg)(a.heading,F.Ag)).map(a=>a.relative)}},hh=(a,b,c,d,e)=>{let f,g,h,i;switch(d){case"up":f=a.x+a.width/2,g=a.y-6;break;case"down":f=a.x+a.width/2,g=a.y+a.height+6;break;case"right":f=a.x+a.width+6,g=a.y+a.height/2;break;case"left":f=a.x-6,g=a.y+a.height/2}switch(d){case"up":h=b.x+b.width/2-f,i=b.y+b.height-g+6;break;case"down":h=b.x+b.width/2-f,i=b.y-g-6;break;case"right":h=b.x-f-6,i=b.y-g+b.height/2;break;case"left":h=b.x+b.width-f+6,i=b.y-g+b.height/2}let j=(0,F.$f)({type:"arrow",x:f,y:g,startArrowhead:null,endArrowhead:e.currentItemEndArrowhead,strokeColor:a.strokeColor,strokeStyle:a.strokeStyle,strokeWidth:a.strokeWidth,opacity:a.opacity,roughness:a.roughness,points:[(0,F.Ua)(0,0),(0,F.Ua)(h,i)],elbowed:!0});(0,F.Mg)(j,a,"start",c),(0,F.Mg)(j,b,"end",c);let k=new Map;k.set(a.id,a),k.set(b.id,b),k.set(j.id,j),F.pj.movePoints(j,[{index:1,point:j.points[1]}]);let l=(0,F.ih)(j,(0,F.Sb)(new Map([...c.entries(),[a.id,a],[b.id,b],[j.id,j]])),{points:j.points});return{...j,...l}},hi=class{constructor(){(0,K.d)(this,"isExploring",!1),(0,K.d)(this,"sameLevelNodes",[]),(0,K.d)(this,"sameLevelIndex",0),(0,K.d)(this,"direction",null),(0,K.d)(this,"visitedNodes",new Set)}clear(){this.isExploring=!1,this.sameLevelNodes=[],this.sameLevelIndex=0,this.direction=null,this.visitedNodes.clear()}exploreByDirection(a,b,c){if(!(0,F.ic)(a))return null;if(c!==this.direction&&this.clear(),this.visitedNodes.has(a.id)||this.visitedNodes.add(a.id),this.isExploring&&c===this.direction&&this.sameLevelNodes.length>1)return this.sameLevelIndex=(this.sameLevelIndex+1)%this.sameLevelNodes.length,this.sameLevelNodes[this.sameLevelIndex].id;let d=[...hg("successors",a,b,c),...hg("predecessors",a,b,c)];if(d.length>0)return this.sameLevelIndex=0,this.isExploring=!0,this.sameLevelNodes=d,this.direction=c,this.visitedNodes.add(d[0].id),d[0].id;if(c===this.direction||!this.isExploring){for(let d of(this.isExploring||this.visitedNodes.add(a.id),["up","right","down","left"].filter(a=>a!==c).map(c=>[...hg("successors",a,b,c),...hg("predecessors",a,b,c)]).flat().filter(a=>!this.visitedNodes.has(a.id))))if(!this.visitedNodes.has(d.id))return this.visitedNodes.add(d.id),this.isExploring=!0,this.direction=c,d.id}return null}},hj=class{constructor(){(0,K.d)(this,"isCreatingChart",!1),(0,K.d)(this,"numberOfNodes",0),(0,K.d)(this,"direction","right"),(0,K.d)(this,"pendingNodes",null)}createNodes(a,b,c,d){if(d!==this.direction){var e,f,g,h;let i,j,k,l,m,{nextNode:n,bindingArrow:o}=(e=a,f=b,g=c,i=hg("successors",e,f,h=d),j=hg("predecessors",e,f,h),k=((a,b,c)=>{let d=100+a.width;if("up"===c||"down"===c){let d=100+a.height,e=a.x,f=a.x+a.width;if(b.every(a=>a.x+a.width<e||a.x>f))return{x:0,y:d*("up"===c?-1:1)}}else if("right"===c||"left"===c){let d=a.y,e=a.y+a.height;if(b.every(a=>a.y+a.height<d||a.y>e))return{x:(100+a.width)*("left"===c?-1:1),y:0}}if("up"===c||"down"===c){let e=(b.length,100+a.height),f=0===b.length?0:(b.length+1)%2==0?(b.length+1)/2*d:-(b.length/2*d*1);return"up"===c?{x:f,y:-1*e}:{x:f,y:e}}let e=100+a.height,f=(b.length,100+a.width),g=0===b.length?0:(b.length+1)%2==0?(b.length+1)/2*e:-(b.length/2*e*1);return"left"===c?{x:-1*f,y:g}:{x:f,y:g}})(e,[...i,...j],h),l=(0,F.Sf)({type:e.type,x:e.x+k.x,y:e.y+k.y,width:e.width,height:e.height,roundness:e.roundness,roughness:e.roughness,backgroundColor:e.backgroundColor,strokeColor:e.strokeColor,strokeWidth:e.strokeWidth,opacity:e.opacity,fillStyle:e.fillStyle,strokeStyle:e.strokeStyle}),(0,F.Kb)((0,F.lc)(l),"not an ExcalidrawFlowchartNodeElement"),m=hh(e,l,f,h,g),{nextNode:l,bindingArrow:m});this.numberOfNodes=1,this.isCreatingChart=!0,this.direction=d,this.pendingNodes=[n,o]}else{this.numberOfNodes+=1;let e=((a,b,c,d,e)=>{let f=[];for(let g=0;g<e;g++){let h,i;if("left"===d||"right"===d){let b=100*(e-1)+e*a.height,c=a.y+a.height/2-b/2,f=100+a.width;"left"===d&&(f*=-1),h=a.x+f,i=c+(100+a.height)*g}else{let b=100*(e-1)+e*a.width,c=a.x+a.width/2-b/2,f=100+a.height;"up"===d&&(f*=-1),i=a.y+f,h=c+(100+a.width)*g}let j=(0,F.Sf)({type:a.type,x:h,y:i,width:a.width,height:a.height,roundness:a.roundness,roughness:a.roughness,backgroundColor:a.backgroundColor,strokeColor:a.strokeColor,strokeWidth:a.strokeWidth,opacity:a.opacity,fillStyle:a.fillStyle,strokeStyle:a.strokeStyle});(0,F.Kb)((0,F.lc)(j),"not an ExcalidrawFlowchartNodeElement");let k=hh(a,j,b,d,c);f.push(j),f.push(k)}return f})(a,b,c,d,this.numberOfNodes);this.isCreatingChart=!0,this.direction=d,this.pendingNodes=e}if(a.frameId){let c=b.get(a.frameId);(0,F.Kb)(c&&(0,F.$b)(c),"not an ExcalidrawFrameElement"),c&&this.pendingNodes.every(a=>(0,F.xi)([a],c,b)||(0,F.yi)(a,c,b))&&(this.pendingNodes=this.pendingNodes.map(b=>(0,F.Pj)(b,{frameId:a.frameId},!1)))}}clear(){this.isCreatingChart=!1,this.pendingNodes=null,this.direction=null,this.numberOfNodes=0}},hk=({appState:a,isMobile:b,device:c,app:d})=>{let f=(({appState:a,isMobile:b,device:c,app:d})=>{let{activeTool:e,isResizing:f,isRotating:g,lastPointerDownWith:h}=a,i=null!==a.multiElement;if(a.openSidebar?.name===F.ya.name&&a.openSidebar.tab===F.xa&&a.searchMatches?.length)return c8("hints.dismissSearch");if(a.openSidebar&&!c.editor.canFitSidebar)return null;if((0,F.Gc)(a))return c8("hints.eraserRevert");if("arrow"===e.type||"line"===e.type)return i?c8("hints.linearElementMulti"):"arrow"===e.type?c8("hints.arrowTool",{arrowShortcut:(0,F.kb)("A")}):c8("hints.linearElement");if("freedraw"===e.type)return c8("hints.freeDraw");if("text"===e.type)return c8("hints.text");if("embeddable"===e.type)return c8("hints.embeddable");if("image"===a.activeTool.type&&a.pendingImageElementId)return c8("hints.placeImage");let j=d.scene.getSelectedElements(a);if(f&&"mouse"===h&&1===j.length){let a=j[0];return(0,F.cc)(a)&&2===a.points.length?c8("hints.lockAngle"):(0,F.Wb)(a)?c8("hints.resizeImage"):c8("hints.resize")}if(g&&"mouse"===h)return c8("hints.rotate");if(1===j.length&&(0,F._b)(j[0]))return c8("hints.text_selected");if(a.editingTextElement)return c8("hints.text_editing");if(a.croppingElementId)return c8("hints.leaveCropEditor");if(1===j.length&&(0,F.Wb)(j[0]))return c8("hints.enterCropEditor");if("selection"===e.type){if(a.selectionElement&&!j.length&&!a.editingTextElement&&!a.editingLinearElement)return c8("hints.deepBoxSelect");if((0,F.fj)(d)&&a.selectedElementsAreBeingDragged)return c8("hints.disableSnapping");if(!j.length&&!b)return c8("hints.canvasPanning");if(1===j.length){if((0,F.cc)(j[0]))return a.editingLinearElement?a.editingLinearElement.selectedPointsIndices?c8("hints.lineEditor_pointSelected"):c8("hints.lineEditor_nothingSelected"):c8("hints.lineEditor_info");if(!a.newElement&&!a.selectedElementsAreBeingDragged&&(0,F.jc)(j[0]))return(0,F.lc)(j[0])?(((a,b)=>{for(let[,c]of b)if("arrow"===c.type&&(c.startBinding?.elementId===a.id||c.endBinding?.elementId===a.id))return!0})(j[0],d.scene.getNonDeletedElementsMap()),[c8("hints.bindTextToElement"),c8("hints.createFlowchart")]):c8("hints.bindTextToElement")}}return null})({appState:a,isMobile:b,device:c,app:d});if(!f)return null;let g=Array.isArray(f)?f.map(a=>(0,F.kb)(a).replace(/\. ?$/,"")).join(". "):(0,F.kb)(f);return(0,e.jsx)("div",{className:"HintViewer",children:(0,e.jsx)("span",{children:g})})},hl={CHECKED:F.kd,UNCHECKED:F.jd},hm=a=>(0,e.jsxs)("label",{className:(0,av.default)("ToolIcon ToolIcon__lock","ToolIcon_size_medium",{"is-mobile":a.isMobile}),title:`${a.title} \u2014 Q`,children:[(0,e.jsx)("input",{className:"ToolIcon_type_checkbox",type:"checkbox",name:a.name,onChange:a.onChange,checked:a.checked,"aria-label":a.title,"data-testid":"toolbar-lock"}),(0,e.jsx)("div",{className:"ToolIcon__icon",children:a.checked?hl.CHECKED:hl.UNCHECKED})]}),hn=({heading:a,children:b,...c})=>{let{id:d}=kc(),f=(0,e.jsx)("h2",{className:"visually-hidden",id:`${d}-${a}-title`,children:c8(`headings.${a}`)});return(0,e.jsx)("section",{...c,"aria-labelledby":`${d}-${a}-title`,children:"function"==typeof b?b(f):(0,e.jsxs)(e.Fragment,{children:[f,b]})})},ho=(a,b,c)=>{let[d,e]=[a.horizontal,a.vertical].map(a=>null!=a&&a.x<=b&&b<=a.x+a.width&&a.y<=c&&c<=a.y+a.height);return{isOverEither:d||e,isOverHorizontal:d,isOverVertical:e}},hp=a=>a.penDetected?(0,e.jsxs)("label",{className:(0,av.default)("ToolIcon ToolIcon__penMode","ToolIcon_size_medium",{"is-mobile":a.isMobile}),title:`${a.title}`,children:[(0,e.jsx)("input",{className:"ToolIcon_type_checkbox",type:"checkbox",name:a.name,onChange:a.onChange,checked:a.checked,"aria-label":a.title}),(0,e.jsx)("div",{className:"ToolIcon__icon",children:F.od})]}):null,hq=a=>(0,e.jsx)(de,{className:(0,av.default)("Shape",{fillable:!1}),type:"radio",icon:F.Ye,name:"editor-current-shape",checked:a.checked,title:`${a.title} \u2014 H`,keyBindingLabel:a.isMobile?void 0:F.hg.H.toLocaleUpperCase(),"aria-label":`${a.title} \u2014 H`,"aria-keyshortcuts":F.hg.H,"data-testid":"toolbar-hand",onChange:()=>a.onChange?.()}),hr=({appState:a,elements:b,actionManager:c,setAppState:d,onLockToggle:f,onHandToolToggle:g,onPenModeToggle:h,renderTopRightUI:i,renderCustomStats:j,renderSidebars:k,device:l,renderWelcomeScreen:m,UIOptions:n,app:o})=>{let{WelcomeScreenCenterTunnel:p,MainMenuTunnel:q,DefaultSidebarTriggerTunnel:r}=L.default.useContext(gr);return(0,e.jsxs)(e.Fragment,{children:[k(),!a.viewModeEnabled&&a.openDialog?.name!=="elementLinkSelector"&&(0,e.jsxs)(he,{side:"top",className:"App-top-bar",children:[m&&(0,e.jsx)(p.Out,{}),(0,e.jsx)(hn,{heading:"shapes",children:b=>(0,e.jsx)(fN,{gap:4,align:"center",children:(0,e.jsxs)(fM,{gap:1,className:"App-toolbar-container",children:[(0,e.jsxs)(dU,{padding:1,className:"App-toolbar App-toolbar--mobile",children:[b,(0,e.jsx)(fM,{gap:1,children:(0,e.jsx)(gw,{appState:a,activeTool:a.activeTool,UIOptions:n,app:o})})]}),i&&i(!0,a),(0,e.jsxs)("div",{className:"mobile-misc-tools-container",children:[!a.viewModeEnabled&&a.openDialog?.name!=="elementLinkSelector"&&(0,e.jsx)(r.Out,{}),(0,e.jsx)(hp,{checked:a.penMode,onChange:()=>h(null),title:c8("toolBar.penMode"),isMobile:!0,penDetected:a.penDetected}),(0,e.jsx)(hm,{checked:a.activeTool.locked,onChange:f,title:c8("toolBar.lock"),isMobile:!0}),(0,e.jsx)(hq,{checked:(0,F.Hc)(a),onChange:()=>g(),title:c8("toolBar.hand"),isMobile:!0})]})]})})}),(0,e.jsx)(hk,{appState:a,isMobile:!0,device:l,app:o})]}),(0,e.jsx)("div",{className:"App-bottom-bar",style:{marginBottom:14,marginLeft:14,marginRight:14},children:(0,e.jsxs)(dU,{padding:0,children:["shape"===a.openMenu&&!a.viewModeEnabled&&a.openDialog?.name!=="elementLinkSelector"&&(0,F.lk)(a,b)?(0,e.jsx)(hn,{className:"App-mobile-menu",heading:"selectedShapeActions",children:(0,e.jsx)(gv,{appState:a,elementsMap:o.scene.getNonDeletedElementsMap(),renderAction:c.renderAction,app:o})}):null,(0,e.jsxs)("footer",{className:"App-toolbar",children:[a.viewModeEnabled||a.openDialog?.name==="elementLinkSelector"?(0,e.jsx)("div",{className:"App-toolbar-content",children:(0,e.jsx)(q.Out,{})}):(0,e.jsxs)("div",{className:"App-toolbar-content",children:[(0,e.jsx)(q.Out,{}),c.renderAction("toggleEditMenu"),c.renderAction(a.multiElement?"finalize":"duplicateSelection"),c.renderAction("deleteSelectedElements"),(0,e.jsxs)("div",{children:[c.renderAction("undo"),c.renderAction("redo")]})]}),a.scrolledOutside&&!a.openMenu&&!a.openSidebar&&(0,e.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{d(a=>({...(0,F.zk)(b,a)}))},children:c8("buttons.scrollBackToContent")})]})]})})]})},hs=a=>{let b=(0,L.useRef)(null),[c,d]=(0,L.useState)(null);return(0,L.useLayoutEffect)(()=>{if(!a.spreadsheet)return;let c=(0,F.gi)(a.chartType,a.spreadsheet,0,0);d(c);let e,f=b.current;return(async()=>(e=await (0,F.ei)(c,{exportBackground:!1,viewBackgroundColor:bN.default.white},null,{skipInliningFonts:!0}),e.querySelector(".style-fonts")?.remove(),f.replaceChildren(),f.appendChild(e),a.selected&&f.parentNode.focus()))(),()=>{f.replaceChildren()}},[a.spreadsheet,a.chartType,a.selected]),(0,e.jsx)("button",{type:"button",className:"ChartPreview",onClick:()=>{c&&a.onClick(a.chartType,c)},children:(0,e.jsx)("div",{ref:b})})},ht=({setAppState:a,appState:b,onClose:c})=>{let{onInsertElements:d}=j9(),f=L.default.useCallback(()=>{c&&c()},[c]),g=(b,c)=>{d(c),dw("paste","chart",b),a({currentChartType:b,pasteDialog:{shown:!1,data:null}})};return(0,e.jsx)(gi,{size:"small",onCloseRequest:f,title:c8("labels.pasteCharts"),className:"PasteChartDialog",autofocus:!1,children:(0,e.jsxs)("div",{className:"container",children:[(0,e.jsx)(hs,{chartType:"bar",spreadsheet:b.pasteDialog.data,selected:"bar"===b.currentChartType,onClick:g}),(0,e.jsx)(hs,{chartType:"line",spreadsheet:b.pasteDialog.data,selected:"line"===b.currentChartType,onClick:g})]})})},hu=()=>(0,e.jsxs)("div",{className:"HelpDialog__header",children:[(0,e.jsxs)("a",{className:"HelpDialog__btn",href:"https://docs.excalidraw.com",target:"_blank",rel:"noopener noreferrer",children:[(0,e.jsx)("div",{className:"HelpDialog__link-icon",children:F.Dd}),c8("helpDialog.documentation")]}),(0,e.jsxs)("a",{className:"HelpDialog__btn",href:"https://plus.excalidraw.com/blog",target:"_blank",rel:"noopener noreferrer",children:[(0,e.jsx)("div",{className:"HelpDialog__link-icon",children:F.Dd}),c8("helpDialog.blog")]}),(0,e.jsxs)("a",{className:"HelpDialog__btn",href:"https://github.com/excalidraw/excalidraw/issues",target:"_blank",rel:"noopener noreferrer",children:[(0,e.jsx)("div",{className:"HelpDialog__link-icon",children:F.Ed}),c8("helpDialog.github")]}),(0,e.jsxs)("a",{className:"HelpDialog__btn",href:"https://youtube.com/@excalidraw",target:"_blank",rel:"noopener noreferrer",children:[(0,e.jsx)("div",{className:"HelpDialog__link-icon",children:F.Ff}),"YouTube"]})]}),hv=a=>(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("h3",{children:a.title}),(0,e.jsx)("div",{className:"HelpDialog__islands-container",children:a.children})]}),hw=a=>(0,e.jsxs)("div",{className:`HelpDialog__island ${a.className}`,children:[(0,e.jsx)("h4",{className:"HelpDialog__island-title",children:a.caption}),(0,e.jsx)("div",{className:"HelpDialog__island-content",children:a.children})]}),hx=({label:a,shortcuts:b,isOr:c=!0})=>{let d=b.map(a=>(a.endsWith("++")?[...a.slice(0,-2).split("+"),"+"]:a.split("+")).map(a=>(0,e.jsx)(hy,{children:a.replace(/\b[a-z]\b/,a=>a.toUpperCase())},a)));return(0,e.jsxs)("div",{className:"HelpDialog__shortcut",children:[(0,e.jsx)("div",{children:a}),(0,e.jsx)("div",{className:"HelpDialog__key-container",children:[...function*(a,b){let c=!0;for(let d of a)c||(yield b),c=!1,yield d}(d,c?c8("helpDialog.or"):null)]})]})},hy=a=>(0,e.jsx)("kbd",{className:"HelpDialog__key",...a}),hz=({onClose:a})=>{let b=L.default.useCallback(()=>{a&&a()},[a]);return(0,e.jsx)(e.Fragment,{children:(0,e.jsxs)(gi,{onCloseRequest:b,title:c8("helpDialog.title"),className:"HelpDialog",children:[(0,e.jsx)(hu,{}),(0,e.jsxs)(hv,{title:c8("helpDialog.shortcuts"),children:[(0,e.jsxs)(hw,{className:"HelpDialog__island--tools",caption:c8("helpDialog.tools"),children:[(0,e.jsx)(hx,{label:c8("toolBar.hand"),shortcuts:[F.hg.H]}),(0,e.jsx)(hx,{label:c8("toolBar.selection"),shortcuts:[F.hg.V,F.hg[1]]}),(0,e.jsx)(hx,{label:c8("toolBar.rectangle"),shortcuts:[F.hg.R,F.hg[2]]}),(0,e.jsx)(hx,{label:c8("toolBar.diamond"),shortcuts:[F.hg.D,F.hg[3]]}),(0,e.jsx)(hx,{label:c8("toolBar.ellipse"),shortcuts:[F.hg.O,F.hg[4]]}),(0,e.jsx)(hx,{label:c8("toolBar.arrow"),shortcuts:[F.hg.A,F.hg[5]]}),(0,e.jsx)(hx,{label:c8("toolBar.line"),shortcuts:[F.hg.L,F.hg[6]]}),(0,e.jsx)(hx,{label:c8("toolBar.freedraw"),shortcuts:[F.hg.P,F.hg[7]]}),(0,e.jsx)(hx,{label:c8("toolBar.text"),shortcuts:[F.hg.T,F.hg[8]]}),(0,e.jsx)(hx,{label:c8("toolBar.image"),shortcuts:[F.hg[9]]}),(0,e.jsx)(hx,{label:c8("toolBar.eraser"),shortcuts:[F.hg.E,F.hg[0]]}),(0,e.jsx)(hx,{label:c8("toolBar.frame"),shortcuts:[F.hg.F]}),(0,e.jsx)(hx,{label:c8("toolBar.laser"),shortcuts:[F.hg.K]}),(0,e.jsx)(hx,{label:c8("labels.eyeDropper"),shortcuts:[F.hg.I,"Shift+S","Shift+G"]}),(0,e.jsx)(hx,{label:c8("helpDialog.editLineArrowPoints"),shortcuts:[(0,F.kb)("CtrlOrCmd+Enter")]}),(0,e.jsx)(hx,{label:c8("helpDialog.editText"),shortcuts:[(0,F.kb)("Enter")]}),(0,e.jsx)(hx,{label:c8("helpDialog.textNewLine"),shortcuts:[(0,F.kb)("Enter"),(0,F.kb)("Shift+Enter")]}),(0,e.jsx)(hx,{label:c8("helpDialog.textFinish"),shortcuts:[(0,F.kb)("Esc"),(0,F.kb)("CtrlOrCmd+Enter")]}),(0,e.jsx)(hx,{label:c8("helpDialog.curvedArrow"),shortcuts:["A",c8("helpDialog.click"),c8("helpDialog.click"),c8("helpDialog.click")],isOr:!1}),(0,e.jsx)(hx,{label:c8("helpDialog.curvedLine"),shortcuts:["L",c8("helpDialog.click"),c8("helpDialog.click"),c8("helpDialog.click")],isOr:!1}),(0,e.jsx)(hx,{label:c8("helpDialog.cropStart"),shortcuts:[c8("helpDialog.doubleClick"),(0,F.kb)("Enter")],isOr:!0}),(0,e.jsx)(hx,{label:c8("helpDialog.cropFinish"),shortcuts:[(0,F.kb)("Enter"),(0,F.kb)("Escape")],isOr:!0}),(0,e.jsx)(hx,{label:c8("toolBar.lock"),shortcuts:[F.hg.Q]}),(0,e.jsx)(hx,{label:c8("helpDialog.preventBinding"),shortcuts:[(0,F.kb)("CtrlOrCmd")]}),(0,e.jsx)(hx,{label:c8("toolBar.link"),shortcuts:[(0,F.kb)("CtrlOrCmd+K")]})]}),(0,e.jsxs)(hw,{className:"HelpDialog__island--view",caption:c8("helpDialog.view"),children:[(0,e.jsx)(hx,{label:c8("buttons.zoomIn"),shortcuts:[(0,F.kb)("CtrlOrCmd++")]}),(0,e.jsx)(hx,{label:c8("buttons.zoomOut"),shortcuts:[(0,F.kb)("CtrlOrCmd+-")]}),(0,e.jsx)(hx,{label:c8("buttons.resetZoom"),shortcuts:[(0,F.kb)("CtrlOrCmd+0")]}),(0,e.jsx)(hx,{label:c8("helpDialog.zoomToFit"),shortcuts:["Shift+1"]}),(0,e.jsx)(hx,{label:c8("helpDialog.zoomToSelection"),shortcuts:["Shift+2"]}),(0,e.jsx)(hx,{label:c8("helpDialog.movePageUpDown"),shortcuts:["PgUp/PgDn"]}),(0,e.jsx)(hx,{label:c8("helpDialog.movePageLeftRight"),shortcuts:["Shift+PgUp/PgDn"]}),(0,e.jsx)(hx,{label:c8("buttons.zenMode"),shortcuts:[(0,F.kb)("Alt+Z")]}),(0,e.jsx)(hx,{label:c8("buttons.objectsSnapMode"),shortcuts:[(0,F.kb)("Alt+S")]}),(0,e.jsx)(hx,{label:c8("labels.toggleGrid"),shortcuts:[(0,F.kb)("CtrlOrCmd+'")]}),(0,e.jsx)(hx,{label:c8("labels.viewMode"),shortcuts:[(0,F.kb)("Alt+R")]}),(0,e.jsx)(hx,{label:c8("labels.toggleTheme"),shortcuts:[(0,F.kb)("Alt+Shift+D")]}),(0,e.jsx)(hx,{label:c8("stats.fullTitle"),shortcuts:[(0,F.kb)("Alt+/")]}),(0,e.jsx)(hx,{label:c8("search.title"),shortcuts:[gm("searchMenu")]}),(0,e.jsx)(hx,{label:c8("commandPalette.title"),shortcuts:F.n?[gm("commandPalette")]:[gm("commandPalette"),gm("commandPalette",1)]})]}),(0,e.jsxs)(hw,{className:"HelpDialog__island--editor",caption:c8("helpDialog.editor"),children:[(0,e.jsx)(hx,{label:c8("helpDialog.createFlowchart"),shortcuts:[(0,F.kb)("CtrlOrCmd+Arrow Key")],isOr:!0}),(0,e.jsx)(hx,{label:c8("helpDialog.navigateFlowchart"),shortcuts:[(0,F.kb)("Alt+Arrow Key")],isOr:!0}),(0,e.jsx)(hx,{label:c8("labels.moveCanvas"),shortcuts:[(0,F.kb)(`Space+${c8("helpDialog.drag")}`),(0,F.kb)(`Wheel+${c8("helpDialog.drag")}`)],isOr:!0}),(0,e.jsx)(hx,{label:c8("buttons.clearReset"),shortcuts:[(0,F.kb)("CtrlOrCmd+Delete")]}),(0,e.jsx)(hx,{label:c8("labels.delete"),shortcuts:[(0,F.kb)("Delete")]}),(0,e.jsx)(hx,{label:c8("labels.cut"),shortcuts:[(0,F.kb)("CtrlOrCmd+X")]}),(0,e.jsx)(hx,{label:c8("labels.copy"),shortcuts:[(0,F.kb)("CtrlOrCmd+C")]}),(0,e.jsx)(hx,{label:c8("labels.paste"),shortcuts:[(0,F.kb)("CtrlOrCmd+V")]}),(0,e.jsx)(hx,{label:c8("labels.pasteAsPlaintext"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+V")]}),(0,e.jsx)(hx,{label:c8("labels.selectAll"),shortcuts:[(0,F.kb)("CtrlOrCmd+A")]}),(0,e.jsx)(hx,{label:c8("labels.multiSelect"),shortcuts:[(0,F.kb)(`Shift+${c8("helpDialog.click")}`)]}),(0,e.jsx)(hx,{label:c8("helpDialog.deepSelect"),shortcuts:[(0,F.kb)(`CtrlOrCmd+${c8("helpDialog.click")}`)]}),(0,e.jsx)(hx,{label:c8("helpDialog.deepBoxSelect"),shortcuts:[(0,F.kb)(`CtrlOrCmd+${c8("helpDialog.drag")}`)]}),(F.ii||F.n)&&(0,e.jsx)(hx,{label:c8("labels.copyAsPng"),shortcuts:[(0,F.kb)("Shift+Alt+C")]}),(0,e.jsx)(hx,{label:c8("labels.copyStyles"),shortcuts:[(0,F.kb)("CtrlOrCmd+Alt+C")]}),(0,e.jsx)(hx,{label:c8("labels.pasteStyles"),shortcuts:[(0,F.kb)("CtrlOrCmd+Alt+V")]}),(0,e.jsx)(hx,{label:c8("labels.sendToBack"),shortcuts:[F.l?(0,F.kb)("CtrlOrCmd+Alt+["):(0,F.kb)("CtrlOrCmd+Shift+[")]}),(0,e.jsx)(hx,{label:c8("labels.bringToFront"),shortcuts:[F.l?(0,F.kb)("CtrlOrCmd+Alt+]"):(0,F.kb)("CtrlOrCmd+Shift+]")]}),(0,e.jsx)(hx,{label:c8("labels.sendBackward"),shortcuts:[(0,F.kb)("CtrlOrCmd+[")]}),(0,e.jsx)(hx,{label:c8("labels.bringForward"),shortcuts:[(0,F.kb)("CtrlOrCmd+]")]}),(0,e.jsx)(hx,{label:c8("labels.alignTop"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+Up")]}),(0,e.jsx)(hx,{label:c8("labels.alignBottom"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+Down")]}),(0,e.jsx)(hx,{label:c8("labels.alignLeft"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+Left")]}),(0,e.jsx)(hx,{label:c8("labels.alignRight"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+Right")]}),(0,e.jsx)(hx,{label:c8("labels.duplicateSelection"),shortcuts:[(0,F.kb)("CtrlOrCmd+D"),(0,F.kb)(`Alt+${c8("helpDialog.drag")}`)]}),(0,e.jsx)(hx,{label:c8("helpDialog.toggleElementLock"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+L")]}),(0,e.jsx)(hx,{label:c8("buttons.undo"),shortcuts:[(0,F.kb)("CtrlOrCmd+Z")]}),(0,e.jsx)(hx,{label:c8("buttons.redo"),shortcuts:F.m?[(0,F.kb)("CtrlOrCmd+Y"),(0,F.kb)("CtrlOrCmd+Shift+Z")]:[(0,F.kb)("CtrlOrCmd+Shift+Z")]}),(0,e.jsx)(hx,{label:c8("labels.group"),shortcuts:[(0,F.kb)("CtrlOrCmd+G")]}),(0,e.jsx)(hx,{label:c8("labels.ungroup"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+G")]}),(0,e.jsx)(hx,{label:c8("labels.flipHorizontal"),shortcuts:[(0,F.kb)("Shift+H")]}),(0,e.jsx)(hx,{label:c8("labels.flipVertical"),shortcuts:[(0,F.kb)("Shift+V")]}),(0,e.jsx)(hx,{label:c8("labels.showStroke"),shortcuts:[(0,F.kb)("S")]}),(0,e.jsx)(hx,{label:c8("labels.showBackground"),shortcuts:[(0,F.kb)("G")]}),(0,e.jsx)(hx,{label:c8("labels.showFonts"),shortcuts:[(0,F.kb)("Shift+F")]}),(0,e.jsx)(hx,{label:c8("labels.decreaseFontSize"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+<")]}),(0,e.jsx)(hx,{label:c8("labels.increaseFontSize"),shortcuts:[(0,F.kb)("CtrlOrCmd+Shift+>")]})]})]})]})})},hA=({shouldWrap:a,children:b,username:c})=>a?(0,e.jsx)(eu,{label:c||"Unknown user",children:b}):(0,e.jsx)(e.Fragment,{children:b}),hB=({actionManager:a,collaborator:b,socketId:c,withName:d=!1,shouldWrapWithTooltip:f=!1,isBeingFollowed:g})=>{let h=a.renderAction("goToCollaborator",{socketId:c,collaborator:b,withName:d,isBeingFollowed:g});return(0,e.jsx)(hA,{username:b.username,shouldWrap:f,children:h},c)},hC=["avatarUrl","id","socketId","username","isInCall","isSpeaking","isMuted"],hD=L.default.memo(({className:a,mobile:b,collaborators:c,userToFollow:d})=>{let f=kg(),g=new Map;c.forEach((a,b)=>{let c=a.id||b;g.set(c,{...a,socketId:b})});let h=Array.from(g.values()).filter(a=>a.username?.trim()),[i,j]=L.default.useState(""),k=h.filter(a=>a.username?.toLowerCase().includes(i)),l=L.default.useRef(null);(0,L.useLayoutEffect)(()=>{if(l.current){let a=a=>{n(Math.max(1,Math.min(8,Math.floor(a/38))))};if(a(l.current.clientWidth),!F.r)return;let b=new ResizeObserver(b=>{for(let c of b){let{width:b}=c.contentRect;a(b)}});return b.observe(l.current),()=>{b.disconnect()}}},[]);let[m,n]=L.default.useState(4),o=h.slice(0,m-1).map(a=>hB({actionManager:f,collaborator:a,socketId:a.socketId,shouldWrapWithTooltip:!0,isBeingFollowed:a.socketId===d}));return b?(0,e.jsx)("div",{className:(0,av.default)("UserList UserList_mobile",a),children:h.map(a=>hB({actionManager:f,collaborator:a,socketId:a.socketId,shouldWrapWithTooltip:!0,isBeingFollowed:a.socketId===d}))}):(0,e.jsx)("div",{className:"UserList__wrapper",ref:l,children:(0,e.jsxs)("div",{className:(0,av.default)("UserList",a),style:{"--max-avatars":m},children:[o,h.length>m-1&&(0,e.jsxs)(bx,{children:[(0,e.jsxs)(bA,{className:"UserList__more",children:["+",h.length-m+1]}),(0,e.jsx)(bG,{style:{zIndex:2,width:"15rem",textAlign:"left"},align:"end",sideOffset:10,children:(0,e.jsxs)(dU,{padding:2,children:[h.length>=8&&(0,e.jsx)(d4,{placeholder:c8("quickSearch.placeholder"),onChange:j}),(0,e.jsx)(d5,{className:"dropdown-menu UserList__collaborators",placeholder:c8("userList.empty"),children:k.length>0?[(0,e.jsx)("div",{className:"hint",children:c8("userList.hint.text")}),k.map(a=>hB({actionManager:f,collaborator:a,socketId:a.socketId,withName:!0,isBeingFollowed:a.socketId===d}))]:[]}),(0,e.jsx)(bL,{width:20,height:10,style:{fill:"var(--popup-bg-color)",filter:"drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)"}})]})})]})]})})},(a,b)=>{if(a.collaborators.size!==b.collaborators.size||a.mobile!==b.mobile||a.className!==b.className||a.userToFollow!==b.userToFollow)return!1;let c=b.collaborators.keys();for(let[d,e]of a.collaborators){let a=b.collaborators.get(d);if(!a||d!==c.next().value||!(0,F.Hb)(e,a,hC))return!1}return!0}),hE=({children:a,color:b})=>(0,e.jsx)("div",{className:"Card",style:{"--card-color":"primary"===b?"var(--color-primary)":bN.default[b][7],"--card-color-darker":"primary"===b?"var(--color-primary-darker)":bN.default[b][8],"--card-color-darkest":"primary"===b?"var(--color-primary-darkest)":bN.default[b][9]},children:a}),hF=({elements:a,appState:b,setAppState:c,files:d,actionManager:f,exportOpts:g,canvas:h,onCloseRequest:i})=>{let{onExportToBackend:j}=g;return(0,e.jsx)("div",{className:"ExportDialog ExportDialog--json",children:(0,e.jsxs)("div",{className:"ExportDialog-cards",children:[g.saveFileToDisk&&(0,e.jsxs)(hE,{color:"lime",children:[(0,e.jsx)("div",{className:"Card-icon",children:F.Pd}),(0,e.jsx)("h2",{children:c8("exportDialog.disk_title")}),(0,e.jsxs)("div",{className:"Card-details",children:[c8("exportDialog.disk_details"),!G.supported&&f.renderAction("changeProjectName")]}),(0,e.jsx)(de,{className:"Card-button",type:"button",title:c8("exportDialog.disk_button"),"aria-label":c8("exportDialog.disk_button"),showAriaLabel:!0,onClick:()=>{f.executeAction(eP,"ui")}})]}),j&&(0,e.jsxs)(hE,{color:"pink",children:[(0,e.jsx)("div",{className:"Card-icon",children:F.Id}),(0,e.jsx)("h2",{children:c8("exportDialog.link_title")}),(0,e.jsx)("div",{className:"Card-details",children:c8("exportDialog.link_details")}),(0,e.jsx)(de,{className:"Card-button",type:"button",title:c8("exportDialog.link_button"),"aria-label":c8("exportDialog.link_button"),showAriaLabel:!0,onClick:async()=>{try{dw("export","link",`ui (${(0,F.Eb)()})`),await j(a,b,d),i()}catch(a){c({errorMessage:a.message})}}})]}),g.renderCustomUI&&g.renderCustomUI(a,b,d,h)]})})},hG=({elements:a,appState:b,files:c,actionManager:d,exportOpts:f,canvas:g,setAppState:h})=>{let i=L.default.useCallback(()=>{h({openDialog:null})},[h]);return(0,e.jsx)(e.Fragment,{children:b.openDialog?.name==="jsonExport"&&(0,e.jsx)(gi,{onCloseRequest:i,title:c8("buttons.export"),children:(0,e.jsx)(hF,{elements:a,appState:b,setAppState:h,files:c,actionManager:d,onCloseRequest:i,exportOpts:f,canvas:g})})})},hH=a=>(0,e.jsx)("button",{className:"help-icon",onClick:a.onClick,type:"button",title:`${c8("helpDialog.title")} \u2014 ?`,"aria-label":c8("helpDialog.title"),children:F.Bd}),hI=({appState:a,actionManager:b,showExitZenModeBtn:c,renderWelcomeScreen:d})=>{let{FooterCenterTunnel:f,WelcomeScreenHelpHintTunnel:g}=L.default.useContext(gr),h=kb(),i=!a.viewModeEnabled&&a.multiElement&&h.isTouchScreen;return(0,e.jsxs)("footer",{role:"contentinfo",className:"layer-ui__wrapper__footer App-menu App-menu_bottom",children:[(0,e.jsx)("div",{className:(0,av.default)("layer-ui__wrapper__footer-left zen-mode-transition",{"layer-ui__wrapper__footer-left--transition-left":a.zenModeEnabled}),children:(0,e.jsx)(fN,{gap:2,children:(0,e.jsxs)(hn,{heading:"canvasActions",children:[(0,e.jsx)(gx,{renderAction:b.renderAction,zoom:a.zoom}),!a.viewModeEnabled&&(0,e.jsx)(gy,{renderAction:b.renderAction,className:(0,av.default)("zen-mode-transition",{"layer-ui__wrapper__footer-left--transition-bottom":a.zenModeEnabled})}),i&&(0,e.jsx)(gA,{renderAction:b.renderAction,className:(0,av.default)("zen-mode-transition",{"layer-ui__wrapper__footer-left--transition-left":a.zenModeEnabled})})]})})}),(0,e.jsx)(f.Out,{}),(0,e.jsx)("div",{className:(0,av.default)("layer-ui__wrapper__footer-right zen-mode-transition",{"transition-right":a.zenModeEnabled}),children:(0,e.jsxs)("div",{style:{position:"relative"},children:[d&&(0,e.jsx)(g.Out,{}),(0,e.jsx)(hH,{onClick:()=>b.executeAction(eV)})]})}),(0,e.jsx)(gz,{actionManager:b,showExitZenModeBtn:c})]})};hI.displayName="Footer";var hJ=L.default.createContext({}),hK=({children:a,className:b})=>{let c=kb(),d=(0,L.useContext)(hJ),f=!!(c.editor.canFitSidebar&&d.shouldRenderDockButton);return(0,e.jsxs)("div",{className:(0,av.default)("sidebar__header",b),"data-testid":"sidebar-header",children:[a,(0,e.jsxs)("div",{className:"sidebar__header__buttons",children:[f&&(0,e.jsx)(eu,{label:c8("labels.sidebarLock"),children:(0,e.jsx)(gj,{onSelect:()=>d.onDock?.(!d.docked),selected:!!d.docked,className:"sidebar__dock","data-testid":"sidebar-dock","aria-label":c8("labels.sidebarLock"),children:F.id})}),(0,e.jsx)(gj,{"data-testid":"sidebar-close",className:"sidebar__close",onSelect:d.onCloseRequest,"aria-label":c8("buttons.close"),children:F.ge})]})]})};hK.displayName="SidebarHeader";var hL=({name:a,tab:b,icon:c,title:d,children:f,onToggle:g,className:h,style:i})=>{let j=kf(),k=L.default.useContext(dN);return(0,e.jsxs)("label",{title:d,className:"sidebar-trigger__label-element",children:[(0,e.jsx)("input",{className:"ToolIcon_type_checkbox",type:"checkbox",onChange:c=>{document.querySelector(".layer-ui__wrapper")?.classList.remove("animate");let d=c.target.checked;j({openSidebar:d?{name:a,tab:b}:null}),g?.(d)},checked:k.openSidebar?.name===a,"aria-label":d,"aria-keyshortcuts":"0"}),(0,e.jsxs)("div",{className:(0,av.default)("sidebar-trigger",h),style:i,children:[c&&(0,e.jsx)("div",{children:c}),f&&(0,e.jsx)("div",{className:"sidebar-trigger__label",children:f})]})]})};hL.displayName="SidebarTrigger";var hM=({children:a,...b})=>(0,e.jsx)(cE,{className:"sidebar-triggers",...b,children:a});hM.displayName="SidebarTabTriggers";var hN=({children:a,tab:b,onSelect:c,...d})=>(0,e.jsx)(cF,{value:b,asChild:!0,onSelect:c,children:(0,e.jsx)("button",{type:"button",className:"excalidraw-button sidebar-tab-trigger",...d,children:a})});hN.displayName="SidebarTabTrigger";var hO=({children:a,...b})=>{let c=L.default.useContext(dN),d=kf();if(!c.openSidebar)return null;let{name:f}=c.openSidebar;return(0,e.jsx)(cD,{className:"sidebar-tabs-root",value:c.openSidebar.tab,onValueChange:a=>d(b=>({...b,openSidebar:{...b.openSidebar,name:f,tab:a}})),...b,children:a})};hO.displayName="SidebarTabs";var hP=({tab:a,children:b,...c})=>(0,e.jsx)(cG,{...c,value:a,"data-testid":a,children:b});hP.displayName="SidebarTab";var hQ=O(!1),hR=(0,L.forwardRef)(({name:a,children:b,onDock:c,docked:d,className:f,...g},h)=>{H.a.DEV&&c&&null==d&&console.warn("Sidebar: `docked` must be set when `onDock` is supplied for the sidebar to be user-dockable. To hide this message, either pass `docked` or remove `onDock`");let i=kf(),j=cX(hQ);(0,L.useLayoutEffect)(()=>(j(!!d),()=>{j(!1)}),[j,d]);let k=(0,L.useRef)({});k.current.onCloseRequest=()=>{i({openSidebar:null})},k.current.onDock=a=>c?.(a),k.current=(0,F.Db)(k.current,{docked:d,shouldRenderDockButton:!!c&&null!=d});let l=(0,L.useRef)(null);(0,L.useImperativeHandle)(h,()=>l.current);let m=kb(),n=(0,L.useCallback)(()=>{document.querySelector(".Dialog")||i({openSidebar:null})},[i]);return dP(l,(0,L.useCallback)(a=>{a.target.closest(".sidebar-trigger")||d&&m.editor.canFitSidebar||n()},[n,d,m.editor.canFitSidebar])),(0,L.useEffect)(()=>{let a=a=>{a.key!==F.hg.ESCAPE||d&&m.editor.canFitSidebar||n()};return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)}},[n,d,m.editor.canFitSidebar]),(0,e.jsx)(dU,{...g,className:(0,av.default)("sidebar",{"sidebar--docked":d},f),ref:l,children:(0,e.jsx)(hJ.Provider,{value:k.current,children:b})})});hR.displayName="SidebarInner";var hS=Object.assign((0,L.forwardRef)((a,b)=>{let c=L.default.useContext(dN),{onStateChange:d}=a,e=(0,L.useRef)(c.openSidebar);(0,L.useEffect)(()=>{(c.openSidebar||e?.current?.name!==a.name)&&(c.openSidebar?.name!==a.name||e?.current?.name===a.name)&&e.current?.name!==a.name||c.openSidebar===e.current||d?.(c.openSidebar?.name!==a.name?null:c.openSidebar),e.current=c.openSidebar},[c.openSidebar,d,a.name]);let[f,g]=(0,L.useState)(!1);return(0,L.useLayoutEffect)(()=>(g(!0),()=>g(!1)),[]),f&&c.openSidebar?.name===a.name?(0,L.createElement)(hR,{...a,ref:b,key:a.name}):null}),{Header:hK,TabTriggers:hM,TabTrigger:hN,Tabs:hO,Tab:hP,Trigger:hL});hS.displayName="Sidebar";var hT={};(0,K.c)(hT,{ChangeCanvasBackground:()=>h3,ClearCanvas:()=>h1,CommandPalette:()=>h$,Export:()=>h4,Help:()=>h0,LiveCollaborationTrigger:()=>h6,LoadScene:()=>hX,SaveAsImage:()=>hZ,SaveToActiveFile:()=>hY,SearchMenu:()=>h_,Socials:()=>h5,ToggleTheme:()=>h2});var hU=O({active:!1});async function hV({title:a,description:b,actionLabel:c,color:d}){return new Promise(e=>{c_.set(hU,{active:!0,onConfirm:()=>e(!0),onClose:()=>e(!1),onReject:()=>e(!1),title:a,description:b,actionLabel:c,color:d})})}var hW=({value:a,shortcut:b,onChange:c,choices:d,children:f,name:g})=>{let h=kb();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"dropdown-menu-item-base dropdown-menu-item-bare",children:[(0,e.jsx)("label",{className:"dropdown-menu-item__text",htmlFor:g,children:f}),(0,e.jsx)(g6,{name:g,value:a,onChange:c,choices:d})]}),b&&!h.editor.isMobile&&(0,e.jsx)("div",{className:"dropdown-menu-item__shortcut dropdown-menu-item__shortcut--orphaned",children:b})]})};hW.displayName="DropdownMenuItemContentRadio";var hX=()=>{let{t:a}=da(),b=kg(),c=kd();return b.isActionEnabled(eQ)?(0,e.jsx)(eb,{icon:F.Ld,onSelect:async()=>{(!c.length||await hV({title:a("overwriteConfirm.modal.loadFromFile.title"),actionLabel:a("overwriteConfirm.modal.loadFromFile.button"),color:"warning",description:(0,e.jsx)(fU,{i18nKey:"overwriteConfirm.modal.loadFromFile.description",bold:a=>(0,e.jsx)("strong",{children:a}),br:()=>(0,e.jsx)("br",{})})}))&&b.executeAction(eQ)},"data-testid":"load-button",shortcut:gm("loadScene"),"aria-label":a("buttons.load"),children:a("buttons.load")}):null};hX.displayName="LoadScene";var hY=()=>{let{t:a}=da(),b=kg();return b.isActionEnabled(eO)?(0,e.jsx)(eb,{shortcut:gm("saveScene"),"data-testid":"save-button",onSelect:()=>b.executeAction(eO),icon:F.Jd,"aria-label":`${a("buttons.save")}`,children:`${a("buttons.save")}`}):null};hY.displayName="SaveToActiveFile";var hZ=()=>{let a=kf(),{t:b}=da();return(0,e.jsx)(eb,{icon:F.Od,"data-testid":"image-export-button",onSelect:()=>a({openDialog:{name:"imageExport"}}),shortcut:gm("imageExport"),"aria-label":b("buttons.exportImage"),children:b("buttons.exportImage")})};hZ.displayName="SaveAsImage";var h$=a=>{let b=kf(),{t:c}=da();return(0,e.jsx)(eb,{icon:F.tf,"data-testid":"command-palette-button",onSelect:()=>{dw("command_palette","open","menu"),b({openDialog:{name:"commandPalette"}})},shortcut:gm("commandPalette"),"aria-label":c("commandPalette.title"),className:a?.className,children:c("commandPalette.title")})};h$.displayName="CommandPalette";var h_=a=>{let{t:b}=da(),c=kg();return(0,e.jsx)(eb,{icon:F.pf,"data-testid":"search-menu-button",onSelect:()=>{c.executeAction(gS)},shortcut:gm("searchMenu"),"aria-label":b("search.title"),className:a?.className,children:b("search.title")})};h_.displayName="SearchMenu";var h0=()=>{let{t:a}=da(),b=kg();return(0,e.jsx)(eb,{"data-testid":"help-menu-item",icon:F.Bd,onSelect:()=>b.executeAction(eV),shortcut:"?","aria-label":a("helpDialog.title"),children:a("helpDialog.title")})};h0.displayName="Help";var h1=()=>{let{t:a}=da(),b=cX(gC);return kg().isActionEnabled(ev)?(0,e.jsx)(eb,{icon:F.ud,onSelect:()=>b("clearCanvas"),"data-testid":"clear-canvas-button","aria-label":a("buttons.clearReset"),children:a("buttons.clearReset")}):null};h1.displayName="ClearCanvas";var h2=a=>{let{t:b}=da(),c=L.default.useContext(dN),d=kg(),f=gm("toggleTheme");return d.isActionEnabled(eA)?a?.allowSystemTheme?(0,e.jsx)(hW,{name:"theme",value:a.theme,onChange:b=>a.onSelect(b),choices:[{value:F.G.LIGHT,label:F.yd,ariaLabel:`${b("buttons.lightMode")} - ${f}`},{value:F.G.DARK,label:F.xd,ariaLabel:`${b("buttons.darkMode")} - ${f}`},{value:"system",label:F.Ef,ariaLabel:b("buttons.systemMode")}],children:b("labels.theme")}):(0,e.jsx)(eb,{onSelect:b=>{if(b.preventDefault(),!a?.onSelect)return d.executeAction(eA);a.onSelect(c.theme===F.G.DARK?F.G.LIGHT:F.G.DARK)},icon:c.theme===F.G.DARK?F.yd:F.xd,"data-testid":"toggle-dark-mode",shortcut:f,"aria-label":b(c.theme===F.G.DARK?"buttons.lightMode":"buttons.darkMode"),children:b(c.theme===F.G.DARK?"buttons.lightMode":"buttons.darkMode")}):null};h2.displayName="ToggleTheme";var h3=()=>{let{t:a}=da(),b=L.default.useContext(dN),c=kg(),d=ka();return b.viewModeEnabled||!d.UIOptions.canvasActions.changeViewBackgroundColor?null:(0,e.jsxs)("div",{style:{marginTop:"0.5rem"},children:[(0,e.jsx)("div",{"data-testid":"canvas-background-label",style:{fontSize:".75rem",marginBottom:".5rem"},children:a("labels.canvasBackground")}),(0,e.jsx)("div",{style:{padding:"0 0.625rem"},children:c.renderAction("changeViewBackgroundColor")})]})};h3.displayName="ChangeCanvasBackground";var h4=()=>{let{t:a}=da(),b=kf();return(0,e.jsx)(eb,{icon:F.Ad,onSelect:()=>{b({openDialog:{name:"jsonExport"}})},"data-testid":"json-export-button","aria-label":a("buttons.export"),children:a("buttons.export")})};h4.displayName="Export";var h5=()=>{let{t:a}=da();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(f2,{icon:F.Ed,href:"https://github.com/excalidraw/excalidraw","aria-label":"GitHub",children:"GitHub"}),(0,e.jsx)(f2,{icon:F.Gd,href:"https://x.com/excalidraw","aria-label":"X",children:a("labels.followUs")}),(0,e.jsx)(f2,{icon:F.Fd,href:"https://discord.gg/UexuTaE","aria-label":"Discord",children:a("labels.discordChat")})]})};h5.displayName="Socials";var h6=({onSelect:a,isCollaborating:b})=>{let{t:c}=da();return(0,e.jsx)(eb,{"data-testid":"collab-button",icon:F.fe,className:(0,av.default)({"active-collab":b}),onSelect:a,children:c("labels.liveCollaboration")})};h6.displayName="LiveCollaborationTrigger";var h7=(a,b)=>{let c=O(0),d=a=>{let{tunnelsJotai:{useAtom:d}}=L.default.useContext(gr),[,f]=d(c),g=(0,L.useRef)({preferHost:!1,counter:0});return(0,L.useLayoutEffect)(()=>{let a=g.current;return f(b=>{let c=b+1;return a.counter=c,c}),()=>{f(b=>{let c=b-1;return a.counter=c,c||(a.preferHost=!1),c})}},[f]),a.__fallback||(g.current.preferHost=!0),!g.current.counter&&a.__fallback&&g.current.preferHost||g.current.counter>1&&a.__fallback?null:(0,e.jsx)(b,{...a})};return d.displayName=a,d},h8=Object.assign(h7("MainMenu",({children:a,onSelect:b})=>{let{MainMenuTunnel:c}=L.default.useContext(gr),d=kb(),f=L.default.useContext(dN),g=kf(),h=d.editor.isMobile?void 0:()=>g({openMenu:null});return(0,e.jsx)(c.In,{children:(0,e.jsxs)(f3,{open:"canvas"===f.openMenu,children:[(0,e.jsx)(f3.Trigger,{onToggle:()=>{g({openMenu:"canvas"===f.openMenu?null:"canvas"})},"data-testid":"main-menu-trigger",className:"main-menu-trigger",children:F.zd}),(0,e.jsxs)(f3.Content,{onClickOutside:h,onSelect:(0,F.Ib)(b,()=>{g({openMenu:null})}),children:[a,d.editor.isMobile&&f.collaborators.size>0&&(0,e.jsxs)("fieldset",{className:"UserList-Wrapper",children:[(0,e.jsx)("legend",{children:c8("labels.collaborators")}),(0,e.jsx)(hD,{mobile:!0,collaborators:f.collaborators,userToFollow:f.userToFollow?.socketId||null})]})]})]})})}),{Trigger:f3.Trigger,Item:f3.Item,ItemLink:f3.ItemLink,ItemCustom:f3.ItemCustom,Group:f3.Group,Separator:f3.Separator,DefaultItems:hT}),h9=({title:a,children:b,actionLabel:c,onClick:d})=>(0,e.jsxs)("div",{className:"OverwriteConfirm__Actions__Action",children:[(0,e.jsx)("h4",{children:a}),(0,e.jsx)("div",{className:"OverwriteConfirm__Actions__Action__content",children:b}),(0,e.jsx)(g8,{variant:"outlined",color:"muted",label:c,size:"large",fullWidth:!0,onClick:d})]}),ia=Object.assign(({children:a})=>(0,e.jsx)("div",{className:"OverwriteConfirm__Actions",children:a}),{ExportToImage:()=>{let{t:a}=da(),b=kg(),c=kf();return(0,e.jsx)(h9,{title:a("overwriteConfirm.action.exportToImage.title"),actionLabel:a("overwriteConfirm.action.exportToImage.button"),onClick:()=>{b.executeAction(eN,"ui",!0),c({openDialog:{name:"imageExport"}})},children:a("overwriteConfirm.action.exportToImage.description")})},SaveToDisk:()=>{let{t:a}=da(),b=kg();return(0,e.jsx)(h9,{title:a("overwriteConfirm.action.saveToDisk.title"),actionLabel:a("overwriteConfirm.action.saveToDisk.button"),onClick:()=>{b.executeAction(eP,"ui")},children:a("overwriteConfirm.action.saveToDisk.description")})}}),ib=Object.assign(h7("OverwriteConfirmDialog",({children:a})=>{let{OverwriteConfirmDialogTunnel:b}=L.default.useContext(gr),[c,d]=cW(hU);return c.active?(0,e.jsx)(b.In,{children:(0,e.jsx)(gi,{onCloseRequest:()=>{c.onClose(),d(a=>({...a,active:!1}))},title:!1,size:916,children:(0,e.jsxs)("div",{className:"OverwriteConfirm",children:[(0,e.jsx)("h3",{children:c.title}),(0,e.jsxs)("div",{className:`OverwriteConfirm__Description OverwriteConfirm__Description--color-${c.color}`,children:[(0,e.jsx)("div",{className:"OverwriteConfirm__Description__icon",children:F.cf}),(0,e.jsx)("div",{children:c.description}),(0,e.jsx)("div",{className:"OverwriteConfirm__Description__spacer"}),(0,e.jsx)(g8,{color:c.color,size:"large",label:c.actionLabel,onClick:()=>{c.onConfirm(),d(a=>({...a,active:!1}))}})]}),(0,e.jsx)(ia,{children:a})]})})}):null}),{Actions:ia,Action:h9}),ic=O(""),id=O(null),ie=()=>{let a=j9(),b=kf(),c=(0,L.useRef)(null),[d,f]=cW(ic),g=d.trim(),[h,i]=(0,L.useState)(!1),[j,k]=(0,L.useState)({nonce:null,items:[]}),l=(0,L.useRef)(null),m=(0,L.useRef)(void 0),[n,o]=cW(id),p=a.scene.getNonDeletedElementsMap();(0,L.useEffect)(()=>{h||(g!==l.current||a.scene.getSceneNonce()!==m.current)&&(l.current=null,ik(g,a,(c,d)=>{k({nonce:(0,F.rc)(),items:c}),l.current=g,m.current=a.scene.getSceneNonce(),b({searchMatches:c.map(a=>({id:a.textElement.id,focus:!1,matchedLines:a.matchedLines}))})}))},[h,g,p,a,b,o,m]);let q=()=>{j.items.length>0&&o(a=>null===a?0:(a+1)%j.items.length)},r=()=>{j.items.length>0&&o(a=>null===a?0:a-1<0?j.items.length-1:a-1)};(0,L.useEffect)(()=>{b(a=>({searchMatches:a.searchMatches.map((a,b)=>b===n?{...a,focus:!0}:{...a,focus:!1})}))},[n,b]),(0,L.useEffect)(()=>{if(j.items.length>0&&null!==n){let b=j.items[n];if(b){let c=a.state.zoom.value,d=(0,F.Xf)({text:b.searchQuery,x:b.textElement.x+(b.matchedLines[0]?.offsetX??0),y:b.textElement.y+(b.matchedLines[0]?.offsetY??0),width:b.matchedLines[0]?.width,height:b.matchedLines[0]?.height,fontSize:b.textElement.fontSize,fontFamily:b.textElement.fontFamily}),e=b.textElement.fontSize,f=e*c<14;if(!(0,F.Uj)([d],a.canvas.width/window.devicePixelRatio,a.canvas.height/window.devicePixelRatio,{offsetLeft:a.state.offsetLeft,offsetTop:a.state.offsetTop,scrollX:a.state.scrollX,scrollY:a.state.scrollY,zoom:a.state.zoom},a.scene.getNonDeletedElementsMap(),a.getEditorUIOffsets())||f){let b;b=f?e>=14?{fitToContent:!0}:{fitToViewport:!0,maxZoom:(0,F.Ja)(14/e,1)}:{fitToContent:!0},a.scrollToContent(d,{animate:!0,duration:300,...b,canvasOffsets:a.getEditorUIOffsets()})}}}},[n,j,a]),(0,L.useEffect)(()=>()=>{o(null),l.current=null,m.current=void 0,b({searchMatches:[]}),i(!1)},[b,o]);let s=dQ({goToNextItem:q,goToPreviousItem:r,searchMatches:j});(0,L.useEffect)(()=>(0,F.Pb)(window,"keydown",d=>{if(d.key===F.hg.ESCAPE&&!a.state.openDialog&&!a.state.openPopup){d.preventDefault(),d.stopPropagation(),b({openSidebar:null});return}d[F.hg.CTRL_OR_CMD]&&d.key===F.hg.F&&(d.preventDefault(),d.stopPropagation(),c.current?.matches(":focus")?b({openSidebar:null}):(a.state.openDialog&&b({openDialog:null}),c.current?.focus(),c.current?.select())),d.target instanceof HTMLElement&&d.target.closest(".layer-ui__search")&&s.searchMatches.items.length&&(d.key===F.hg.ENTER&&(d.stopPropagation(),s.goToNextItem()),d.key===F.hg.ARROW_UP?(d.stopPropagation(),s.goToPreviousItem()):d.key===F.hg.ARROW_DOWN&&(d.stopPropagation(),s.goToNextItem()))},{capture:!0,passive:!1}),[b,s,a]);let t=`${j.items.length} ${1===j.items.length?c8("search.singleResult"):c8("search.multipleResults")}`;return(0,e.jsxs)("div",{className:"layer-ui__search",children:[(0,e.jsx)("div",{className:"layer-ui__search-header",children:(0,e.jsx)(gk,{className:F.E.SEARCH_MENU_INPUT_WRAPPER,value:d,ref:c,placeholder:c8("search.placeholder"),icon:F.pf,onChange:c=>{f(c),i(!0);let d=c.trim();ik(d,a,(c,e)=>{k({nonce:(0,F.rc)(),items:c}),o(e),l.current=d,m.current=a.scene.getSceneNonce(),b({searchMatches:c.map(a=>({id:a.textElement.id,focus:!1,matchedLines:a.matchedLines}))}),i(!1)})},selectOnRender:!0})}),(0,e.jsxs)("div",{className:"layer-ui__search-count",children:[j.items.length>0&&(0,e.jsxs)(e.Fragment,{children:[null!==n&&n>-1?(0,e.jsxs)("div",{children:[n+1," / ",t]}):(0,e.jsx)("div",{children:t}),(0,e.jsxs)("div",{className:"result-nav",children:[(0,e.jsx)(gj,{onSelect:()=>{q()},className:"result-nav-btn",children:F.Lf}),(0,e.jsx)(gj,{onSelect:()=>{r()},className:"result-nav-btn",children:F.Nf})]})]}),0===j.items.length&&g&&l.current&&(0,e.jsx)("div",{style:{margin:"1rem auto"},children:c8("search.noMatch")})]}),(0,e.jsx)(ih,{matches:j,onItemClick:o,focusIndex:n,searchQuery:g})]})},ig=a=>{let b=[a.preview.moreBefore?"...":"",a.preview.previewText.slice(0,a.preview.indexInSearchQuery),a.preview.previewText.slice(a.preview.indexInSearchQuery,a.preview.indexInSearchQuery+a.searchQuery.length),a.preview.previewText.slice(a.preview.indexInSearchQuery+a.searchQuery.length),a.preview.moreAfter?"...":""];return(0,e.jsx)("div",{tabIndex:-1,className:(0,av.default)("layer-ui__result-item",{active:a.highlighted}),onClick:a.onClick,ref:b=>{a.highlighted&&b?.scrollIntoView({behavior:"auto",block:"nearest"})},children:(0,e.jsx)("div",{className:"preview-text",children:b.flatMap((a,b)=>(0,e.jsx)(L.Fragment,{children:2===b?(0,e.jsx)("b",{children:a}):a},b))})})},ih=(0,L.memo)(a=>(0,e.jsx)("div",{className:"layer-ui__search-result-container",children:a.matches.items.map((b,c)=>(0,e.jsx)(ig,{searchQuery:a.searchQuery,preview:b.preview,highlighted:c===a.focusIndex,onClick:()=>a.onItemClick(c)},b.textElement.id+b.index))}),(a,b)=>a.matches.nonce===b.matches.nonce&&a.focusIndex===b.focusIndex),ii=(a,b,c)=>{let d=a.slice(0,b),e=d.split(/\s+/),f=d.endsWith(" "),g=e.length-2-1-!f,h=e.slice(g<=0?0:g).join(" ")+(f?" ":"");h=h.length>20?h.slice(-20):h;let i=a.slice(b+c.length),j=i.split(/\s+/),k=!i.startsWith(" "),l=k?6:5,m=(k?"":" ")+j.slice(0,l).join(" ");return{indexInSearchQuery:h.length,previewText:h+c+m,moreBefore:g>0,moreAfter:j.length>l}},ij=(a,b,c)=>{let d=((a,b)=>{let c=a.split(`
5
- `),d=[],e=0;for(let a=0;a<c.length;a++){let f=c[a],g=c[a+1];if(g){let a=b.indexOf(g,e);if(a>f.length+e){let b=a-(f.length+e);for(;b>0;)f+=" ",b--}}d.push(f),e+=f.length}return d.join(`
6
- `)})(a.text,a.originalText).split(`
7
- `),e=[],f=0,g=0;for(let a of d){let b=f,c=b+a.length-1;e.push({line:a,startIndex:b,endIndex:c,lineNumber:g}),f=c+1,g++}let h=c,i=a.originalText.slice(c,c+b.length),j=[];for(let b of e){if(""===i)break;if(h>=b.startIndex&&h<=b.endIndex){let c=b.endIndex+1-h,d=b.line.slice(0,h-b.startIndex),e=i.slice(0,c);i=i.slice(c);let f=(0,F.vc)(d,(0,F.cb)(a),a.lineHeight);if(""===d&&(f.width=0),"left"!==a.textAlign&&b.line.length>0){let c=(0,F.vc)(b.line,(0,F.cb)(a),a.lineHeight),d="center"===a.textAlign?(a.width-c.width)/2:a.width-c.width;f.width+=d}let{width:g,height:k}=(0,F.vc)(e,(0,F.cb)(a),a.lineHeight),l=f.width,m=b.lineNumber*f.height;j.push({offsetX:l,offsetY:m,width:g,height:k}),h+=c}}return j},ik=(0,cJ.default)((a,b,c)=>{if(!a||""===a)return void c([],null);let d=b.scene.getNonDeletedElements().filter(a=>(0,F._b)(a));d.sort((a,b)=>a.y-b.y);let e=[],f=RegExp(a.replace(/[.*+?^${}()|[\]\\-]/g,"\\$&"),"gi");for(let b of d){let c=null,d=b.originalText;for(;null!==(c=f.exec(d));){let f=ii(d,c.index,a),g=ij(b,a,c.index);g.length>0&&e.push({textElement:b,searchQuery:a,preview:f,index:c.index,matchedLines:g})}}let g=new Set(b.visibleElements.map(a=>a.id)),h=e.findIndex(a=>g.has(a.textElement.id))??null;c(e,h)},350),il=h7("DefaultSidebarTrigger",a=>{let{DefaultSidebarTriggerTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:(0,e.jsx)(hS.Trigger,{...a,className:"default-sidebar-trigger",name:F.ya.name})})});il.displayName="DefaultSidebarTrigger";var im=({children:a})=>{let{DefaultSidebarTabTriggersTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:a})};im.displayName="DefaultTabTriggers";var io=Object.assign(h7("DefaultSidebar",({children:a,className:b,onDock:c,docked:d,...f})=>{let g=L.default.useContext(dN),h=kf(),{DefaultSidebarTabTriggersTunnel:i}=L.default.useContext(gr),j=g.openSidebar?.tab===F.xa;return(0,L.createElement)(hS,{...f,name:"default",key:"default",className:(0,av.default)("default-sidebar",b),docked:j||(d??g.defaultSidebarDockedPreference),onDock:j||!1===c||!c&&null!=d?void 0:(0,F.Ib)(c,a=>{h({defaultSidebarDockedPreference:a})})},(0,e.jsxs)(hS.Tabs,{children:[(0,e.jsx)(hS.Header,{children:(0,e.jsxs)(hS.TabTriggers,{children:[(0,e.jsx)(hS.TabTrigger,{tab:F.xa,children:F.pf}),(0,e.jsx)(hS.TabTrigger,{tab:F.wa,children:F.fd}),(0,e.jsx)(i.Out,{})]})}),(0,e.jsx)(hS.Tab,{tab:F.wa,children:(0,e.jsx)(gh,{})}),(0,e.jsx)(hS.Tab,{tab:F.xa,children:(0,e.jsx)(ie,{})}),a]}))}),{Trigger:il,TabTriggers:im}),ip=a=>(0,e.jsxs)("label",{className:(0,av.default)("ToolIcon ToolIcon__LaserPointer","ToolIcon_size_small",{"is-mobile":a.isMobile}),title:`${a.title}`,children:[(0,e.jsx)("input",{className:"ToolIcon_type_checkbox",type:"checkbox",name:a.name,onChange:a.onChange,checked:a.checked,"aria-label":a.title,"data-testid":"toolbar-LaserPointer"}),(0,e.jsx)("div",{className:"ToolIcon__icon",children:F.if})]}),iq=async({canvasRef:a,mermaidToExcalidrawLib:b,mermaidDefinition:c,setError:d,data:e})=>{let f=a.current,g=f?.parentElement;if(!(!f||!g)){if(!c)return void(({canvasRef:a,setError:b})=>{let c=a.current;if(!c)return;let d=c.parentElement;d&&(d.style.background="",b(null),c.replaceChildren())})({canvasRef:a,setError:d});try{let a=await b.api,h;try{h=await a.parseMermaidToExcalidraw(c)}catch{h=await a.parseMermaidToExcalidraw(c.replace(/"/g,"'"))}let{elements:i,files:j={}}=h;d(null),e.current={elements:jt(i,{regenerateIds:!0}),files:j};let k=await (0,F.pi)({elements:e.current.elements,files:e.current.files,exportPadding:F.ma,maxWidthOrHeight:Math.max(g.offsetWidth,g.offsetHeight)*window.devicePixelRatio});try{await (0,F.yh)(k)}catch(a){throw"CANVAS_POSSIBLY_TOO_BIG"===a.name?Error(c8("canvasError.canvasTooBig")):a}g.style.background="var(--default-bg-color)",f.replaceChildren(k)}catch(a){throw g.style.background="var(--default-bg-color)",c&&d(a),a}}},ir=a=>{fX.set(F.Ba.MERMAID_TO_EXCALIDRAW,a)},is=({app:a,data:b,text:c,shouldSaveMermaidDataToStorage:d})=>{let{elements:e,files:f}=b.current;e.length&&(a.addElementsFromPasteOrLibrary({elements:e,files:f,position:"center",fitToContent:!0}),a.setOpenDialog(null),d&&c&&ir(c))},it=({children:a})=>(0,e.jsx)("div",{className:"ttd-dialog-panels",children:a}),iu=({label:a,children:b,panelAction:c,panelActionDisabled:d=!1,onTextSubmitInProgess:f,renderTopRight:g,renderSubmitShortcut:h,renderBottomRight:i})=>(0,e.jsxs)("div",{className:"ttd-dialog-panel",children:[(0,e.jsxs)("div",{className:"ttd-dialog-panel__header",children:[(0,e.jsx)("label",{children:a}),g?.()]}),b,(0,e.jsxs)("div",{className:(0,av.default)("ttd-dialog-panel-button-container",{invisible:!c}),style:{display:"flex",alignItems:"center"},children:[(0,e.jsxs)(gj,{className:"ttd-dialog-panel-button",onSelect:c?c.action:()=>{},disabled:d||f,children:[(0,e.jsxs)("div",{className:(0,av.default)({invisible:f}),children:[c?.label,c?.icon&&(0,e.jsx)("span",{children:c.icon})]}),f&&(0,e.jsx)(db,{})]}),!d&&!f&&h?.(),i?.()]})]}),iv=({input:a,placeholder:b,onChange:c,onKeyboardSubmit:d})=>{let f=(0,L.useRef)(null),g=(0,L.useRef)(d);return g.current=d,(0,L.useEffect)(()=>{if(!g.current)return;let a=f.current;if(a){let b=a=>{a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.ENTER&&(a.preventDefault(),g.current?.())};return a.addEventListener("keydown",b),()=>{a.removeEventListener("keydown",b)}}},[]),(0,e.jsx)("textarea",{className:"ttd-dialog-input",onChange:c,value:a,placeholder:b,autoFocus:!0,ref:f})},iw=({error:a})=>(0,e.jsxs)("div",{"data-testid":"ttd-dialog-output-error",className:"ttd-dialog-output-error",children:["Error! ",(0,e.jsx)("p",{children:a})]}),ix=({error:a,canvasRef:b,loaded:c})=>(0,e.jsxs)("div",{className:"ttd-dialog-output-wrapper",children:[a&&(0,e.jsx)(iw,{error:a.message}),c?(0,e.jsx)("div",{ref:b,style:{opacity:a?"0.15":1},className:"ttd-dialog-output-canvas-container"}):(0,e.jsx)(db,{size:"2rem"})]}),iy=()=>(0,e.jsxs)("div",{className:"ttd-dialog-submit-shortcut",children:[(0,e.jsx)("div",{className:"ttd-dialog-submit-shortcut__key",children:(0,F.kb)("CtrlOrCmd")}),(0,e.jsx)("div",{className:"ttd-dialog-submit-shortcut__key",children:(0,F.kb)("Enter")})]}),iz=`flowchart TD
8
- A[Christmas] -->|Get money| B(Go shopping)
9
- B --> C{Let me think}
10
- C -->|One| D[Laptop]
11
- C -->|Two| E[iPhone]
12
- C -->|Three| F[Car]`,iA=(0,F.db)(ir,300),iB=({mermaidToExcalidrawLib:a})=>{let[b,c]=(0,L.useState)(()=>fX.get(F.Ba.MERMAID_TO_EXCALIDRAW)||iz),d=(0,L.useDeferredValue)(b.trim()),[f,g]=(0,L.useState)(null),h=(0,L.useRef)(null),i=(0,L.useRef)({elements:[],files:null}),j=j9();(0,L.useEffect)(()=>{iq({canvasRef:h,data:i,mermaidToExcalidrawLib:a,setError:g,mermaidDefinition:d}).catch(a=>{(0,F.Bb)()&&console.error("Failed to parse mermaid definition",a)}),iA(d)},[d,a]),(0,L.useEffect)(()=>()=>{iA.flush()},[]);let k=()=>{is({app:j,data:i,text:b,shouldSaveMermaidDataToStorage:!0})};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"ttd-dialog-desc",children:(0,e.jsx)(fU,{i18nKey:"mermaid.description",flowchartLink:a=>(0,e.jsx)("a",{href:"https://mermaid.js.org/syntax/flowchart.html",children:a}),sequenceLink:a=>(0,e.jsx)("a",{href:"https://mermaid.js.org/syntax/sequenceDiagram.html",children:a}),classLink:a=>(0,e.jsx)("a",{href:"https://mermaid.js.org/syntax/classDiagram.html",children:a})})}),(0,e.jsxs)(it,{children:[(0,e.jsx)(iu,{label:c8("mermaid.syntax"),children:(0,e.jsx)(iv,{input:b,placeholder:"Write Mermaid diagram defintion here...",onChange:a=>c(a.target.value),onKeyboardSubmit:()=>{k()}})}),(0,e.jsx)(iu,{label:c8("mermaid.preview"),panelAction:{action:()=>{k()},label:c8("mermaid.button"),icon:F.hf},renderSubmitShortcut:()=>(0,e.jsx)(iy,{}),children:(0,e.jsx)(ix,{canvasRef:h,loaded:a.loaded,error:f})})]})]})},iC=a=>{let b=kf(),c=(0,L.useRef)(null),d=(0,L.useRef)(0);return(0,e.jsx)(cD,{ref:c,className:"ttd-dialog-tabs-root",value:a.tab,onValueChange:e=>{if(!e)return;let f=c.current?.closest(".Modal__content");if(f){let a=f.offsetHeight||0;a>d.current&&(d.current=a,f.style.minHeight=`min(${d.current}px, 100%)`)}"ttd"===a.dialog&&(0,F.Mb)(["text-to-diagram","mermaid"],e)&&b({openDialog:{name:a.dialog,tab:e}})},children:a.children})};iC.displayName="TTDDialogTabs";var iD=({children:a,...b})=>(0,e.jsx)(cE,{className:"ttd-dialog-triggers",...b,children:a});iD.displayName="TTDDialogTabTriggers";var iE=({children:a,tab:b,onSelect:c,...d})=>(0,e.jsx)(cF,{value:b,asChild:!0,onSelect:c,children:(0,e.jsx)("button",{type:"button",className:"ttd-dialog-tab-trigger",...d,children:a})});iE.displayName="TTDDialogTabTrigger";var iF=({tab:a,children:b,...c})=>(0,e.jsx)(cG,{...c,value:a,children:b});iF.displayName="TTDDialogTab";var iG=O(null),iH=O(null),iI=a=>{let b=L.default.useContext(dN);return b.openDialog?.name!=="ttd"?null:(0,e.jsx)(iJ,{...a,tab:b.openDialog.tab})},iJ=h7("TTDDialogBase",({tab:b,...c})=>{let d=j9(),f=kf(),g=(0,L.useRef)(null),[h,i]=cW(iH),[j,k]=(0,L.useState)(h?.prompt??""),l=j.trim(),[m,n]=(0,L.useState)(!1),[o,p]=cW(iG),q=async()=>{if(l.length>1e3||l.length<3||m||o?.rateLimitRemaining===0||"__fallback"in c){l.length<3&&w(Error("Prompt is too short (min 3 characters)")),l.length>1e3&&w(Error("Prompt is too long (max 1000 characters)"));return}try{n(!0),dw("ai","generate","ttd");let{generatedResponse:a,error:b,rateLimit:d,rateLimitRemaining:e}=await c.onTextSubmit(l);if("string"==typeof a&&i(b=>({generatedResponse:a,prompt:b?.prompt??null})),(0,F.La)(d)&&(0,F.La)(e)&&p({rateLimit:d,rateLimitRemaining:e}),b)return void w(b);if(!a)return void w(Error("Generation failed"));try{await iq({canvasRef:g,data:u,mermaidToExcalidrawLib:s,setError:w,mermaidDefinition:a}),dw("ai","mermaid parse success","ttd")}catch(a){console.info(`%cTTD mermaid render errror: ${a.message}`,"color: red"),console.info(`>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13
- TTD mermaid definition render errror: ${a.message}`,"color: yellow"),dw("ai","mermaid parse failed","ttd"),w(Error("Generated an invalid diagram :(. You may also try a different prompt."))}}catch(b){let a=b.message;a&&"Failed to fetch"!==a||(a="Request failed"),w(Error(a))}finally{n(!1)}},r=(0,L.useRef)(q);r.current=q;let[s,t]=(0,L.useState)({loaded:!1,api:a.A(479676)});(0,L.useEffect)(()=>{(async()=>{await s.api,t(a=>({...a,loaded:!0}))})()},[s.api]);let u=(0,L.useRef)({elements:[],files:null}),[v,w]=(0,L.useState)(null);return(0,e.jsx)(gi,{className:"ttd-dialog",onCloseRequest:()=>{d.setOpenDialog(null)},size:1200,title:!1,...c,autofocus:!1,children:(0,e.jsxs)(iC,{dialog:"ttd",tab:b,children:["__fallback"in c&&c.__fallback?(0,e.jsx)("p",{className:"dialog-mermaid-title",children:c8("mermaid.title")}):(0,e.jsxs)(iD,{children:[(0,e.jsx)(iE,{tab:"text-to-diagram",children:(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[c8("labels.textToDiagram"),(0,e.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"1px 6px",marginLeft:"10px",fontSize:10,borderRadius:"12px",background:"var(--color-promo)",color:"var(--color-surface-lowest)"},children:"AI Beta"})]})}),(0,e.jsx)(iE,{tab:"mermaid",children:"Mermaid"})]}),(0,e.jsx)(iF,{className:"ttd-dialog-content",tab:"mermaid",children:(0,e.jsx)(iB,{mermaidToExcalidrawLib:s})}),!("__fallback"in c)&&(0,e.jsxs)(iF,{className:"ttd-dialog-content",tab:"text-to-diagram",children:[(0,e.jsx)("div",{className:"ttd-dialog-desc",children:"Currently we use Mermaid as a middle step, so you'll get best results if you describe a diagram, workflow, flow chart, and similar."}),(0,e.jsxs)(it,{children:[(0,e.jsx)(iu,{label:c8("labels.prompt"),panelAction:{action:q,label:"Generate",icon:F.hf},onTextSubmitInProgess:m,panelActionDisabled:l.length>1e3||o?.rateLimitRemaining===0,renderTopRight:()=>o?(0,e.jsxs)("div",{className:"ttd-dialog-rate-limit",style:{fontSize:12,marginLeft:"auto",color:0===o.rateLimitRemaining?"var(--color-danger)":void 0},children:[o.rateLimitRemaining," requests left today"]}):null,renderSubmitShortcut:()=>(0,e.jsx)(iy,{}),renderBottomRight:()=>{if("string"==typeof h?.generatedResponse)return(0,e.jsxs)("div",{className:"excalidraw-link",style:{marginLeft:"auto",fontSize:14},onClick:()=>{"string"==typeof h?.generatedResponse&&(ir(h.generatedResponse),f({openDialog:{name:"ttd",tab:"mermaid"}}))},children:["View as Mermaid",(0,e.jsx)(d_,{icon:F.hf})]});let a=l.length/1e3;return a>.8?(0,e.jsxs)("div",{style:{marginLeft:"auto",fontSize:12,fontFamily:"monospace",color:a>1?"var(--color-danger)":void 0},children:["Length: ",l.length,"/",1e3]}):null},children:(0,e.jsx)(iv,{onChange:a=>{k(a.target.value),i(b=>({generatedResponse:b?.generatedResponse??null,prompt:a.target.value}))},input:j,placeholder:"Describe what you want to see...",onKeyboardSubmit:()=>{r.current()}})}),(0,e.jsx)(iu,{label:"Preview",panelAction:{action:()=>{console.info("Panel action clicked"),is({app:d,data:u})},label:"Insert",icon:F.hf},children:(0,e.jsx)(ix,{canvasRef:g,error:v,loaded:s.loaded})})]})]})]})})}),iK=(a,b)=>!("height"===b&&(0,F._b)(a)||"width"===b&&(0,F._b)(a)||"angle"===b&&(0,F.bc)(a)),iL=(a,b)=>{let c=a+b/2;return c-c%b},iM=(a,b,c)=>Object.keys(a).map(a=>({original:(c??b).get(a),latest:b.get(a)})).filter(a=>void 0!==a.original&&void 0!==a.latest),iN=(a,b,c,d,e,f,g,h=!0)=>{let i=d.get(c.id);if(!i)return;let[j,k]=[c.x+c.width/2,c.y+c.height/2],[l,m]=(0,F.Va)((0,F.Ua)(c.x,c.y),(0,F.Ua)(j,k),c.angle),n=a-l,o=b-m,[p,q]=(0,F.Va)((0,F.Ua)(a,b),(0,F.Ua)(j+n,k+o),-c.angle);(0,F.Pj)(i,{x:p,y:q},h),iP(i,d,e,f);let r=(0,F.zj)(c,g);if(r){let a=d.get(r.id);a&&(0,F.Pj)(a,{x:r.x+n,y:r.y+o},h)}},iO=(a,b)=>{let c=(0,F.Mc)(b).map(b=>(0,F.Qc)(a,b).reduce((a,b)=>(a[b.id]=!0,a),{}));return a.filter(a=>!(0,F.Wc)(a)).forEach(a=>{c.push({[a.id]:!0})}),c},iP=(a,b,c,d,e)=>{(0,F.cc)(a)?(0,F.Jg)([a],b,c,d,!0,[],e?.zoom):(0,F.Pg)(a,b,e)},iQ=({label:a,icon:b,dragInputCallback:c,value:d,elements:f,editable:g=!0,shouldKeepAspectRatio:h,property:i,scene:j,appState:k,sensitivity:l=1})=>{let m=j9(),n=(0,L.useRef)(null),o=(0,L.useRef)(null),[p,q]=(0,L.useState)(d.toString()),r=(0,L.useRef)(null);r.current||(r.current={originalAppState:(0,F.Nb)(k),originalElements:f,lastUpdatedValue:p,updatePending:!1}),(0,L.useEffect)(()=>{let a=d.toString();q(a),r.current.lastUpdatedValue=a},[d]);let s=(a,b,e)=>{if(!r.current.updatePending)return!1;r.current.updatePending=!1;let f=Number(a);if(isNaN(f))return void q(d.toString());let g=Number(f.toFixed(2)),k=Number(d);(isNaN(k)||Math.abs(g-k)>=.01)&&(r.current.lastUpdatedValue=a,c({accumulatedChange:0,instantChange:0,originalElements:b,originalElementsMap:m.scene.getNonDeletedElementsMap(),shouldKeepAspectRatio:h,shouldChangeByStepSize:!1,scene:j,nextValue:g,property:i,originalAppState:e,setInputValue:a=>q(String(a))}),m.syncActionResult({captureUpdate:F.Wg.IMMEDIATELY}))},t=(0,L.useRef)({});return t.current.handleInputValue=s,(0,L.useEffect)(()=>{let a=n.current,b=t.current;return()=>{let c=a?.value;c&&b.handleInputValue?.(c,r.current.originalElements,r.current.originalAppState),window.removeEventListener("pointermove",b.onPointerMove,!1),window.removeEventListener("pointerup",b.onPointerUp,!1)}},[g]),g?(0,e.jsxs)("div",{className:(0,av.default)("drag-input-container",!g&&"disabled"),"data-testid":a,children:[(0,e.jsx)("div",{className:"drag-input-label",ref:o,onPointerDown:a=>{if(n.current&&g){document.body.classList.add("excalidraw-cursor-resize");let a=Number(n.current.value);isNaN(a)&&(a=0);let b=null,d=m.scene.getNonDeletedElements().reduce((a,b)=>(a.set(b.id,(0,F.bg)(b)),a),new Map),e=f.map(a=>d.get(a.id)),g=(0,F.Nb)(k),o=0,p=0,r=a=>{if(b&&null!==d&&null!==e){let f=a.clientX-b.x;0!==f&&Math.abs(p+=f)>=l&&(c({accumulatedChange:o+=p=Math.sign(p)*Math.floor(Math.abs(p)/l),instantChange:p,originalElements:e,originalElementsMap:d,shouldKeepAspectRatio:h,shouldChangeByStepSize:a.shiftKey,property:i,scene:j,originalAppState:g,setInputValue:a=>q(String(a))}),p=0)}b={x:a.clientX,y:a.clientY}},s=()=>{window.removeEventListener("pointermove",r,!1),m.syncActionResult({captureUpdate:F.Wg.IMMEDIATELY}),b=null,o=0,p=0,e=null,d=null,document.body.classList.remove("excalidraw-cursor-resize"),window.removeEventListener("pointerup",s,!1)};t.current.onPointerMove=r,t.current.onPointerUp=s,window.addEventListener("pointermove",r,!1),window.addEventListener("pointerup",s,!1)}},onPointerEnter:()=>{o.current&&(o.current.style.cursor="ew-resize")},children:b?(0,e.jsx)(d_,{icon:b}):a}),(0,e.jsx)("input",{className:"drag-input",autoComplete:"off",spellCheck:"false",onKeyDown:a=>{if(g){let b=a.target;b instanceof HTMLInputElement&&a.key===F.hg.ENTER&&(s(b.value,f,k),m.focusContainer())}},ref:n,value:p,onChange:a=>{r.current.updatePending=!0,q(a.target.value)},onFocus:a=>{a.target.select(),r.current.originalElements=f,r.current.originalAppState=(0,F.Nb)(k)},onBlur:a=>{p?g&&s(a.target.value,r.current.originalElements,r.current.originalAppState):q(d.toString())},disabled:!g})]}):null},iR=({accumulatedChange:a,originalElements:b,originalElementsMap:c,shouldKeepAspectRatio:d,shouldChangeByStepSize:e,nextValue:f,property:g,originalAppState:h,instantChange:i,scene:j})=>{let k=j.getNonDeletedElementsMap(),l=b[0],m=k.get(l.id);if(l&&m){let b=d||"image"===l.type,j=l.width/l.height;if(h.croppingElementId===l.id){let a=k.get(l.id);if(!a||!(0,F.Wb)(a)||!a.crop)return;let b=a.crop,c={...b},d=-1===a.scale[0],e=-1===a.scale[1],{width:h,height:j}=(0,F.ch)(a),m=b.naturalWidth/h,n=b.naturalHeight/j,o=d?b.width+b.x:b.naturalWidth-b.x,p=e?b.height+b.y:b.naturalHeight-b.y,q=F.ah*m,r=F.ah*n;if(void 0!==f){if("width"===g){let a=f*m,e=(0,F.Ia)(a,q,o);c={...c,width:e,x:d?b.x+b.width-e:b.x}}else if("height"===g){let a=f*n,d=(0,F.Ia)(a,r,p);c={...c,height:d,y:e?b.y+b.height-d:b.y}}(0,F.Pj)(a,{crop:c,width:c.width/(b.naturalWidth/h),height:c.height/(b.naturalHeight/j)});return}let s=(0,F.Ia)(b.width+("width"===g?i:0),q,o),t=(0,F.Ia)(b.height+("height"===g?i:0),q,p);c={...b,x:d?b.x+b.width-s:b.x,y:e?b.y+b.height-t:b.y,width:s,height:t},(0,F.Pj)(a,{crop:c,width:c.width/(b.naturalWidth/h),height:c.height/(b.naturalHeight/j)});return}if(void 0!==f){let a=Math.max("width"===g?f:b?f*j:l.width,F.Ea),d=Math.max("height"===g?f:b?f/j:l.height,F.Ea);(0,F.gk)(a,d,m,l,k,c,"width"===g?"e":"s",{shouldMaintainAspectRatio:b});return}let n=Math.max(0,l.width+("width"===g?a:0));"width"===g&&(n=e?iL(n,10):Math.round(n));let o=Math.max(0,l.height+("height"===g?a:0));"height"===g&&(o=e?iL(o,10):Math.round(o)),b&&("width"===g?o=Math.round(n/j*100)/100:n=Math.round(o*j*100)/100),o=Math.max(F.Ea,o),n=Math.max(F.Ea,n),(0,F.gk)(n,o,m,l,k,c,"width"===g?"e":"s",{shouldMaintainAspectRatio:b})}},iS=({property:a,element:b,scene:c,appState:d})=>{let f=(0,F.Ja)("width"===a?b.width:b.height,2);if(d.croppingElementId&&d.croppingElementId===b.id&&(0,F.Wb)(b)&&b.crop){let{width:c,height:d}=(0,F.ch)(b);if("width"===a){let a=c/b.crop.naturalWidth;f=(0,F.Ja)(b.crop.width*a,2)}if("height"===a){let a=d/b.crop.naturalHeight;f=(0,F.Ja)(b.crop.height*a,2)}}return(0,e.jsx)(iQ,{label:"width"===a?"W":"H",elements:[b],dragInputCallback:iR,value:f,editable:iK(b,a),scene:c,appState:d,property:a})},iT=({accumulatedChange:a,originalElements:b,shouldChangeByStepSize:c,nextValue:d,scene:e})=>{let f=e.getNonDeletedElementsMap(),g=e.getNonDeletedElements(),h=b[0];if(h&&!(0,F.ec)(h)){let b=f.get(h.id);if(!b)return;if(void 0!==d){let a=(0,F.Ma)(d);(0,F.Pj)(b,{angle:a}),iP(b,f,g,e);let c=(0,F.zj)(b,f);c&&!(0,F.dc)(b)&&(0,F.Pj)(c,{angle:a});return}let i=(Math.round(100*(0,F.Na)(h.angle))/100+Math.round(a))%360;c&&(i=iL(i,15)),i=i<0?i+360:i;let j=(0,F.Ma)(i);(0,F.Pj)(b,{angle:j}),iP(b,f,g,e);let k=(0,F.zj)(b,f);k&&!(0,F.dc)(b)&&(0,F.Pj)(k,{angle:j})}},iU=({element:a,scene:b,appState:c,property:d})=>(0,e.jsx)(iQ,{label:"A",icon:F.We,value:Math.round((0,F.Na)(a.angle)%360*100)/100,elements:[a],dragInputCallback:iT,editable:iK(a,"angle"),scene:b,appState:c,property:d}),iV=({accumulatedChange:a,originalElements:b,shouldChangeByStepSize:c,nextValue:d,scene:e})=>{let f=e.getNonDeletedElementsMap(),g=b[0];if(g){let b,h=f.get(g.id);if(!h||!(0,F._b)(h))return;void 0!==d?b=Math.max(Math.round(d),4):"text"===g.type&&(b=Math.max(Math.round(g.fontSize)+Math.round(a),4),c&&(b=iL(b,4))),b&&((0,F.Pj)(h,{fontSize:b}),(0,F.uj)(h,e.getContainerElement(h),e.getNonDeletedElementsMap()))}},iW=({element:a,scene:b,appState:c,property:d})=>{let f=(0,F._b)(a)?a:(0,F.mc)(a)?(0,F.zj)(a,b.getNonDeletedElementsMap()):null;return f?(0,e.jsx)(iQ,{label:"F",value:Math.round(10*f.fontSize)/10,elements:[f],dragInputCallback:iV,icon:F.Ne,appState:c,scene:b,property:d}):null},iX=(a,b,c,d,e,f,g,h)=>{let i,j,k,l,m=(i=f.x-a,j=f.y-b,{width:k=f.width*d,height:l=f.height*d,x:a+i*d,y:b+j*d,...(0,F.dk)(f,k,l,!1),...(0,F._b)(f)?{fontSize:f.fontSize*d}:{}});(0,F.Pj)(e,m,!1);let n=(0,F.zj)(f,h);if(n){let a=n.fontSize*d;(0,F.Pg)(e,g,{newSize:{width:m.width,height:m.height}});let b=g.get(n.id);b&&(0,F._b)(b)&&((0,F.Pj)(b,{fontSize:a},!1),(0,F.wj)(e,g,"width"===c?"e":"s",!0))}},iY=(a,b,c,d,e,f,g,h,i,j)=>{"width"===f?b=Math.round(a/d*100)/100:a=Math.round(b*d*100)/100;let k=b/c;for(let a=0;a<h.length;a++){let b=h[a],c=g[a];iX(e[0],e[1],f,k,c,b,i,j)}},iZ=({accumulatedChange:a,originalElements:b,originalElementsMap:c,originalAppState:d,shouldChangeByStepSize:e,nextValue:f,scene:g,property:h})=>{let i=g.getNonDeletedElementsMap(),j=iO(b,d);if(void 0!==f){for(let a of j){let b=iM(a,i,c);if(b.length>1){let a=b.map(a=>a.latest),d=b.map(a=>a.original),[e,g,j,k]=(0,F.bj)(d),l=j-e,m=k-g,n=l/m;iY(Math.max(F.Ea,"width"===h?Math.max(0,f):l),Math.max(F.Ea,"height"===h?Math.max(0,f):m),m,n,(0,F.Ua)(e,g),h,a,d,i,c)}else{let[a]=b,d=a?.latest,g=a?.original;if(d&&g&&iK(d,h)){let a="width"===h?Math.max(0,f):d.width;"width"===h&&(a=e?iL(a,10):Math.round(a));let b="height"===h?Math.max(0,f):d.height;"height"===h&&(b=e?iL(b,10):Math.round(b)),a=Math.max(F.Ea,a),b=Math.max(F.Ea,b),(0,F.gk)(a,b,d,g,i,c,"width"===h?"e":"s",{shouldInformMutation:!1})}}}g.triggerUpdate();return}let k="width"===h?a:0,l="height"===h?a:0;for(let a of j){let b=iM(a,i,c);if(b.length>1){let a=b.map(a=>a.latest),d=b.map(a=>a.original),[f,g,j,m]=(0,F.bj)(d),n=j-f,o=m-g,p=n/o,q=Math.max(0,n+k);"width"===h&&(q=e?iL(q,10):Math.round(q));let r=Math.max(0,o+l);"height"===h&&(r=e?iL(r,10):Math.round(r)),iY(q=Math.max(F.Ea,q),r=Math.max(F.Ea,r),o,p,(0,F.Ua)(f,g),h,a,d,i,c)}else{let[a]=b,d=a?.latest,f=a?.original;if(d&&f&&iK(d,h)){let a=Math.max(0,f.width+k);"width"===h&&(a=e?iL(a,10):Math.round(a));let b=Math.max(0,f.height+l);"height"===h&&(b=e?iL(b,10):Math.round(b)),a=Math.max(F.Ea,a),b=Math.max(F.Ea,b),(0,F.gk)(a,b,d,f,i,c,"width"===h?"e":"s",{shouldInformMutation:!1})}}}g.triggerUpdate()},i$=({property:a,elements:b,elementsMap:c,atomicUnits:d,scene:f,appState:g})=>{let h=(0,L.useMemo)(()=>d.map(b=>{let d=iM(b,c);if(d.length>1){let[b,c,e,f]=(0,F.bj)(d.map(a=>a.latest));return Math.round(("width"===a?e-b:f-c)*100)/100}let[e]=d;return Math.round(("width"===a?e.latest.width:e.latest.height)*100)/100}),[c,d,a]),i=1===new Set(h).size?Math.round(100*h[0])/100:"Mixed",j=h.length>0;return(0,e.jsx)(iQ,{label:"width"===a?"W":"H",elements:b,dragInputCallback:iZ,value:i,editable:j,appState:g,property:a,scene:f})},i_=({accumulatedChange:a,originalElements:b,shouldChangeByStepSize:c,nextValue:d,property:e,scene:f})=>{let g=f.getNonDeletedElementsMap(),h=b.map(a=>g.get(a.id)).filter(a=>a&&!(0,F.Wc)(a)&&iK(a,e)),i=b.filter(a=>!(0,F.Wc)(a)&&iK(a,e));if(void 0!==d){let a=(0,F.Ma)(d);for(let b of h){if(!b)continue;(0,F.Pj)(b,{angle:a},!1);let c=(0,F.zj)(b,g);c&&!(0,F.dc)(b)&&(0,F.Pj)(c,{angle:a},!1)}f.triggerUpdate();return}for(let b=0;b<h.length;b++){let d=h[b];if(!d)continue;let e=i[b],f=(Math.round(100*(0,F.Na)(e.angle))/100+Math.round(a))%360;c&&(f=iL(f,15)),f=f<0?f+360:f;let j=(0,F.Ma)(f);(0,F.Pj)(d,{angle:j},!1);let k=(0,F.zj)(d,g);k&&!(0,F.dc)(d)&&(0,F.Pj)(k,{angle:j},!1)}f.triggerUpdate()},i0=({elements:a,scene:b,appState:c,property:d})=>{let f=a.filter(a=>!(0,F.Wc)(a)&&iK(a,"angle")),g=f.map(a=>Math.round((0,F.Na)(a.angle)%360*100)/100),h=1===new Set(g).size?g[0]:"Mixed",i=f.some(a=>iK(a,"angle"));return(0,e.jsx)(iQ,{label:"A",icon:F.We,value:h,elements:a,dragInputCallback:i_,editable:i,appState:c,scene:b,property:d})},i1=({accumulatedChange:a,originalElements:b,shouldChangeByStepSize:c,nextValue:d,scene:e})=>{let f=e.getNonDeletedElementsMap(),g=b.map(a=>f.get(a.id)),h;if(d){for(let a of(h=Math.max(Math.round(d),4),g))(0,F.Pj)(a,{fontSize:h},!1),(0,F.uj)(a,e.getContainerElement(a),f,!1);e.triggerUpdate()}else{for(let d=0;d<g.length;d++){let h=g[d],i=Math.max(Math.round(b[d].fontSize)+Math.round(a),4);c&&(i=iL(i,4)),(0,F.Pj)(h,{fontSize:i},!1),(0,F.uj)(h,e.getContainerElement(h),f,!1)}e.triggerUpdate()}},i2=({elements:a,scene:b,appState:c,property:d,elementsMap:f})=>{let g=a.reduce((a,b)=>{if(!b||(0,F.Wc)(b))return a;if((0,F._b)(b))return a.push(b),a;if((0,F.mc)(b)){let c=(0,F.zj)(b,f);if(c)return a.push(c),a}return a},[]);if(!g.length)return null;let h=g.map(a=>Math.round(10*a.fontSize)/10),i=1===new Set(h).size?h[0]:"Mixed",j=h.length>0;return(0,e.jsx)(iQ,{label:"F",icon:F.Ne,elements:g,dragInputCallback:i1,value:i,editable:j,scene:b,property:d,appState:c})},i3=({accumulatedChange:a,instantChange:b,originalElements:c,originalElementsMap:d,shouldChangeByStepSize:e,nextValue:f,property:g,scene:h,originalAppState:i})=>{let j=h.getNonDeletedElementsMap(),k=h.getNonDeletedElements(),l=c[0],[m,n]=[l.x+l.width/2,l.y+l.height/2],[o,p]=(0,F.Va)((0,F.Ua)(l.x,l.y),(0,F.Ua)(m,n),l.angle);if(i.croppingElementId===l.id){let a=j.get(l.id);if(!a||!(0,F.Wb)(a)||!a.crop)return;let c=a.crop,d=c,e=-1===a.scale[0],h=-1===a.scale[1],{width:i,height:k}=(0,F.ch)(a);if(void 0!==f){if("x"===g){let a=f*(c.naturalWidth/i);d=e?{...c,x:(0,F.Ia)(c.naturalWidth-a-c.width,0,c.naturalWidth-c.width)}:{...c,x:(0,F.Ia)(f*(c.naturalWidth/i),0,c.naturalWidth-c.width)}}"y"===g&&(d={...c,y:(0,F.Ia)(f*(c.naturalHeight/k),0,c.naturalHeight-c.height)}),(0,F.Pj)(a,{crop:d});return}d={...c,x:(0,F.Ia)(c.x+("x"===g?b:0)*(e?-1:1),0,c.naturalWidth-c.width),y:(0,F.Ia)(c.y+("y"===g?b:0)*(h?-1:1),0,c.naturalHeight-c.height)},(0,F.Pj)(a,{crop:d});return}if(void 0!==f)return void iN("x"===g?f:o,"y"===g?f:p,l,j,k,h,d);let q="x"===g?a:0,r="y"===g?a:0;iN("x"===g?Math.round(e?iL(l.x+q,10):o+q):o,"y"===g?Math.round(e?iL(l.y+r,10):p+r):p,l,j,k,h,d)},i4=({property:a,element:b,elementsMap:c,scene:d,appState:f})=>{let[g,h]=(0,F.Va)((0,F.Ua)(b.x,b.y),(0,F.Ua)(b.x+b.width/2,b.y+b.height/2),b.angle),i=(0,F.Ja)("x"===a?g:h,2);if(f.croppingElementId===b.id&&(0,F.Wb)(b)&&b.crop){let c=(0,F.dh)(b);c&&(i=(0,F.Ja)("x"===a?c.x:c.y,2))}return(0,e.jsx)(iQ,{label:"x"===a?"X":"Y",elements:[b],dragInputCallback:i3,scene:d,value:i,property:a,appState:f})},i5=(a,b,c,d,e,f,g)=>{let[h,i,,]=(0,F.bj)(c),j=a-h,k=b-i;for(let a=0;a<c.length;a++){let b=c[a],h=d.get(b.id);if(h&&(!(0,F._b)(h)||!h.containerId)){let[a,c]=[h.x+h.width/2,h.y+h.height/2],[i,l]=(0,F.Va)((0,F.Ua)(h.x,h.y),(0,F.Ua)(a,c),h.angle);iN(i+j,l+k,b,d,e,g,f,!1)}}},i6=({accumulatedChange:a,originalElements:b,originalElementsMap:c,shouldChangeByStepSize:d,nextValue:e,property:f,scene:g,originalAppState:h})=>{let i=g.getNonDeletedElementsMap(),j=g.getNonDeletedElements();if(void 0!==e){for(let a of iO(b,h)){let b=iM(a,i,c);if(b.length>1){let[a,d,,]=(0,F.bj)(b.map(a=>a.latest));i5("x"===f?e:a,"y"===f?e:d,b.map(a=>a.original),i,j,c,g)}else{let a=b[0]?.original,d=b[0]?.latest;if(a&&d&&iK(d,f)){let[b,d]=[a.x+a.width/2,a.y+a.height/2],[h,k]=(0,F.Va)((0,F.Ua)(a.x,a.y),(0,F.Ua)(b,d),a.angle);iN("x"===f?e:h,"y"===f?e:k,a,i,j,g,c,!1)}}}g.triggerUpdate();return}let k=d?iL(a,10):a;((a,b,c,d,e,f,g,h)=>{for(let i=0;i<d.length;i++){let j=e[i],[k,l]=[j.x+j.width/2,j.y+j.height/2],[m,n]=(0,F.Va)((0,F.Ua)(j.x,j.y),(0,F.Ua)(k,l),j.angle);iN("x"===a?Math.round(m+b):m,"y"===a?Math.round(n+c):n,j,f,d,h,g,!1)}})(f,"x"===f?k:0,"y"===f?k:0,b,b,i,c,g),g.triggerUpdate()},i7=({property:a,elements:b,elementsMap:c,atomicUnits:d,scene:f,appState:g})=>{let h=(0,L.useMemo)(()=>d.map(b=>{let d=Object.keys(b).map(a=>c.get(a)).filter(a=>void 0!==a);if(d.length>1){let[b,c]=(0,F.bj)(d);return Math.round(("x"===a?b:c)*100)/100}let[e]=d,[f,g]=[e.x+e.width/2,e.y+e.height/2],[h,i]=(0,F.Va)((0,F.Ua)(e.x,e.y),(0,F.Ua)(f,g),e.angle);return Math.round(("x"===a?h:i)*100)/100}),[d,c,a]),i=1===new Set(h).size?h[0]:"Mixed";return(0,e.jsx)(iQ,{label:"x"===a?"X":"Y",elements:b,dragInputCallback:i6,value:i,property:a,scene:f,appState:g})},i8=({property:a,scene:b,appState:c,setAppState:d})=>(0,e.jsx)(iQ,{label:"Grid step",sensitivity:8,elements:[],dragInputCallback:({nextValue:a,instantChange:b,shouldChangeByStepSize:c,setInputValue:e})=>{d(d=>{let f;return a?f=a:b&&(f=c?iL(d.gridStep+5*Math.sign(b),5):d.gridStep+b),f?(e(f=(0,F.Bk)(f)),{gridStep:f}):(e(d.gridStep),null)})},scene:b,value:c.gridStep,property:a,appState:c}),i9=a=>{let b=ke(),c=a.app.scene.getSceneNonce()||1,d=a.app.scene.getSelectedElements({selectedElementIds:b.selectedElementIds,includeBoundTextElement:!1}),f=(0,F.fj)(a.app);return(0,e.jsx)(jc,{...a,appState:b,sceneNonce:c,selectedElements:d,gridModeEnabled:f})},ja=({children:a,columns:b=1,heading:c,style:d,...f})=>(0,e.jsx)("div",{className:(0,av.default)("exc-stats__row",{"exc-stats__row--heading":c}),style:{gridTemplateColumns:`repeat(${b}, 1fr)`,...d},...f,children:a});ja.displayName="StatsRow";var jb=({children:a,order:b,style:c,...d})=>(0,e.jsx)("div",{className:"exc-stats__rows",style:{order:b,...c},...d,children:a});jb.displayName="StatsRows",i9.StatsRow=ja,i9.StatsRows=jb;var jc=(0,L.memo)(({app:a,onClose:b,renderCustomStats:c,selectedElements:d,appState:f,sceneNonce:g,gridModeEnabled:h})=>{let i=a.scene,j=i.getNonDeletedElements(),k=i.getNonDeletedElementsMap(),l=kf(),m=1===d.length?d[0]:null,n=d.length>1?d:null,o=f.croppingElementId&&(0,F.Wb)(m),p=o?(0,F.ch)(m):null,[q,r]=(0,L.useState)({width:0,height:0}),s=(0,L.useMemo)(()=>(0,bO.default)(a=>{let b=(0,F.bj)(a);r({width:Math.round(b[2])-Math.round(b[0]),height:Math.round(b[3])-Math.round(b[1])})},50),[]);(0,L.useEffect)(()=>{s(j)},[g,j,s]),(0,L.useEffect)(()=>()=>s.cancel(),[s]);let t=(0,L.useMemo)(()=>iO(d,f),[d,f]),u=(0,L.useMemo)(()=>(0,F.Qi)(d),[d]);return(0,e.jsx)("div",{className:"exc-stats",children:(0,e.jsxs)(dU,{padding:3,children:[(0,e.jsxs)("div",{className:"title",children:[(0,e.jsx)("h2",{children:c8("stats.title")}),(0,e.jsx)("div",{className:"close",onClick:b,children:F.ge})]}),(0,e.jsxs)(d0,{label:(0,e.jsx)("h3",{children:c8("stats.generalStats")}),open:!!(f.stats.panels&F.Da.generalStats),openTrigger:()=>l(a=>({stats:{open:!0,panels:a.stats.panels^F.Da.generalStats}})),children:[(0,e.jsxs)(jb,{children:[(0,e.jsx)(ja,{heading:!0,children:c8("stats.scene")}),(0,e.jsxs)(ja,{columns:2,children:[(0,e.jsx)("div",{children:c8("stats.shapes")}),(0,e.jsx)("div",{children:j.length})]}),(0,e.jsxs)(ja,{columns:2,children:[(0,e.jsx)("div",{children:c8("stats.width")}),(0,e.jsx)("div",{children:q.width})]}),(0,e.jsxs)(ja,{columns:2,children:[(0,e.jsx)("div",{children:c8("stats.height")}),(0,e.jsx)("div",{children:q.height})]}),h&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(ja,{heading:!0,children:"Canvas"}),(0,e.jsx)(ja,{children:(0,e.jsx)(i8,{property:"gridStep",scene:i,appState:f,setAppState:l})})]})]}),c?.(j,f)]}),!u&&d.length>0&&(0,e.jsx)("div",{id:"elementStats",style:{marginTop:12},children:(0,e.jsx)(d0,{label:(0,e.jsx)("h3",{children:c8("stats.elementProperties")}),open:!!(f.stats.panels&F.Da.elementProperties),openTrigger:()=>l(a=>({stats:{open:!0,panels:a.stats.panels^F.Da.elementProperties}})),children:(0,e.jsxs)(jb,{children:[m&&(0,e.jsxs)(e.Fragment,{children:[o&&(0,e.jsx)(ja,{heading:!0,children:c8("labels.unCroppedDimension")}),f.croppingElementId&&(0,F.Wb)(m)&&p&&(0,e.jsxs)(ja,{columns:2,children:[(0,e.jsx)("div",{children:c8("stats.width")}),(0,e.jsx)("div",{children:(0,F.Ja)(p.width,2)})]}),f.croppingElementId&&(0,F.Wb)(m)&&p&&(0,e.jsxs)(ja,{columns:2,children:[(0,e.jsx)("div",{children:c8("stats.height")}),(0,e.jsx)("div",{children:(0,F.Ja)(p.height,2)})]}),(0,e.jsx)(ja,{heading:!0,"data-testid":"stats-element-type",children:f.croppingElementId?c8("labels.imageCropping"):c8(`element.${m.type}`)}),(0,e.jsx)(ja,{children:(0,e.jsx)(i4,{element:m,property:"x",elementsMap:k,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i4,{element:m,property:"y",elementsMap:k,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(iS,{property:"width",element:m,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(iS,{property:"height",element:m,scene:i,appState:f})}),!(0,F.ec)(m)&&(0,e.jsx)(ja,{children:(0,e.jsx)(iU,{property:"angle",element:m,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(iW,{property:"fontSize",element:m,scene:i,appState:f})})]}),n&&(0,e.jsxs)(e.Fragment,{children:[(0,F.Vc)(n)&&(0,e.jsx)(ja,{heading:!0,children:c8("element.group")}),(0,e.jsxs)(ja,{columns:2,style:{margin:"0.3125rem 0"},children:[(0,e.jsx)("div",{children:c8("stats.shapes")}),(0,e.jsx)("div",{children:d.length})]}),(0,e.jsx)(ja,{children:(0,e.jsx)(i7,{property:"x",elements:n,elementsMap:k,atomicUnits:t,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i7,{property:"y",elements:n,elementsMap:k,atomicUnits:t,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i$,{property:"width",elements:n,elementsMap:k,atomicUnits:t,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i$,{property:"height",elements:n,elementsMap:k,atomicUnits:t,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i0,{property:"angle",elements:n,scene:i,appState:f})}),(0,e.jsx)(ja,{children:(0,e.jsx)(i2,{property:"fontSize",elements:n,scene:i,appState:f,elementsMap:k})})]})]})})})]})})},(a,b)=>a.sceneNonce===b.sceneNonce&&a.selectedElements===b.selectedElements&&a.appState.stats.panels===b.appState.stats.panels&&a.gridModeEnabled===b.gridModeEnabled&&a.appState.gridStep===b.appState.gridStep&&a.appState.croppingElementId===b.appState.croppingElementId),jd=({sourceElementId:a,onClose:b,elementsMap:c,appState:d,generateLinkForSelection:f=F.Yh})=>{let g=c.get(a)?.link??null,[h,i]=(0,L.useState)(g),[j,k]=(0,L.useState)(!1);(0,L.useEffect)(()=>{let a=(0,F.vk)(c,d),b=g;if(a.length>0&&f){let c=(0,F.Zh)(a,d);c&&(b=(0,F.Xc)(f(c.id,c.type)))}i(b)},[c,d,d.selectedElementIds,g,f]);let l=(0,L.useCallback)(()=>{if(h&&h!==c.get(a)?.link){let b=c.get(a);b&&(0,F.Pj)(b,{link:h})}if(!h&&j&&a){let b=c.get(a);b&&(0,F.Pj)(b,{link:null})}b?.()},[a,h,c,j,b]);return(0,L.useEffect)(()=>{let a=a=>{d.openDialog?.name==="elementLinkSelector"&&a.key===F.hg.ENTER&&l(),d.openDialog?.name==="elementLinkSelector"&&a.key===F.hg.ESCAPE&&b?.()};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[d,b,l]),(0,e.jsxs)("div",{className:"ElementLinkDialog",children:[(0,e.jsxs)("div",{className:"ElementLinkDialog__header",children:[(0,e.jsx)("h2",{children:c8("elementLink.title")}),(0,e.jsx)("p",{children:c8("elementLink.desc")})]}),(0,e.jsxs)("div",{className:"ElementLinkDialog__input",children:[(0,e.jsx)(gk,{value:h??"",onChange:a=>{j||k(!0),i(a)},onKeyDown:a=>{a.key===F.hg.ENTER&&l()},className:"ElementLinkDialog__input-field",selectOnRender:!0}),g&&h&&(0,e.jsx)(de,{type:"button",title:c8("buttons.remove"),"aria-label":c8("buttons.remove"),label:c8("buttons.remove"),onClick:()=>{i(null),k(!0)},className:"ElementLinkDialog__remove",icon:F.ud})]}),(0,e.jsxs)("div",{className:"ElementLinkDialog__actions",children:[(0,e.jsx)(fV,{label:c8("buttons.cancel"),onClick:()=>{b?.()},style:{marginRight:10}}),(0,e.jsx)(fV,{label:c8("buttons.confirm"),onClick:l,actionType:"primary"})]})]})},je=({UIOptions:a})=>(0,e.jsxs)(h8,{__fallback:!0,children:[(0,e.jsx)(h8.DefaultItems.LoadScene,{}),(0,e.jsx)(h8.DefaultItems.SaveToActiveFile,{}),a.canvasActions.export&&(0,e.jsx)(h8.DefaultItems.Export,{}),a.canvasActions.saveAsImage&&(0,e.jsx)(h8.DefaultItems.SaveAsImage,{}),(0,e.jsx)(h8.DefaultItems.SearchMenu,{}),(0,e.jsx)(h8.DefaultItems.Help,{}),(0,e.jsx)(h8.DefaultItems.ClearCanvas,{}),(0,e.jsx)(h8.Separator,{}),(0,e.jsx)(h8.Group,{title:"Excalidraw links",children:(0,e.jsx)(h8.DefaultItems.Socials,{})}),(0,e.jsx)(h8.Separator,{}),(0,e.jsx)(h8.DefaultItems.ToggleTheme,{}),(0,e.jsx)(h8.DefaultItems.ChangeCanvasBackground,{})]}),jf=()=>(0,e.jsxs)(ib,{__fallback:!0,children:[(0,e.jsx)(ib.Actions.SaveToDisk,{}),(0,e.jsx)(ib.Actions.ExportToImage,{})]}),jg=a=>{let{suggestedBindings:b,startBoundElement:c,cursorButton:d,scrollX:e,scrollY:f,...g}=a;return g},jh=L.default.memo(({actionManager:a,appState:b,files:c,setAppState:d,elements:f,canvas:g,onLockToggle:h,onHandToolToggle:i,onPenModeToggle:j,showExitZenModeBtn:k,renderTopRightUI:l,renderCustomStats:m,UIOptions:n,onExportImage:o,renderWelcomeScreen:p,children:q,app:r,isCollaborating:s,generateLinkForSelection:t})=>{let u,v,w=kb(),x=L.default.useMemo(()=>({MainMenuTunnel:bZ(),WelcomeScreenMenuHintTunnel:bZ(),WelcomeScreenToolbarHintTunnel:bZ(),WelcomeScreenHelpHintTunnel:bZ(),WelcomeScreenCenterTunnel:bZ(),FooterCenterTunnel:bZ(),DefaultSidebarTriggerTunnel:bZ(),DefaultSidebarTabTriggersTunnel:bZ(),OverwriteConfirmDialogTunnel:bZ(),TTDDialogTriggerTunnel:bZ(),tunnelsJotai:gs}),[]),y=x.tunnelsJotai.Provider,[z,A]=cW(dR),B=()=>n.canvasActions.export?(0,e.jsx)(hG,{elements:f,appState:b,files:c,actionManager:a,exportOpts:n.canvasActions.export,canvas:g,setAppState:d}):null,C=()=>n.canvasActions.saveAsImage&&b.openDialog?.name==="imageExport"?(0,e.jsx)(hd,{elements:f,appState:b,files:c,actionManager:a,onExportImage:o,onCloseRequest:()=>d({openDialog:null}),name:r.getName()}):null,D=()=>(0,e.jsx)(io,{__fallback:!0,onDock:a=>{dw("sidebar",`toggleDock (${a?"dock":"undock"})`,`(${w.editor.isMobile?"mobile":"desktop"})`)}}),E=cY(hQ),G=(0,e.jsxs)(e.Fragment,{children:[q,(0,e.jsx)(je,{UIOptions:n}),(0,e.jsx)(io.Trigger,{__fallback:!0,icon:F.fd,title:(0,F.Ya)(c8("toolBar.library")),onToggle:a=>{a&&dw("sidebar",`${F.ya.name} (open)`,`button (${w.editor.isMobile?"mobile":"desktop"})`)},tab:F.ya.defaultTab,children:c8("toolBar.library")}),(0,e.jsx)(jf,{}),b.openDialog?.name==="ttd"&&(0,e.jsx)(iI,{__fallback:!0}),b.isLoading&&(0,e.jsx)(dc,{delay:250}),b.errorMessage&&(0,e.jsx)(g5,{onClose:()=>d({errorMessage:null}),children:b.errorMessage}),z&&!w.editor.isMobile&&(0,e.jsx)(dS,{colorPickerType:z.colorPickerType,onCancel:()=>{A(null)},onChange:(a,b,c,{altKey:e})=>{if("elementBackground"===a||"elementStroke"===a)if(c.length){for(let d of c)(0,F.Pj)(d,{[e&&z.swapPreviewOnAlt?"elementBackground"===a?"strokeColor":"backgroundColor":"elementBackground"===a?"backgroundColor":"strokeColor"]:b},!1),F.ed.delete(d);F.Oj.getScene(c[0])?.triggerUpdate()}else d("elementBackground"===a?{currentItemBackgroundColor:b}:{currentItemStrokeColor:b})},onSelect:(a,b)=>{A(a=>a?.keepOpenOnAlt&&b.altKey?a:null),z?.onSelect?.(a,b)}}),b.openDialog?.name==="help"&&(0,e.jsx)(hz,{onClose:()=>{d({openDialog:null})}}),(0,e.jsx)(gD,{}),b.openDialog?.name==="elementLinkSelector"&&(0,e.jsx)(jd,{sourceElementId:b.openDialog.sourceElementId,onClose:()=>{d({openDialog:null})},elementsMap:r.scene.getNonDeletedElementsMap(),appState:b,generateLinkForSelection:t}),(0,e.jsx)(x.OverwriteConfirmDialogTunnel.Out,{}),C(),B(),b.pasteDialog.shown&&(0,e.jsx)(ht,{setAppState:d,appState:b,onClose:()=>d({pasteDialog:{shown:!1,data:null}})}),w.editor.isMobile&&(0,e.jsx)(hr,{app:r,appState:b,elements:f,actionManager:a,renderJSONExportDialog:B,renderImageExportDialog:C,setAppState:d,onLockToggle:h,onHandToolToggle:i,onPenModeToggle:j,renderTopRightUI:l,renderCustomStats:m,renderSidebars:D,device:w,renderWelcomeScreen:p,UIOptions:n}),!w.editor.isMobile&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"layer-ui__wrapper",style:b.openSidebar&&E&&w.editor.canFitSidebar?{width:"calc(100% - var(--right-sidebar-width))"}:{},children:[p&&(0,e.jsx)(x.WelcomeScreenCenterTunnel.Out,{}),(u=(0,F.lk)(b,f),v=b.stats.open&&!b.zenModeEnabled&&!b.viewModeEnabled&&b.openDialog?.name!=="elementLinkSelector",(0,e.jsx)(he,{side:"top",children:(0,e.jsxs)("div",{className:"App-menu App-menu_top",children:[(0,e.jsxs)(fN,{gap:6,className:(0,av.default)("App-menu_top__left"),children:[(0,e.jsxs)("div",{style:{position:"relative"},children:[(0,e.jsx)(x.MainMenuTunnel.Out,{}),p&&(0,e.jsx)(x.WelcomeScreenMenuHintTunnel.Out,{})]}),u&&(0,e.jsx)(hn,{heading:"selectedShapeActions",className:(0,av.default)("selected-shape-actions zen-mode-transition",{"transition-left":b.zenModeEnabled}),children:(0,e.jsx)(dU,{className:F.E.SHAPE_ACTIONS_MENU,padding:2,style:{maxHeight:`${b.height-166}px`},children:(0,e.jsx)(gv,{appState:b,elementsMap:r.scene.getNonDeletedElementsMap(),renderAction:a.renderAction,app:r})})})]}),!b.viewModeEnabled&&b.openDialog?.name!=="elementLinkSelector"&&(0,e.jsx)(hn,{heading:"shapes",className:"shapes-section",children:a=>(0,e.jsxs)("div",{style:{position:"relative"},children:[p&&(0,e.jsx)(x.WelcomeScreenToolbarHintTunnel.Out,{}),(0,e.jsx)(fN,{gap:4,align:"start",children:(0,e.jsxs)(fM,{gap:1,className:(0,av.default)("App-toolbar-container",{"zen-mode":b.zenModeEnabled}),children:[(0,e.jsxs)(dU,{padding:1,className:(0,av.default)("App-toolbar",{"zen-mode":b.zenModeEnabled}),children:[(0,e.jsx)(hk,{appState:b,isMobile:w.editor.isMobile,device:w,app:r}),a,(0,e.jsxs)(fM,{gap:1,children:[(0,e.jsx)(hp,{zenModeEnabled:b.zenModeEnabled,checked:b.penMode,onChange:()=>j(null),title:c8("toolBar.penMode"),penDetected:b.penDetected}),(0,e.jsx)(hm,{checked:b.activeTool.locked,onChange:h,title:c8("toolBar.lock")}),(0,e.jsx)("div",{className:"App-toolbar__divider"}),(0,e.jsx)(hq,{checked:(0,F.Hc)(b),onChange:()=>i(),title:c8("toolBar.hand"),isMobile:!0}),(0,e.jsx)(gw,{appState:b,activeTool:b.activeTool,UIOptions:n,app:r})]})]}),s&&(0,e.jsx)(dU,{style:{marginLeft:8,alignSelf:"center",height:"fit-content"},children:(0,e.jsx)(ip,{title:c8("toolBar.laser"),checked:b.activeTool.type===F.Aa.laser,onChange:()=>r.setActiveTool({type:F.Aa.laser}),isMobile:!0})})]})})]})}),(0,e.jsxs)("div",{className:(0,av.default)("layer-ui__wrapper__top-right zen-mode-transition",{"transition-right":b.zenModeEnabled}),children:[b.collaborators.size>0&&(0,e.jsx)(hD,{collaborators:b.collaborators,userToFollow:b.userToFollow?.socketId||null}),l?.(w.editor.isMobile,b),!b.viewModeEnabled&&b.openDialog?.name!=="elementLinkSelector"&&(!E||b.openSidebar?.name!==F.ya.name)&&(0,e.jsx)(x.DefaultSidebarTriggerTunnel.Out,{}),v&&(0,e.jsx)(i9,{app:r,onClose:()=>{a.executeAction(fi)},renderCustomStats:m})]})]})})),(0,e.jsx)(hI,{appState:b,actionManager:a,showExitZenModeBtn:k,renderWelcomeScreen:p}),b.scrolledOutside&&(0,e.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{d(a=>({...(0,F.zk)(f,a)}))},children:c8("buttons.scrollBackToContent")})]}),D()]})]});return(0,e.jsx)(dN.Provider,{value:b,children:(0,e.jsx)(y,{children:(0,e.jsx)(gr.Provider,{value:x,children:G})})})},(a,b)=>{if(a.children!==b.children)return!1;let{canvas:c,appState:d,...e}=a,{canvas:f,appState:g,...h}=b;return(0,F.Hb)(jg(d),jg(g),{selectedElementIds:F.Hb,selectedGroupIds:F.Hb})&&(0,F.Hb)(e,h)}),ji=5e3,jj=({message:a,onClose:b,closable:c=!1,duration:d=ji,style:f})=>{let g=(0,L.useRef)(0),h=d!==1/0,i=(0,L.useCallback)(()=>{h&&(g.current=window.setTimeout(()=>b(),d))},[b,d,h]);return(0,L.useEffect)(()=>{if(h)return i(),()=>clearTimeout(g.current)},[i,a,d,h]),(0,e.jsxs)("div",{className:"Toast",onMouseEnter:h?()=>clearTimeout(g?.current):void 0,onMouseLeave:h?i:void 0,style:f,children:[(0,e.jsx)("p",{className:"Toast__message",children:a}),c&&(0,e.jsx)(de,{icon:F.ge,"aria-label":"close",type:"icon",onClick:b,className:"close"})]})},jk=(0,F.$c)({name:"viewMode",label:"labels.viewMode",paletteName:"Toggle view mode",icon:F.lf,viewMode:!0,trackEvent:{category:"canvas",predicate:a=>!a.viewModeEnabled},perform(a,b){return{appState:{...b,viewModeEnabled:!this.checked(b)},captureUpdate:F.Wg.EVENTUALLY}},checked:a=>a.viewModeEnabled,predicate:(a,b,c)=>typeof c.viewModeEnabled>"u",keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&a.altKey&&a.code===F.gg.R}),jl=(a,b)=>{let c=b.scene.getSelectedElements(a);return 1===c.length&&(0,F.bc)(c[0])},jm=(0,F.$c)({name:"selectAllElementsInFrame",label:"labels.selectAllElementsInFrame",trackEvent:{category:"canvas"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b).at(0)||null;if((0,F.bc)(e)){let c=(0,F.Bi)((0,F.pk)(a),e.id).filter(a=>!("text"===a.type&&a.containerId));return{elements:a,appState:{...b,selectedElementIds:c.reduce((a,b)=>(a[b.id]=!0,a),{})},captureUpdate:F.Wg.IMMEDIATELY}}return{elements:a,appState:b,captureUpdate:F.Wg.EVENTUALLY}},predicate:(a,b,c,d)=>jl(b,d)}),jn=(0,F.$c)({name:"removeAllElementsFromFrame",label:"labels.removeAllElementsFromFrame",trackEvent:{category:"history"},perform:(a,b,c,d)=>{let e=d.scene.getSelectedElements(b).at(0)||null;return(0,F.bc)(e)?{elements:(0,F.Ki)(a,e),appState:{...b,selectedElementIds:{[e.id]:!0}},captureUpdate:F.Wg.IMMEDIATELY}:{elements:a,appState:b,captureUpdate:F.Wg.EVENTUALLY}},predicate:(a,b,c,d)=>jl(b,d)}),jo=((0,F.$c)({name:"updateFrameRendering",label:"labels.updateFrameRendering",viewMode:!0,trackEvent:{category:"canvas"},perform:(a,b)=>({elements:a,appState:{...b,frameRendering:{...b.frameRendering,enabled:!b.frameRendering.enabled}},captureUpdate:F.Wg.EVENTUALLY}),checked:a=>a.frameRendering.enabled}),(0,F.$c)({name:"setFrameAsActiveTool",label:"toolBar.frame",trackEvent:{category:"toolbar"},icon:F.ff,viewMode:!1,perform:(a,b,c,d)=>{let e=(0,F.jb)(b,{type:"frame"});return(0,F.dd)(d.interactiveCanvas,{...b,activeTool:e}),{elements:a,appState:{...b,activeTool:(0,F.jb)(b,{type:"frame"})},captureUpdate:F.Wg.EVENTUALLY}},keyTest:a=>!a[F.hg.CTRL_OR_CMD]&&!a.shiftKey&&!a.altKey&&a.key.toLocaleLowerCase()===F.hg.F}),(0,F.$c)({name:"wrapSelectionInFrame",label:"labels.wrapSelectionInFrame",trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=(0,F.vk)(a,b);return e.length>0&&!e.some(a=>(0,F.bc)(a))},perform:(a,b,c,d)=>{let e=(0,F.vk)(a,b),[f,g,h,i]=(0,F.bj)(e,d.scene.getNonDeletedElementsMap()),j=(0,F.Vf)({x:f-16,y:g-16,width:h-f+32,height:i-g+32});if(b.editingGroupId)for(let a of(0,F.Qc)(e,b.editingGroupId)){let c=a.groupIds.indexOf(b.editingGroupId);(0,F.Pj)(a,{groupIds:a.groupIds.slice(0,c)},!1)}return{elements:(0,F.Ii)([...d.scene.getElementsIncludingDeleted(),j],e,j,b),appState:{selectedElementIds:{[j.id]:!0}},captureUpdate:F.Wg.IMMEDIATELY}}})),jp=()=>(0,e.jsxs)("div",{"data-testid":"brave-measure-text-error",children:[(0,e.jsx)("p",{children:(0,e.jsx)(fU,{i18nKey:"errors.brave_measure_text_error.line1",bold:a=>(0,e.jsx)("span",{style:{fontWeight:600},children:a})})}),(0,e.jsx)("p",{children:(0,e.jsx)(fU,{i18nKey:"errors.brave_measure_text_error.line2",bold:a=>(0,e.jsx)("span",{style:{fontWeight:600},children:a})})}),(0,e.jsx)("p",{children:(0,e.jsx)(fU,{i18nKey:"errors.brave_measure_text_error.line3",link:a=>(0,e.jsx)("a",{href:"http://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#turning-off-aggresive-block-fingerprinting-in-brave-browser",children:a})})}),(0,e.jsx)("p",{children:(0,e.jsx)(fU,{i18nKey:"errors.brave_measure_text_error.line4",issueLink:a=>(0,e.jsx)("a",{href:"https://github.com/excalidraw/excalidraw/issues/new",children:a}),discordLink:a=>(0,e.jsxs)("a",{href:"https://discord.gg/UexuTaE",children:[a,"."]})})})]}),jq=(a,b,c)=>{let d=(0,F.Xf)({x:0,y:0,textAlign:F.ta.CENTER,verticalAlign:F.sa.MIDDLE,...b,containerId:a.id,strokeColor:b.strokeColor||a.strokeColor});return Object.assign(a,{boundElements:(a.boundElements||[]).concat({type:"text",id:d.id})}),(0,F.uj)(d,a,c),[a,d]},jr=(a,b,c,d,e)=>{let f,g;if(Object.assign(a,{startBinding:a?.startBinding||null,endBinding:a.endBinding||null}),b){let c=b?.width??100,g=b?.height??100,h;b.id&&((h=d.getElement(b.id))||console.error(`No element for start binding with id ${b.id} found`));let i=b.x||a.x-c,j=b.y||a.y-g/2,k=h?h.type:b.type;if(k){if("text"===k){let c="";h&&"text"===h.type?c=h.text:"text"===b.type&&(c=b.text),c||console.error(`No text found for start binding text element for ${a.id}`),Object.assign(f=(0,F.Xf)({x:i,y:j,type:"text",...h,...b,text:c}),{x:b.x||a.x-f.width,y:b.y||a.y-f.height/2})}else switch(k){case"rectangle":case"ellipse":case"diamond":f=(0,F.Sf)({x:i,y:j,width:c,height:g,...h,...b,type:k});break;default:(0,F.Jb)(a,`Unhandled element start type "${b.type}"`,!0)}(0,F.Mg)(a,f,"start",e)}}if(c){let b=c?.height??100,f=c?.width??100,h;c.id&&((h=d.getElement(c.id))||console.error(`No element for end binding with id ${c.id} found`));let i=c.x||a.x+a.width,j=c.y||a.y-b/2,k=h?h.type:c.type;if(k){if("text"===k){let b="";h&&"text"===h.type?b=h.text:"text"===c.type&&(b=c.text),b||console.error(`No text found for end binding text element for ${a.id}`),Object.assign(g=(0,F.Xf)({x:i,y:j,type:"text",...h,...c,text:b}),{y:c.y||a.y-g.height/2})}else switch(k){case"rectangle":case"ellipse":case"diamond":g=(0,F.Sf)({x:i,y:j,width:f,height:b,...h,...c,type:k});break;default:(0,F.Jb)(a,`Unhandled element end type "${k}"`,!0)}(0,F.Mg)(a,g,"end",e)}}if(a.points.length<2)return{linearElement:a,startBoundElement:f,endBoundElement:g};let h=a.points.length-1,i=(0,F.Nb)(a.points);return a.points[h][0]>a.points[h-1][0]&&(i[0][0]=.5,i[h][0]-=.5),a.points[h][0]<a.points[h-1][0]&&(i[0][0]=-.5,i[h][0]+=.5),a.points[h][1]>a.points[h-1][1]&&(i[0][1]=.5,i[h][1]-=.5),a.points[h][1]<a.points[h-1][1]&&(i[0][1]=-.5,i[h][1]+=.5),Object.assign(a,{points:i}),{linearElement:a,startBoundElement:f,endBoundElement:g}},js=class{constructor(){(0,K.d)(this,"excalidrawElements",new Map),(0,K.d)(this,"add",a=>{a&&this.excalidrawElements.set(a.id,a)}),(0,K.d)(this,"getElements",()=>(0,F.Nj)(Array.from(this.excalidrawElements.values()))),(0,K.d)(this,"getElementsMap",()=>(0,F.Sb)((0,F.xb)(this.getElements()))),(0,K.d)(this,"getElement",a=>this.excalidrawElements.get(a))}},jt=(a,b)=>{if(!a)return[];let c=(0,F.Nb)(a),d=new js,e=new Map,f=new Map;for(let a of c){let c,g=a.id;switch(b?.regenerateIds!==!1&&Object.assign(a,{id:(0,F.sc)()}),a.type){case"rectangle":case"ellipse":case"diamond":{let b=a?.label?.text&&void 0===a.width?0:a?.width||100,d=a?.label?.text&&void 0===a.height?0:a?.height||100;c=(0,F.Sf)({...a,width:b,height:d});break}case"line":{let b=a.width||100,d=a.height||0;c=(0,F._f)({width:b,height:d,points:[(0,F.Ua)(0,0),(0,F.Ua)(b,d)],...a});break}case"arrow":{let b=a.width||100,d=a.height||0;Object.assign(c=(0,F.$f)({width:b,height:d,endArrowhead:"arrow",points:[(0,F.Ua)(0,0),(0,F.Ua)(b,d)],...a,type:"arrow"}),(0,F.hh)(c.points));break}case"text":{let b=a?.fontFamily||F.J,d=a?.fontSize||F.I,e=a?.lineHeight||(0,F.Rf)(b),f=a.text??"",g=(0,F.zc)(f),h=(0,F.vc)(g,(0,F.cb)({fontFamily:b,fontSize:d}),e);c=(0,F.Xf)({width:h.width,height:h.height,fontFamily:b,fontSize:d,...a});break}case"image":c=(0,F.ag)({width:a?.width||100,height:a?.height||100,...a});break;case"frame":c=(0,F.Vf)({x:0,y:0,...a});break;case"magicframe":c=(0,F.Wf)({x:0,y:0,...a});break;case"freedraw":case"iframe":case"embeddable":c=a;break;default:c=a,(0,F.Jb)(a,`Unhandled element type "${a.type}"`,!0)}d.getElement(c.id)?console.error(`Duplicate id found for ${c.id}`):(d.add(c),e.set(c.id,a),g&&f.set(g,c.id))}let g=d.getElementsMap();for(let[a,b]of e){let c=d.getElement(a);switch(b.type){case"rectangle":case"ellipse":case"diamond":case"arrow":if(b.label?.text){let[a,e]=jq(c,b?.label,g);if(d.add(a),d.add(e),(0,F.dc)(a)){let c="arrow"===b.type?b?.start:void 0,e="arrow"===b.type?b?.end:void 0;if(c&&c.id){let a=f.get(c.id);a&&Object.assign(c,{id:a})}if(e&&e.id){let a=f.get(e.id);a&&Object.assign(e,{id:a})}let{linearElement:h,startBoundElement:i,endBoundElement:j}=jr(a,c,e,d,g);a=h,d.add(h),d.add(i),d.add(j)}}else if("arrow"===b.type){let{start:a,end:e}=b;if(a&&a.id){let b=f.get(a.id);Object.assign(a,{id:b})}if(e&&e.id){let a=f.get(e.id);Object.assign(e,{id:a})}let{linearElement:h,startBoundElement:i,endBoundElement:j}=jr(c,a,e,d,g);d.add(h),d.add(i),d.add(j)}}}for(let[a,b]of e){if("frame"!==b.type&&"magicframe"!==b.type)continue;let c=d.getElement(a);if(!c)throw Error(`Excalidraw element with id ${a} doesn't exist`);let e=[];b.children.forEach(a=>{let b=f.get(a);if(!b)throw Error(`Element with ${a} wasn't mapped correctly`);let g=d.getElement(b);if(!g)throw Error(`Frame element with id ${b} doesn't exist`);Object.assign(g,{frameId:c.id}),g?.boundElements?.forEach(a=>{let b=d.getElement(a.id);if(!b)throw Error(`Bound element with id ${a.id} doesn't exist`);Object.assign(b,{frameId:c.id}),e.push(b)}),e.push(g)});let[g,h,i,j]=(0,F.bj)(e);g-=10,h-=10,i+=10,j+=10;let k=c?.x||g,l=c?.y||h,m=c?.width||i-g,n=c?.height||j-h;Object.assign(c,{x:k,y:l,width:m,height:n}),(0,F.Bb)()&&b.children.length&&(c?.x||c?.y||c?.width||c?.height)&&console.info("User provided frame attributes are being considered, if you find this inaccurate, please remove any of the attributes - x, y, width and height so frame coordinates and dimensions are calculated automatically")}return d.getElements()},ju=a=>b=>{(0,aw.unstable_batchedUpdates)(a,b)},jv=a=>(0,F.eb)(b=>{(0,aw.unstable_batchedUpdates)(a,b)}),jw=(()=>{let a;try{let b=L.version.split(".");a=Number(b[0])>17}catch{a=!1}let b=!1;return()=>!0===window.EXCALIDRAW_THROTTLE_RENDER&&(!!a||(b||(b=!0,console.warn("Excalidraw: render throttling is disabled on React versions < 18.")),!1))})(),jx=(a,b,c)=>{for(let d of(c.zenModeEnabled||jA(a.points[0],a.points[a.points.length-1],b),a.points))jz(d,c,b)},jy=(a,b,c)=>{jz(a.points[0],c,b),c.zenModeEnabled||jA(a.points[0],a.points[1],b)},jz=([a,b],c,d)=>{d.save();let e=(c.zenModeEnabled?3:2)/c.zoom.value;d.beginPath(),d.moveTo(a-e,b-e),d.lineTo(a+e,b+e),d.moveTo(a+e,b-e),d.lineTo(a-e,b+e),d.stroke(),d.restore()},jA=(a,b,c)=>{c.beginPath(),c.lineTo(a[0],a[1]),c.lineTo(b[0],b[1]),c.stroke()},jB=(a,b,c,d,e)=>{let f=8/d.zoom.value,g=f/2,h=f/4;if("horizontal"===c){let c=[(a[0]+b[0])/2,a[1]];d.zenModeEnabled||jA((0,F.Ua)(a[0],a[1]-f),(0,F.Ua)(a[0],a[1]+f),e),jA((0,F.Ua)(c[0]-h,c[1]-g),(0,F.Ua)(c[0]-h,c[1]+g),e),jA((0,F.Ua)(c[0]+h,c[1]-g),(0,F.Ua)(c[0]+h,c[1]+g),e),d.zenModeEnabled||(jA((0,F.Ua)(b[0],b[1]-f),(0,F.Ua)(b[0],b[1]+f),e),jA(a,b,e))}else{let c=[a[0],(a[1]+b[1])/2];d.zenModeEnabled||jA((0,F.Ua)(a[0]-f,a[1]),(0,F.Ua)(a[0]+f,a[1]),e),jA((0,F.Ua)(c[0]-g,c[1]-h),(0,F.Ua)(c[0]+g,c[1]-h),e),jA((0,F.Ua)(c[0]-g,c[1]+h),(0,F.Ua)(c[0]+g,c[1]+h),e),d.zenModeEnabled||(jA((0,F.Ua)(b[0]-f,b[1]),(0,F.Ua)(b[0]+f,b[1]),e),jA(a,b,e))}},jC=(a,b,c)=>{b.fillStyle="rgba(105, 101, 219, 0.4)",(0,F.Vh)(b,a[0],a[1],F.pj.POINT_HANDLE_SIZE/c.zoom.value,!1)},jD=(a,b,c,d,e,f,g,h,i=!1,j=0)=>{a.save(),a.translate(f,g),a.rotate(h),i&&a.fillRect(b-f,c-g,d,e),j&&a.roundRect?(a.beginPath(),a.roundRect(b-f,c-g,d,e,j),a.stroke(),a.closePath()):a.strokeRect(b-f,c-g,d,e),a.restore()},jE=(a,b,c,d,e,f=!1)=>{a.strokeStyle="#5e5ad8",a.setLineDash([]),a.fillStyle="rgba(255, 255, 255, 0.9)",e?a.fillStyle="rgba(134, 131, 226, 0.9)":f&&(a.fillStyle="rgba(177, 151, 252, 0.7)"),(0,F.Vh)(a,c[0],c[1],d/b.zoom.value,!f)},jF=(a,b,c,d)=>{var e,f,g,h;let[i,j,k,l]=(0,F.aj)(b,c),m=k-i,n=l-j;a.strokeStyle="rgba(0,0,0,.05)";let o=d.value<1?d.value:1;a.lineWidth=F.Gg/o;let p=a.lineWidth/2+F.Hg,q=(0,F.wg)(Math.min(b.width,b.height),b);switch(b.type){case"rectangle":case"text":case"image":case"iframe":case"embeddable":case"frame":case"magicframe":jD(a,i-p,j-p,m+2*p,n+2*p,i+m/2,j+n/2,b.angle,void 0,q);break;case"diamond":let r=Math.hypot(m,n);e=m+p*r/n*2,f=n+p*r/m*2,g=b.angle,a.save(),a.translate(i+m/2,j+n/2),a.rotate(g),a.beginPath(),a.moveTo(0,f/2),a.lineTo(e/2,0),a.lineTo(0,-f/2),a.lineTo(-e/2,0),a.closePath(),a.stroke(),a.restore();break;case"ellipse":h=b.angle,a.beginPath(),a.ellipse(i+m/2,j+n/2,(m+2*p)/2,(n+2*p)/2,h,0,2*Math.PI),a.stroke()}},jG=(a,b,c,d)=>{let[e,f,g]=b,h=(0,F.Ug)(g,g.width,g.height,d);a.strokeStyle="rgba(0,0,0,0)",a.fillStyle="rgba(0,0,0,.05)",("both"===f?[0,-1]:"start"===f?[0]:[-1]).forEach(b=>{let[d,f]=F.pj.getPointAtIndexGlobalCoordinates(e,b,c);(0,F.Vh)(a,d,f,h)})},jH=(a,b,c)=>{let{angle:d,x1:e,y1:f,x2:g,y2:h,selectionColors:i,cx:j,cy:k,dashed:l,activeEmbeddable:m}=c,n=g-e,o=h-f,p=(c.padding??2*F.M)/b.zoom.value,q=8/b.zoom.value,r=4/b.zoom.value;a.save(),a.translate(b.scrollX,b.scrollY),a.lineWidth=(m?4:1)/b.zoom.value;let s=i.length;for(let b=0;b<s;++b)a.strokeStyle=i[b],l&&a.setLineDash([q,r+(q+r)*(s-1)]),a.lineDashOffset=(q+r)*b,jD(a,e-p,f-p,n+2*p,o+2*p,j,k,d);a.restore()},jI=(a,b,c,d)=>{if(!b.selectedLinearElement)return;a.save(),a.translate(b.scrollX,b.scrollY),a.lineWidth=1/b.zoom.value;let e=F.pj.getPointsGlobalCoordinates(c,d),{POINT_HANDLE_SIZE:f}=F.pj,g=b.editingLinearElement?f:f/2;if(e.forEach((d,f)=>{if((0,F.ec)(c)&&0!==f&&f!==e.length-1)return;let h=!!b.editingLinearElement?.selectedPointsIndices?.includes(f);jE(a,b,d,g,h)}),(0,F.ec)(c)){let d=c.fixedSegments?.map(a=>a.index)||[];e.slice(0,-1).forEach((g,h)=>{F.pj.isSegmentTooShort(c,e[h+1],e[h],h,b.zoom)||jE(a,b,(0,F.Ua)((g[0]+e[h+1][0])/2,(g[1]+e[h+1][1])/2),f/2,!1,!d.includes(h+1))})}else F.pj.getEditorMidPoints(c,d,b).filter((a,b,d)=>null!==a&&!((0,F.ec)(c)&&(0===b||b===d.length-1))).forEach(c=>{(b.editingLinearElement||2===e.length)&&jE(a,b,c,f/2,!1,!0)});a.restore()},jJ=(a,b,c,d,e)=>{Object.keys(d).forEach(f=>{let g=d[f];if(void 0!==g){let[d,h,i,j]=g;a.save(),a.lineWidth=1/c.zoom.value,b.selectionColor&&(a.strokeStyle=b.selectionColor),"rotation"===f?(0,F.Vh)(a,d+i/2,h+j/2,i/2):a.roundRect?(a.beginPath(),a.roundRect(d,h,i,j,2/c.zoom.value),a.fill(),a.stroke()):jD(a,d,h,i,j,d+i/2,h+j/2,e,!0),a.restore()}})},jK=({canvas:a,elementsMap:b,visibleElements:c,selectedElements:d,allElementsMap:e,scale:f,appState:g,renderConfig:h,device:i})=>{var j,k;let l,m,n,o,p;if(null===a)return{atLeastOneVisibleElement:!1,elementsMap:b};let[q,r]=(0,F.Wh)(a,f),s=(0,F.Xh)({canvas:a,scale:f,normalizedWidth:q,normalizedHeight:r});if(s.save(),s.scale(g.zoom.value,g.zoom.value),c.forEach(a=>{g.editingLinearElement?.elementId===a.id&&a&&(l=a)}),l&&jI(s,g,l,b),g.selectionElement&&!g.isCropping)try{(0,F.Si)(g.selectionElement,s,g,h.selectionColor)}catch(a){console.error(a)}if(g.editingTextElement&&(0,F._b)(g.editingTextElement)){let a,b,c,d,f,i=e.get(g.editingTextElement.id);i&&!i.autoResize&&(j=h.selectionColor,s.save(),a=2*F.M/g.zoom.value,b=i.width+2*a,c=i.height+2*a,d=i.x+b/2,f=i.y+c/2,s.translate(d+g.scrollX,f+g.scrollY),s.rotate(i.angle),s.lineWidth=1/g.zoom.value,s.strokeStyle=j,s.strokeRect(-(b/2+a),-(c/2+a),b,c),s.restore())}g.isBindingEnabled&&g.suggestedBindings.filter(a=>null!=a).forEach(a=>{let c;c=Array.isArray(a)?jG:jF,s.save(),s.translate(g.scrollX,g.scrollY),c(s,a,b,g.zoom),s.restore()}),g.frameToHighlight&&((a,b,c,d)=>{let[e,f,g,h]=(0,F.aj)(c,d),i=g-e,j=h-f;a.strokeStyle="rgb(0,118,255)",a.lineWidth=F.H.strokeWidth/b.zoom.value,a.save(),a.translate(b.scrollX,b.scrollY),jD(a,e,f,i,j,e+i/2,f+j/2,c.angle,!1,F.H.radius/b.zoom.value),a.restore()})(s,g,g.frameToHighlight,b),g.elementsToHighlight&&(n=(k=g.elementsToHighlight).filter(a=>0===a.groupIds.length),o=k.filter(a=>a.groupIds.length>0),p=a=>{let[b,c,d,e]=(0,F.bj)(a);return{angle:0,x1:b,x2:d,y1:c,y2:e,selectionColors:["rgb(0,118,255)"],dashed:!1,cx:b+(d-b)/2,cy:c+(e-c)/2,activeEmbeddable:!1}},Object.entries((0,F.Nc)(o,g)).filter(([a,b])=>b).map(([a,b])=>a).map(a=>p((0,F.Qc)(k,a))).concat(n.map(a=>p([a]))).forEach(a=>jH(s,g,a)));let t=d.some(a=>(0,F.bc)(a));if(1===d.length&&g.editingLinearElement?.elementId===d[0].id&&jI(s,g,d[0],b),(0,F.ec)(d[0])&&g.selectedLinearElement&&g.selectedLinearElement.segmentMidPointHoveredCoords?((a,b)=>{(0,F.Kb)(b.selectedLinearElement,"selectedLinearElement is null");let{segmentMidPointHoveredCoords:c}=b.selectedLinearElement;(0,F.Kb)(c,"midPointCoords is null"),a.save(),a.translate(b.scrollX,b.scrollY),jC(c,a,b),a.restore()})(s,g):g.selectedLinearElement&&g.selectedLinearElement.hoverPointIndex>=0&&!((0,F.ec)(d[0])&&g.selectedLinearElement.hoverPointIndex>0&&g.selectedLinearElement.hoverPointIndex<d[0].points.length-1)&&((a,b,c)=>{let{elementId:d,hoverPointIndex:e}=b.selectedLinearElement;if(b.editingLinearElement?.selectedPointsIndices?.includes(e))return;let f=F.pj.getElement(d,c);if(!f)return;let g=F.pj.getPointAtIndexGlobalCoordinates(f,e,c);a.save(),a.translate(b.scrollX,b.scrollY),jC(g,a,b),a.restore()})(s,g,b),!g.multiElement&&!g.editingLinearElement){let a=(0,F._j)(d,g),c=1===d.length&&(0,F.cc)(d[0]);c&&g.selectedLinearElement?.elementId===d[0].id&&!d[0].locked&&jI(s,g,d[0],b);let e=h.selectionColor||bN.default.black;if(a){let a=(0,F.xb)(d),f=[];for(let d of b.values()){let i=[],j=h.remoteSelectedElementIds.get(d.id);if(c&&(0,F.ec)(d)&&(d.startBinding||d.endBinding)||(a.has(d.id)&&!(0,F.Kc)(g,d)&&i.push(e),j&&i.push(...j.map(a=>e$(a,g.collaborators.get(a))))),i.length){let[a,c,e,h,k,l]=(0,F.aj)(d,b,!0);f.push({angle:d.angle,x1:a,y1:c,x2:e,y2:h,selectionColors:i,dashed:!!j,cx:k,cy:l,activeEmbeddable:g.activeEmbeddable?.element===d&&"active"===g.activeEmbeddable.state,padding:d.id===g.croppingElementId||(0,F.Wb)(d)?0:void 0})}}let i=a=>{let c=(0,F.Qc)(b,a),[d,e,g,h]=(0,F.bj)(c);f.push({angle:0,x1:d,x2:g,y1:e,y2:h,selectionColors:[bN.default.black],dashed:!0,cx:d+(g-d)/2,cy:e+(h-e)/2,activeEmbeddable:!1})};for(let a of(0,F.Mc)(g))i(a);g.editingGroupId&&i(g.editingGroupId),f.forEach(a=>jH(s,g,a))}if(s.save(),s.translate(g.scrollX,g.scrollY),1===d.length){s.fillStyle=bN.default.white;let c=(0,F.Zj)(d[0],g.zoom,b,"mouse",(0,F.Xj)(i));if(g.viewModeEnabled||!a||(0,F._b)(g.editingTextElement)||g.croppingElementId||jJ(s,h,g,c,d[0].angle),g.croppingElementId&&!g.isCropping){let a=b.get(g.croppingElementId);a&&(0,F.Wb)(a)&&((a,b,c,d,e)=>{let[f,g,,,h,i]=(0,F.aj)(d,e),j=3/c.zoom.value,k=j/2,l=h-f+j,m=i-g+j,n=Math.min(20/c.zoom.value,l),o=Math.min(20/c.zoom.value,m);a.save(),a.fillStyle=b.selectionColor,a.strokeStyle=b.selectionColor,a.lineWidth=j,[[[-l,-m],[0,k],[n,k],[k,0],[k,o]],[[l-k,-m],[k,k],[-n+k,k],[0,0],[0,o]],[[-l,m],[0,-k],[n,-k],[k,0],[k,-o]],[[l-k,m],[k,-k],[-n+k,-k],[0,0],[0,-o]]].forEach(b=>{let[[c,e],[f,g],[j,k],[l,m],[n,o]]=b;a.save(),a.translate(h,i),a.rotate(d.angle),a.beginPath(),a.moveTo(c+f,e+g),a.lineTo(c+j,e+k),a.stroke(),a.beginPath(),a.moveTo(c+l,e+m),a.lineTo(c+n,e+o),a.stroke(),a.restore()}),a.restore()})(s,h,g,a,b)}}else if(d.length>1&&!g.isRotating){let a=2*F.M/g.zoom.value;s.fillStyle=bN.default.white;let[b,c,f,j]=(0,F.bj)(d),k=s.getLineDash();s.setLineDash([2/g.zoom.value]);let l=s.lineWidth;s.lineWidth=1/g.zoom.value,s.strokeStyle=e,jD(s,b-a,c-a,f-b+2*a,j-c+2*a,(b+f)/2,(c+j)/2,0),s.lineWidth=l,s.setLineDash(k);let m=(0,F.Yj)([b,c,f,j,(b+f)/2,(c+j)/2],0,g.zoom,"mouse",t?{...(0,F.Xj)(i),rotation:!0}:(0,F.Xj)(i));d.some(a=>!a.locked)&&jJ(s,h,g,m,0)}s.restore()}return g.searchMatches.forEach(({id:a,focus:c,matchedLines:d})=>{let e=b.get(a);if(e&&(0,F._b)(e)){let[a,f,,,h,i]=(0,F.aj)(e,b,!0);s.save(),g.theme===F.G.LIGHT?c?s.fillStyle="rgba(255, 124, 0, 0.4)":s.fillStyle="rgba(255, 226, 0, 0.4)":c?s.fillStyle="rgba(229, 82, 0, 0.4)":s.fillStyle="rgba(99, 52, 0, 0.4)",s.translate(g.scrollX,g.scrollY),s.translate(h,i),s.rotate(e.angle),d.forEach(b=>{s.fillRect(a+b.offsetX-h,f+b.offsetY-i,b.width,b.height)}),s.restore()}}),((a,b)=>{if(!b.snapLines.length)return;let c=b.theme===F.G.LIGHT||b.zenModeEnabled?"#ff6b6b":"#ff0000",d=(b.zenModeEnabled?1.5:1)/b.zoom.value;for(let e of(a.save(),a.translate(b.scrollX,b.scrollY),b.snapLines))"pointer"===e.type?(a.lineWidth=d,a.strokeStyle=c,jy(e,a,b)):"gap"===e.type?(a.lineWidth=d,a.strokeStyle=c,jB(e.points[0],e.points[1],e.direction,b,a)):"points"===e.type&&(a.lineWidth=d,a.strokeStyle=c,jx(e,a,b));a.restore()})(s,g),s.restore(),(({context:a,renderConfig:b,appState:c,normalizedWidth:d,normalizedHeight:e})=>{for(let[f,g]of b.remotePointerViewportCoords){let{x:h,y:i}=g,j=c.collaborators.get(f);h-=c.offsetLeft,i-=c.offsetTop;let k=h<0||h>d-11||i<0||i>e-14;h=Math.min(h=Math.max(h,0),d-11),i=Math.min(i=Math.max(i,0),e-14);let l=e$(f,j);a.save(),a.strokeStyle=l,a.fillStyle=l;let m=b.remotePointerUserStates.get(f),n=k||"idle"===m||"away"===m;n&&(a.globalAlpha=.3),"down"===b.remotePointerButton.get(f)&&(a.beginPath(),a.arc(h,i,15,0,2*Math.PI,!1),a.lineWidth=3,a.strokeStyle="#ffffff88",a.stroke(),a.closePath(),a.beginPath(),a.arc(h,i,15,0,2*Math.PI,!1),a.lineWidth=1,a.strokeStyle=l,a.stroke(),a.closePath());let o=c.theme===F.G.DARK?"#2f6330":F.Q,p=j?.isSpeaking;p&&(a.fillStyle=o,a.strokeStyle=o,a.lineWidth=10,a.lineJoin="round",a.beginPath(),a.moveTo(h,i),a.lineTo(h+0,i+14),a.lineTo(h+4,i+9),a.lineTo(h+11,i+8),a.closePath(),a.stroke(),a.fill()),a.fillStyle=F.O,a.strokeStyle=F.O,a.lineWidth=6,a.lineJoin="round",a.beginPath(),a.moveTo(h,i),a.lineTo(h+0,i+14),a.lineTo(h+4,i+9),a.lineTo(h+11,i+8),a.closePath(),a.stroke(),a.fill(),a.fillStyle=l,a.strokeStyle=l,a.lineWidth=2,a.lineJoin="round",a.beginPath(),n?(a.moveTo(h-1,i-1),a.lineTo(h-1,i+15),a.lineTo(h+5,i+10),a.lineTo(h+12,i+9),a.closePath(),a.fill()):(a.moveTo(h,i),a.lineTo(h+0,i+14),a.lineTo(h+4,i+9),a.lineTo(h+11,i+8),a.closePath(),a.fill(),a.stroke());let q=b.remotePointerUsernames.get(f)||"";if(!k&&q){a.font="600 12px sans-serif";let b=(p?h+0:h)+5.5,c=(p?i+0:i)+14+2,d=a.measureText(q),e=d.actualBoundingBoxDescent+d.actualBoundingBoxAscent,f=Math.max(e,12),g=b-1,j=c-1,k=d.width+2+10+2,m=f+2+6+2;a.roundRect?(a.beginPath(),a.roundRect(g,j,k,m,8),a.fillStyle=l,a.fill(),a.strokeStyle=F.O,a.stroke(),p&&(a.beginPath(),a.roundRect(g-2,j-2,k+4,m+4,8),a.strokeStyle=o,a.stroke())):eZ(a,g,j,k,m,8,F.O),a.fillStyle=F.P,a.fillText(q,b+5+1,c+3+d.actualBoundingBoxAscent+Math.floor((f-e)/2)+2),p&&(a.fillStyle=o,a.fillRect(g+k+8,j+(m/2-4),2,8),a.fillRect(g+k+8+5,j+(m/2-8),2,16),a.fillRect(g+k+8+10,j+(m/2-4),2,8))}a.restore(),a.closePath()}})({context:s,renderConfig:h,appState:g,normalizedWidth:q,normalizedHeight:r}),h.renderScrollbars&&(m=((a,b,c,d)=>{if(!a.length)return{horizontal:null,vertical:null};let[e,f,g,h]=(0,F.bj)(a),i=b/d.zoom.value,j=c/d.zoom.value,k={top:parseInt((0,F.nb)("sat"))||0,bottom:parseInt((0,F.nb)("sab"))||0,left:parseInt((0,F.nb)("sal"))||0,right:parseInt((0,F.nb)("sar"))||0},l=c4.rtl,m=-d.scrollX+(b-i)/2+k.left,n=-d.scrollY+(c-j)/2+k.top,o=m+i-k.right,p=n+j-k.bottom,q=Math.min(e,m),r=Math.min(f,n),s=Math.max(g,o),t=Math.max(h,p);return{horizontal:m===q&&o===s?null:{x:Math.max(k.left,4)+(m-q)/(s-q)*b,y:c-6-Math.max(4,k.bottom),width:(o-m)/(s-q)*b-Math.max(8,k.left+k.right),height:6},vertical:n===r&&p===t?null:{x:l?Math.max(k.left,4):b-6-Math.max(k.right,4),y:(n-r)/(t-r)*c+Math.max(k.top,4),width:6,height:(p-n)/(t-r)*c-Math.max(8,k.top+k.bottom)}}})(c,q,r,g),s.save(),s.fillStyle="rgba(0,0,0,0.3)",s.strokeStyle="rgba(255,255,255,0.8)",[m.horizontal,m.vertical].forEach(a=>{a&&eZ(s,a.x,a.y,a.width,a.height,3)}),s.restore()),{scrollBars:m,atLeastOneVisibleElement:c.length>0,elementsMap:b}},jL=(0,F.eb)(a=>{let b=jK(a);a.callback?.(b)},{trailing:!0}),jM=a=>({zoom:a.zoom,scrollX:a.scrollX,scrollY:a.scrollY,width:a.width,height:a.height,viewModeEnabled:a.viewModeEnabled,openDialog:a.openDialog,editingGroupId:a.editingGroupId,editingLinearElement:a.editingLinearElement,selectedElementIds:a.selectedElementIds,frameToHighlight:a.frameToHighlight,offsetLeft:a.offsetLeft,offsetTop:a.offsetTop,theme:a.theme,pendingImageElementId:a.pendingImageElementId,selectionElement:a.selectionElement,selectedGroupIds:a.selectedGroupIds,selectedLinearElement:a.selectedLinearElement,multiElement:a.multiElement,isBindingEnabled:a.isBindingEnabled,suggestedBindings:a.suggestedBindings,isRotating:a.isRotating,elementsToHighlight:a.elementsToHighlight,collaborators:a.collaborators,activeEmbeddable:a.activeEmbeddable,snapLines:a.snapLines,zenModeEnabled:a.zenModeEnabled,editingTextElement:a.editingTextElement,isCropping:a.isCropping,croppingElementId:a.croppingElementId,searchMatches:a.searchMatches}),jN=L.default.memo(a=>{let b=(0,L.useRef)(!1);return(0,L.useEffect)(()=>{if(!b.current){b.current=!0;return}let c=new Map,d=new Map,e=new Map,f=new Map,g=new Map;a.appState.collaborators.forEach((b,h)=>{if(b.selectedElementIds)for(let a of Object.keys(b.selectedElementIds))e.has(a)||e.set(a,[]),e.get(a).push(h);b.pointer&&!1!==b.pointer.renderCursor&&(b.username&&f.set(h,b.username),b.userState&&g.set(h,b.userState),d.set(h,(0,F.mb)({sceneX:b.pointer.x,sceneY:b.pointer.y},a.appState)),c.set(h,b.button))});let h=a.containerRef?.current&&getComputedStyle(a.containerRef.current).getPropertyValue("--color-selection")||"#6965db";((a,b)=>{if(b)return jL(a);let c=jK(a);return a.callback(c)})({canvas:a.canvas,elementsMap:a.elementsMap,visibleElements:a.visibleElements,selectedElements:a.selectedElements,allElementsMap:a.allElementsMap,scale:window.devicePixelRatio,appState:a.appState,renderConfig:{remotePointerViewportCoords:d,remotePointerButton:c,remoteSelectedElementIds:e,remotePointerUsernames:f,remotePointerUserStates:g,selectionColor:h,renderScrollbars:!1},device:a.device,callback:a.renderInteractiveSceneCallback},jw())}),(0,e.jsx)("canvas",{className:"excalidraw__canvas interactive",style:{width:a.appState.width,height:a.appState.height,cursor:a.appState.viewModeEnabled?F.z.GRAB:F.z.AUTO},width:a.appState.width*a.scale,height:a.appState.height*a.scale,ref:a.handleCanvasRef,onContextMenu:a.onContextMenu,onPointerMove:a.onPointerMove,onPointerUp:a.onPointerUp,onPointerCancel:a.onPointerCancel,onTouchMove:a.onTouchMove,onPointerDown:a.onPointerDown,onDoubleClick:a.appState.viewModeEnabled?void 0:a.onDoubleClick,children:c8("labels.drawingCanvas")})},(a,b)=>a.selectionNonce===b.selectionNonce&&a.sceneNonce===b.sceneNonce&&a.scale===b.scale&&a.elementsMap===b.elementsMap&&a.visibleElements===b.visibleElements&&a.selectedElements===b.selectedElements&&(0,F.Hb)(jM(a.appState),jM(b.appState))),jO=a=>({zoom:a.zoom,scrollX:a.scrollX,scrollY:a.scrollY,width:a.width,height:a.height,viewModeEnabled:a.viewModeEnabled,openDialog:a.openDialog,hoveredElementIds:a.hoveredElementIds,offsetLeft:a.offsetLeft,offsetTop:a.offsetTop,theme:a.theme,pendingImageElementId:a.pendingImageElementId,shouldCacheIgnoreZoom:a.shouldCacheIgnoreZoom,viewBackgroundColor:a.viewBackgroundColor,exportScale:a.exportScale,selectedElementsAreBeingDragged:a.selectedElementsAreBeingDragged,gridSize:a.gridSize,gridStep:a.gridStep,frameRendering:a.frameRendering,selectedElementIds:a.selectedElementIds,frameToHighlight:a.frameToHighlight,editingGroupId:a.editingGroupId,currentHoveredFontFamily:a.currentHoveredFontFamily,croppingElementId:a.croppingElementId}),jP=L.default.memo(a=>{let b=(0,L.useRef)(null),c=(0,L.useRef)(!1);return(0,L.useEffect)(()=>{let d=b.current;if(!d)return;let e=a.canvas;c.current||(c.current=!0,d.replaceChildren(e),e.classList.add("excalidraw__canvas","static"));let f=`${a.appState.width}px`,g=`${a.appState.height}px`;e.style.width!==f&&(e.style.width=f),e.style.height!==g&&(e.style.height=g);let h=a.appState.width*a.scale,i=a.appState.height*a.scale;e.width!==h&&(e.width=h),e.height!==i&&(e.height=i),(0,F.ci)({canvas:e,rc:a.rc,scale:a.scale,elementsMap:a.elementsMap,allElementsMap:a.allElementsMap,visibleElements:a.visibleElements,appState:a.appState,renderConfig:a.renderConfig},jw())}),(0,e.jsx)("div",{className:"excalidraw__canvas-wrapper",ref:b})},(a,b)=>a.sceneNonce===b.sceneNonce&&a.scale===b.scale&&a.elementsMap===b.elementsMap&&a.visibleElements===b.visibleElements&&(0,F.Hb)(jO(a.appState),jO(b.appState))&&(0,F.Hb)(a.renderConfig,b.renderConfig)),jQ=class{constructor(a){(0,K.d)(this,"scene"),(0,K.d)(this,"getRenderableElements",(0,F.Lb)(({zoom:a,offsetLeft:b,offsetTop:c,scrollX:d,scrollY:e,height:f,width:g,editingTextElement:h,newElementId:i,pendingImageElementId:j,sceneNonce:k})=>{let l=(({elements:a,editingTextElement:b,newElementId:c,pendingImageElementId:d})=>{let e=(0,F.Sb)(new Map);for(let f of a)(0,F.Wb)(f)&&d===f.id||c===f.id||b&&"text"===b.type&&f.id===b.id||e.set(f.id,f);return e})({elements:this.scene.getNonDeletedElements(),editingTextElement:h,newElementId:i,pendingImageElementId:j}),m=(({elementsMap:a,zoom:b,offsetLeft:c,offsetTop:d,scrollX:e,scrollY:f,height:g,width:h})=>{let i=[];for(let j of a.values())(0,F.Tj)(j,h,g,{zoom:b,offsetLeft:c,offsetTop:d,scrollX:e,scrollY:f},a)&&i.push(j);return i})({elementsMap:l,zoom:a,offsetLeft:b,offsetTop:c,scrollX:d,scrollY:e,height:f,width:g});return{elementsMap:l,visibleElements:m}})),this.scene=a}destroy(){jL.cancel(),F.bi.cancel(),this.getRenderableElements.clear()}},jR=({trails:a})=>{let b=(0,L.useRef)(null);return(0,L.useEffect)(()=>{if(b.current)for(let c of a)c.start(b.current);return()=>{for(let b of a)b.stop()}},a),(0,e.jsx)("div",{className:"SVGLayer",children:(0,e.jsx)("svg",{ref:b})})},jS=({children:a,element:b,elementsMap:c})=>{let d=ke();if(d.contextMenu||d.newElement||d.resizingElement||d.isRotating||d.openMenu||d.viewModeEnabled)return null;let{x:f,y:g}=((a,b,c)=>{let[d,e]=(0,F.aj)(a,c),{x:f,y:g}=(0,F.mb)({sceneX:d+a.width,sceneY:e},b);return{x:f-b.offsetLeft+10,y:g-b.offsetTop}})(b,d,c);return(0,e.jsx)("div",{className:"excalidraw-canvas-buttons",style:{top:`${g}px`,left:`${f}px`,padding:5},children:a})},jT=a=>(0,e.jsxs)("label",{className:(0,av.default)("ToolIcon ToolIcon__MagicButton","ToolIcon_size_small",{"is-mobile":a.isMobile}),title:`${a.title}`,children:[(0,e.jsx)("input",{className:"ToolIcon_type_checkbox",type:"checkbox",name:a.name,onChange:a.onChange,checked:a.checked,"aria-label":a.title}),(0,e.jsx)("div",{className:"ToolIcon__icon",children:a.icon})]}),jU=({height:a,width:b,userToFollow:c,onDisconnect:d})=>(0,e.jsx)("div",{className:"follow-mode",style:{width:b,height:a},children:(0,e.jsxs)("div",{className:"follow-mode__badge",children:[(0,e.jsxs)("div",{className:"follow-mode__badge__label",children:["Following"," ",(0,e.jsx)("span",{className:"follow-mode__badge__username",title:c.username,children:c.username})]}),(0,e.jsx)("button",{type:"button",onClick:d,className:"follow-mode__disconnect-btn",children:F.ge})]})}),jV=class{constructor(){(0,K.d)(this,"targets",new WeakMap),(0,K.d)(this,"rafIds",new WeakMap)}register(a,b){this.targets.set(a,{callback:b,stopped:!0})}start(a){let b=this.targets.get(a);b&&(this.rafIds.has(a)||(this.targets.set(a,{...b,stopped:!1}),this.scheduleFrame(a)))}stop(a){let b=this.targets.get(a);b&&!b.stopped&&this.targets.set(a,{...b,stopped:!0}),this.cancelFrame(a)}constructFrame(a){return b=>{let c=this.targets.get(a);if(!c)return;let d=this.onFrame(c,b);c.stopped||d?this.cancelFrame(a):this.scheduleFrame(a)}}scheduleFrame(a){let b=requestAnimationFrame(this.constructFrame(a));this.rafIds.set(a,b)}cancelFrame(a){this.rafIds.has(a)&&cancelAnimationFrame(this.rafIds.get(a)),this.rafIds.delete(a)}onFrame(a,b){return a.callback(b)??!1}},jW=class{constructor(a,b,c){this.animationFrameHandler=a,this.app=b,this.options=c,(0,K.d)(this,"currentTrail"),(0,K.d)(this,"pastTrails",[]),(0,K.d)(this,"container"),(0,K.d)(this,"trailElement"),this.animationFrameHandler.register(this,this.onFrame.bind(this)),this.trailElement=document.createElementNS(F.pa,"path")}get hasCurrentTrail(){return!!this.currentTrail}hasLastPoint(a,b){if(this.currentTrail){let c=this.currentTrail.originalPoints.length;return this.currentTrail.originalPoints[c-1][0]===a&&this.currentTrail.originalPoints[c-1][1]===b}return!1}start(a){a&&(this.container=a),this.trailElement.parentNode!==this.container&&this.container&&this.container.appendChild(this.trailElement),this.animationFrameHandler.start(this)}stop(){this.animationFrameHandler.stop(this),this.trailElement.parentNode===this.container&&this.container?.removeChild(this.trailElement)}startPath(a,b){this.currentTrail=new cU(this.options),this.currentTrail.addPoint([a,b,performance.now()]),this.update()}addPointToPath(a,b){this.currentTrail&&(this.currentTrail.addPoint([a,b,performance.now()]),this.update())}endPath(){this.currentTrail&&(this.currentTrail.close(),this.currentTrail.options.keepHead=!1,this.pastTrails.push(this.currentTrail),this.currentTrail=void 0,this.update())}update(){this.start()}onFrame(){let a=[];for(let b of this.pastTrails)a.push(this.drawTrail(b,this.app.state));if(this.currentTrail){let b=this.drawTrail(this.currentTrail,this.app.state);a.push(b)}this.pastTrails=this.pastTrails.filter(a=>0!==a.getStrokeOutline().length),0===a.length&&this.stop();let b=a.join(" ").trim();this.trailElement.setAttribute("d",b),this.trailElement.setAttribute("fill",(this.options.fill??(()=>"black"))(this))}drawTrail(a,b){let c=a.getStrokeOutline(a.options.size/b.zoom.value).map(([a,c])=>{let d=(0,F.mb)({sceneX:a,sceneY:c},b);return[d.x,d.y]});return(0,F.Qb)(c,!0)}},jX=class{constructor(a,b){this.animationFrameHandler=a,this.app=b,(0,K.d)(this,"localTrail"),(0,K.d)(this,"collabTrails",new Map),(0,K.d)(this,"container"),this.animationFrameHandler.register(this,this.onFrame.bind(this)),this.localTrail=new jW(a,b,{...this.getTrailOptions(),fill:()=>F.y})}getTrailOptions(){return{simplify:0,streamline:.4,sizeMapping:a=>{let b=Math.max(0,1-(performance.now()-a.pressure)/1e3),c=(50-Math.min(50,a.totalLength-a.currentIndex))/50;return Math.min((0,F.fb)(c),(0,F.fb)(b))}}}startPath(a,b){this.localTrail.startPath(a,b)}addPointToPath(a,b){this.localTrail.addPointToPath(a,b)}endPath(){this.localTrail.endPath()}start(a){this.container=a,this.animationFrameHandler.start(this),this.localTrail.start(a)}stop(){this.animationFrameHandler.stop(this),this.localTrail.stop()}onFrame(){this.updateCollabTrails()}updateCollabTrails(){if(!(!this.container||0===this.app.state.collaborators.size)){for(let[a,b]of this.app.state.collaborators.entries()){let c;this.collabTrails.has(a)?c=this.collabTrails.get(a):((c=new jW(this.animationFrameHandler,this.app,{...this.getTrailOptions(),fill:()=>b.pointer?.laserColor||e$(a,b)})).start(this.container),this.collabTrails.set(a,c)),b.pointer&&"laser"===b.pointer.tool&&("down"!==b.button||c.hasCurrentTrail||c.startPath(b.pointer.x,b.pointer.y),"down"===b.button&&c.hasCurrentTrail&&!c.hasLastPoint(b.pointer.x,b.pointer.y)&&c.addPointToPath(b.pointer.x,b.pointer.y),"up"===b.button&&c.hasCurrentTrail&&(c.addPointToPath(b.pointer.x,b.pointer.y),c.endPath()))}for(let a of this.collabTrails.keys())this.app.state.collaborators.has(a)||(this.collabTrails.get(a).stop(),this.collabTrails.delete(a))}}},jY=(0,F.$c)({name:"autoResize",label:"labels.autoResize",icon:null,trackEvent:{category:"element"},predicate:(a,b,c,d)=>{let e=(0,F.vk)(a,b);return 1===e.length&&(0,F._b)(e[0])&&!e[0].autoResize},perform:(a,b,c,d)=>{let e=(0,F.vk)(a,b);return{appState:b,elements:a.map(a=>{if(a.id===e[0].id&&(0,F._b)(a)){let b=(0,F.vc)(a.originalText,(0,F.cb)(a),a.lineHeight);return(0,F.Qj)(a,{autoResize:!0,width:b.width,height:b.height,text:a.originalText})}return a}),captureUpdate:F.Wg.IMMEDIATELY}}}),jZ=({canvas:a,rc:b,newElement:c,elementsMap:d,allElementsMap:e,scale:f,appState:g,renderConfig:h})=>{if(a){let[i,j]=(0,F.Wh)(a,f),k=(0,F.Xh)({canvas:a,scale:f,normalizedWidth:i,normalizedHeight:j});k.save(),k.scale(g.zoom.value,g.zoom.value),c&&"selection"!==c.type?(0,F.Ti)(c,d,e,b,k,h,g):k.clearRect(0,0,i,j)}},j$=(0,F.eb)(a=>{jZ(a)},{trailing:!0}),j_=a=>{let b=(0,L.useRef)(null);return(0,L.useEffect)(()=>{var c;b.current&&(c={canvas:b.current,scale:a.scale,newElement:a.appState.newElement,elementsMap:a.elementsMap,allElementsMap:a.allElementsMap,rc:a.rc,renderConfig:a.renderConfig,appState:a.appState},jw()?j$(c):jZ(c))}),(0,e.jsx)("canvas",{className:"excalidraw__canvas",style:{width:a.appState.width,height:a.appState.height},width:a.appState.width*a.scale,height:a.appState.height*a.scale,ref:b})},j0=L.default.createContext(null),j1=L.default.createContext(null),j2={viewport:{isMobile:!1,isLandscape:!1},editor:{isMobile:!1,canFitSidebar:!1},isTouchScreen:!1},j3=L.default.createContext(j2);j3.displayName="DeviceContext";var j4=L.default.createContext({container:null,id:null});j4.displayName="ExcalidrawContainerContext";var j5=L.default.createContext([]);j5.displayName="ExcalidrawElementsContext";var j6=L.default.createContext({...(0,F.Fc)(),width:0,height:0,offsetLeft:0,offsetTop:0});j6.displayName="ExcalidrawAppStateContext";var j7=L.default.createContext(()=>{console.warn("Uninitialized ExcalidrawSetAppStateContext context!")});j7.displayName="ExcalidrawSetAppStateContext";var j8=L.default.createContext(null);j8.displayName="ExcalidrawActionManagerContext";var j9=()=>(0,L.useContext)(j0),ka=()=>(0,L.useContext)(j1),kb=()=>(0,L.useContext)(j3),kc=()=>(0,L.useContext)(j4),kd=()=>(0,L.useContext)(j5),ke=()=>(0,L.useContext)(j6),kf=()=>(0,L.useContext)(j7),kg=()=>(0,L.useContext)(j8),kh=!1,ki=0,kj=!1,kk=!1,kl=!1,km={horizontal:null,vertical:null},kn=0,ko=!1,kp=new Map,kq=!1,kr=0,ks=!1,kt=null,ku={pointers:new Map,lastCenter:null,initialDistance:null,initialScale:null},kv=class b extends L.default.Component{constructor(c){super(c),(0,K.d)(this,"canvas"),(0,K.d)(this,"interactiveCanvas",null),(0,K.d)(this,"rc"),(0,K.d)(this,"unmounted",!1),(0,K.d)(this,"actionManager"),(0,K.d)(this,"device",j2),(0,K.d)(this,"excalidrawContainerRef",L.default.createRef()),(0,K.d)(this,"scene"),(0,K.d)(this,"fonts"),(0,K.d)(this,"renderer"),(0,K.d)(this,"visibleElements"),(0,K.d)(this,"resizeObserver"),(0,K.d)(this,"nearestScrollableContainer"),(0,K.d)(this,"library"),(0,K.d)(this,"libraryItemsFromStorage"),(0,K.d)(this,"id"),(0,K.d)(this,"store"),(0,K.d)(this,"history"),(0,K.d)(this,"excalidrawContainerValue"),(0,K.d)(this,"files",{}),(0,K.d)(this,"imageCache",new Map),(0,K.d)(this,"iFrameRefs",new Map),(0,K.d)(this,"embedsValidationStatus",new Map),(0,K.d)(this,"initializedEmbeds",new Set),(0,K.d)(this,"elementsPendingErasure",new Set),(0,K.d)(this,"flowChartCreator",new hj),(0,K.d)(this,"flowChartNavigator",new hi),(0,K.d)(this,"hitLinkElement"),(0,K.d)(this,"lastPointerDownEvent",null),(0,K.d)(this,"lastPointerUpEvent",null),(0,K.d)(this,"lastPointerMoveEvent",null),(0,K.d)(this,"lastPointerMoveCoords",null),(0,K.d)(this,"lastViewportPosition",{x:0,y:0}),(0,K.d)(this,"animationFrameHandler",new jV),(0,K.d)(this,"laserTrails",new jX(this.animationFrameHandler,this)),(0,K.d)(this,"eraserTrail",new jW(this.animationFrameHandler,this,{streamline:.2,size:5,keepHead:!0,sizeMapping:a=>{let b=Math.max(0,1-(performance.now()-a.pressure)/200),c=(10-Math.min(10,a.totalLength-a.currentIndex))/10;return Math.min((0,F.fb)(c),(0,F.fb)(b))},fill:()=>this.state.theme===F.G.LIGHT?"rgba(0, 0, 0, 0.2)":"rgba(255, 255, 255, 0.2)"})),(0,K.d)(this,"onChangeEmitter",new F.Vg),(0,K.d)(this,"onPointerDownEmitter",new F.Vg),(0,K.d)(this,"onPointerUpEmitter",new F.Vg),(0,K.d)(this,"onUserFollowEmitter",new F.Vg),(0,K.d)(this,"onScrollChangeEmitter",new F.Vg),(0,K.d)(this,"missingPointerEventCleanupEmitter",new F.Vg),(0,K.d)(this,"onRemoveEventListenersEmitter",new F.Vg),(0,K.d)(this,"getEffectiveGridSize",()=>(0,F.fj)(this)?this.state.gridSize:null),(0,K.d)(this,"updateEmbedValidationStatus",(a,b)=>{this.embedsValidationStatus.set(a.id,b),F.ed.delete(a)}),(0,K.d)(this,"updateEmbeddables",()=>{let a=new Set,b=!1;this.scene.getNonDeletedElements().filter(c=>{if((0,F.Xb)(c)){if(a.add(c.id),!this.embedsValidationStatus.has(c.id)){b=!0;let a=(0,F.$g)(c.link,this.props.validateEmbeddable);this.updateEmbedValidationStatus(c,a)}}else(0,F.Yb)(c)&&a.add(c.id);return!1}),b&&this.scene.triggerUpdate(),this.iFrameRefs.forEach((b,c)=>{a.has(c)||this.iFrameRefs.delete(c)})}),(0,K.d)(this,"getFrameNameDOMId",a=>`${this.id}-frame-name-${a.id}`),(0,K.d)(this,"frameNameBoundsCache",{get:a=>{let b=this.frameNameBoundsCache._cache.get(a.id);if(!b||b.zoom!==this.state.zoom.value||b.versionNonce!==a.versionNonce){let c=document.getElementById(this.getFrameNameDOMId(a));if(c){let d=c.getBoundingClientRect(),e=(0,F.lb)({clientX:d.x,clientY:d.y},this.state),f=(0,F.lb)({clientX:d.right,clientY:d.bottom},this.state);return b={x:e.x,y:e.y,width:f.x-e.x,height:f.y-e.y,angle:0,zoom:this.state.zoom.value,versionNonce:a.versionNonce},this.frameNameBoundsCache._cache.set(a.id,b),b}return null}return b},_cache:new Map}),(0,K.d)(this,"resetEditingFrame",a=>{a&&(0,F.Pj)(a,{name:a.name?.trim()||null}),this.setState({editingFrame:null})}),(0,K.d)(this,"renderFrameNames",()=>{if(!this.state.frameRendering.enabled||!this.state.frameRendering.name)return this.state.editingFrame&&this.resetEditingFrame(null),null;let a=this.state.theme===F.G.DARK;return this.scene.getNonDeletedFramesLikes().map(b=>{if(!(0,F.Tj)(b,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap()))return this.state.editingFrame===b.id&&this.resetEditingFrame(b),null;let{x:c,y:d}=(0,F.mb)({sceneX:b.x,sceneY:b.y},this.state),f,g=(0,F.Oi)(b);return f=b.id===this.state.editingFrame?(0,e.jsx)("input",{autoFocus:!0,value:g,onChange:a=>{(0,F.Pj)(b,{name:a.target.value})},onFocus:a=>a.target.select(),onBlur:()=>this.resetEditingFrame(b),onKeyDown:a=>{(a.key===F.hg.ESCAPE||a.key===F.hg.ENTER)&&this.resetEditingFrame(b)},style:{background:this.state.viewBackgroundColor,filter:a?F.da:"none",zIndex:2,border:"none",display:"block",padding:"6px",borderRadius:4,boxShadow:"inset 0 0 0 1px var(--color-primary)",fontFamily:"Assistant",fontSize:"14px",transform:"translate(-6px, 6px)",color:"var(--color-gray-80)",overflow:"hidden",maxWidth:`${document.body.clientWidth-c-6}px`},size:g.length+1||1,dir:"auto",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off"}):g,(0,e.jsx)("div",{id:this.getFrameNameDOMId(b),style:{position:"absolute",bottom:`${this.state.height+F.H.nameOffsetY-d+this.state.offsetTop}px`,left:`${c-this.state.offsetLeft}px`,zIndex:2,fontSize:F.H.nameFontSize,color:a?F.H.nameColorDarkTheme:F.H.nameColorLightTheme,lineHeight:F.H.nameLineHeight,width:"max-content",maxWidth:`${b.width}px`,overflow:b.id===this.state.editingFrame?"visible":"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",cursor:F.z.MOVE,pointerEvents:this.state.viewModeEnabled?F.B.disabled:F.B.enabled},onPointerDown:a=>this.handleCanvasPointerDown(a),onWheel:a=>this.handleWheel(a),onContextMenu:this.handleCanvasContextMenu,onDoubleClick:()=>{this.setState({editingFrame:b.id})},children:f},b.id)})}),(0,K.d)(this,"focusContainer",()=>{this.excalidrawContainerRef.current?.focus()}),(0,K.d)(this,"getSceneElementsIncludingDeleted",()=>this.scene.getElementsIncludingDeleted()),(0,K.d)(this,"getSceneElements",()=>this.scene.getNonDeletedElements()),(0,K.d)(this,"onInsertElements",a=>{this.addElementsFromPasteOrLibrary({elements:a,position:"center",files:null})}),(0,K.d)(this,"onExportImage",async(a,b,c)=>{dw("export",a,"ui");let d=await eH(a,b,this.state,this.files,{exportBackground:this.state.exportBackground,name:this.getName(),viewBackgroundColor:this.state.viewBackgroundColor,exportingFrame:c.exportingFrame}).catch(F.pb).catch(a=>{console.error(a),this.setState({errorMessage:a.message})});this.state.exportEmbedScene&&d&&(0,F.sh)(d)&&this.setState({fileHandle:d})}),(0,K.d)(this,"magicGenerations",new Map),(0,K.d)(this,"updateMagicGeneration",({frameElement:a,data:b})=>{"pending"===b.status?(0,F.Pj)(a,{customData:{generationData:void 0}},!1):(0,F.Pj)(a,{customData:{generationData:b}},!1),this.magicGenerations.set(a.id,b),this.triggerRender()}),(0,K.d)(this,"plugins",{}),(0,K.d)(this,"onMagicframeToolSelect",()=>{let a=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds});if(0===a.length)this.setActiveTool({type:F.Aa.magicframe}),dw("ai","tool-select (empty-selection)","d2c");else{let b,c=1===a.length&&(0,F.ac)(a[0])&&a[0];if(!c&&a.some(a=>(0,F.bc)(a)||a.frameId))return void this.setActiveTool({type:F.Aa.magicframe});if(dw("ai","tool-select (existing selection)","d2c"),c)b=c;else{let[c,d,e,f]=(0,F.bj)(a);for(let g of(b=(0,F.Wf)({...F.H,x:c-50,y:d-50,width:e-c+100,height:f-d+100,opacity:100,locked:!1}),this.scene.insertElement(b),a))(0,F.Pj)(g,{frameId:b.id});this.setState({selectedElementIds:{[b.id]:!0}})}this.onMagicFrameGenerate(b,"upstream")}}),(0,K.d)(this,"openEyeDropper",({type:a})=>{c_.set(dR,{swapPreviewOnAlt:!0,colorPickerType:"stroke"===a?"elementStroke":"elementBackground",onSelect:(b,c)=>{let d="background"===a&&c.altKey||"stroke"===a&&!c.altKey;this.scene.getSelectedElements(this.state).length&&"selection"===this.state.activeTool.type?this.updateScene({elements:this.scene.getElementsIncludingDeleted().map(a=>this.state.selectedElementIds[a.id]?(0,F.Qj)(a,{[d?"strokeColor":"backgroundColor"]:b}):a),captureUpdate:F.Wg.IMMEDIATELY}):d?this.syncActionResult({appState:{...this.state,currentItemStrokeColor:b},captureUpdate:F.Wg.IMMEDIATELY}):this.syncActionResult({appState:{...this.state,currentItemBackgroundColor:b},captureUpdate:F.Wg.IMMEDIATELY})},keepOpenOnAlt:!1})}),(0,K.d)(this,"dismissLinearEditor",()=>{setTimeout(()=>{this.setState({editingLinearElement:null})})}),(0,K.d)(this,"syncActionResult",ju(a=>{if(this.unmounted||!1===a)return;a.captureUpdate===F.Wg.NEVER?this.store.shouldUpdateSnapshot():a.captureUpdate===F.Wg.IMMEDIATELY&&this.store.shouldCaptureIncrement();let b=!1,c=null;if(a.elements&&(this.scene.replaceAllElements(a.elements),b=!0),a.files&&(this.addMissingFiles(a.files,a.replaceFiles),this.addNewImagesToImageCache()),a.appState||c||this.state.contextMenu){let d=a?.appState?.viewModeEnabled||!1,e=a?.appState?.zenModeEnabled||!1,f=a?.appState?.theme||this.props.theme||F.G.LIGHT,g=a?.appState?.name??this.state.name,h=a?.appState?.errorMessage??this.state.errorMessage;"u">typeof this.props.viewModeEnabled&&(d=this.props.viewModeEnabled),"u">typeof this.props.zenModeEnabled&&(e=this.props.zenModeEnabled),c=a.appState?.editingTextElement||null,a.elements&&c&&a.elements.forEach(a=>{c?.id===a.id&&c!==a&&(0,F.qk)(a)&&(0,F._b)(a)&&(c=a)}),c?.isDeleted&&(c=null),this.setState(b=>{let i=a.appState||{};return{...b,...i,contextMenu:null,editingTextElement:c,viewModeEnabled:d,zenModeEnabled:e,theme:f,name:g,errorMessage:h}}),b=!0}b||a.captureUpdate===F.Wg.EVENTUALLY||this.scene.triggerUpdate()})),(0,K.d)(this,"onBlur",ju(()=>{kj=!1,this.setState({isBindingEnabled:!0})})),(0,K.d)(this,"onUnload",()=>{this.onBlur()}),(0,K.d)(this,"disableEvent",a=>{a.preventDefault()}),(0,K.d)(this,"resetHistory",()=>{this.history.clear()}),(0,K.d)(this,"resetStore",()=>{this.store.clear()}),(0,K.d)(this,"resetScene",ju(a=>{this.scene.replaceAllElements([]),this.setState(b=>({...(0,F.Fc)(),isLoading:!a?.resetLoadingState&&b.isLoading,theme:this.state.theme})),this.resetStore(),this.resetHistory()})),(0,K.d)(this,"initializeScene",async()=>{"launchQueue"in window&&"LaunchParams"in window&&window.launchQueue.setConsumer(async a=>{if(!a.files.length)return;let b=a.files[0],c=await b.getFile();this.loadFileToCanvas(new File([c],c.name||"",{type:c.type}),b)}),this.props.theme&&this.setState({theme:this.props.theme}),this.state.isLoading||this.setState({isLoading:!0});let a=null;try{a="function"==typeof this.props.initialData?await this.props.initialData()||null:await this.props.initialData||null,a?.libraryItems&&this.library.updateLibrary({libraryItems:a.libraryItems,merge:!0}).catch(a=>{console.error(a)})}catch(b){console.error(b),a={appState:{errorMessage:b.message||"Encountered an error during importing or restoring scene data"}}}let b=(0,F.lh)(a,null,null,{repairBindings:!0});b.appState={...b.appState,theme:this.props.theme||b.appState.theme,openSidebar:b.appState?.openSidebar||this.state.openSidebar,activeTool:"image"===b.appState.activeTool.type?{...b.appState.activeTool,type:"selection"}:b.appState.activeTool,isLoading:!1,toast:this.state.toast},a?.scrollToContent&&(b.appState={...b.appState,...(0,F.zk)(b.elements,{...b.appState,width:this.state.width,height:this.state.height,offsetTop:this.state.offsetTop,offsetLeft:this.state.offsetLeft})}),this.resetStore(),this.resetHistory(),this.syncActionResult({...b,captureUpdate:F.Wg.NEVER}),this.clearImageShapeCache(),this.fonts.loadSceneFonts().then(a=>{this.fonts.onLoaded(a)}),(0,F.$h)(window.location.href)&&this.scrollToContent(window.location.href,{animate:!1})}),(0,K.d)(this,"isMobileBreakpoint",(a,b)=>a<F.ha||b<F.ja&&a<F.ia),(0,K.d)(this,"refreshViewportBreakpoints",()=>{if(!this.excalidrawContainerRef.current)return;let{clientWidth:a,clientHeight:b}=document.body,c=this.device.viewport,d=(0,F.Db)(c,{isLandscape:a>b,isMobile:this.isMobileBreakpoint(a,b)});return c!==d&&(this.device={...this.device,viewport:d},!0)}),(0,K.d)(this,"refreshEditorBreakpoints",()=>{let a=this.excalidrawContainerRef.current;if(!a)return;let{width:b,height:c}=a.getBoundingClientRect(),d=null!=this.props.UIOptions.dockedSidebarBreakpoint?this.props.UIOptions.dockedSidebarBreakpoint:F.ka,e=this.device.editor,f=(0,F.Db)(e,{isMobile:this.isMobileBreakpoint(b,c),canFitSidebar:b>d});return e!==f&&(this.device={...this.device,editor:f},!0)}),(0,K.d)(this,"onResize",ju(()=>{this.scene.getElementsIncludingDeleted().forEach(a=>F.ed.delete(a)),this.refreshViewportBreakpoints(),this.updateDOMRect(),F.r||this.refreshEditorBreakpoints(),this.setState({})})),(0,K.d)(this,"onFullscreenChange",()=>{document.fullscreenElement||this.state.activeEmbeddable?.state!=="active"||this.setState({activeEmbeddable:null})}),(0,K.d)(this,"renderInteractiveSceneCallback",({atLeastOneVisibleElement:a,scrollBars:b,elementsMap:c})=>{b&&(km=b);let d=!this.state.editingTextElement&&!a&&c.size>0;this.state.scrolledOutside!==d&&this.setState({scrolledOutside:d}),this.scheduleImageRefresh()}),(0,K.d)(this,"onScroll",(0,F.db)(()=>{let{offsetTop:a,offsetLeft:b}=this.getCanvasOffsets();this.setState(c=>c.offsetLeft===b&&c.offsetTop===a?null:{offsetTop:a,offsetLeft:b})},F._)),(0,K.d)(this,"onCut",ju(a=>{!this.excalidrawContainerRef.current?.contains(document.activeElement)||(0,F.ab)(a.target)||(this.actionManager.executeAction(fb,"keyboard",a),a.preventDefault(),a.stopPropagation())})),(0,K.d)(this,"onCopy",ju(a=>{!this.excalidrawContainerRef.current?.contains(document.activeElement)||(0,F.ab)(a.target)||(this.actionManager.executeAction(e9,"keyboard",a),a.preventDefault(),a.stopPropagation())})),(0,K.d)(this,"onTouchStart",a=>{if(F.p&&a.preventDefault(),!kh){kh=!0,clearTimeout(ki),ki=window.setTimeout(b.resetTapTwice,F.Y);return}if(kh&&1===a.touches.length){let b=a.touches[0];this.handleCanvasDoubleClick({clientX:b.clientX,clientY:b.clientY}),kh=!1,clearTimeout(ki)}2===a.touches.length&&this.setState({selectedElementIds:(0,F.xk)({},this.state),activeEmbeddable:null})}),(0,K.d)(this,"onTouchEnd",a=>{this.resetContextMenuTimer(),a.touches.length>0?this.setState({previousSelectedElementIds:{},selectedElementIds:(0,F.xk)(this.state.previousSelectedElementIds,this.state)}):ku.pointers.clear()}),(0,K.d)(this,"pasteFromClipboard",ju(async b=>{let c=!!kq,d=document.activeElement,e=this.excalidrawContainerRef.current?.contains(d);if(b&&!e)return;let f=document.elementFromPoint(this.lastViewportPosition.x,this.lastViewportPosition.y);if(b&&(!(f instanceof HTMLCanvasElement)||(0,F.ab)(d)))return;let{x:g,y:h}=(0,F.lb)({clientX:this.lastViewportPosition.x,clientY:this.lastViewportPosition.y},this.state),i=b?.clipboardData?.files[0],j=await (0,F.mi)(b,c);if(!i&&!c){if(j.mixedContent)return this.addElementsFromMixedContentPaste(j.mixedContent,{isPlainPaste:c,sceneX:g,sceneY:h});if(j.text){let a=j.text.trim();a.startsWith("<svg")&&a.endsWith("</svg>")&&(i=(0,F.Fh)(a))}}if((0,F.th)(i)&&!j.spreadsheet){if(!this.isToolSupported("image"))return void this.setState({errorMessage:c8("errors.imageToolNotSupported")});let a=this.createImageElement({sceneX:g,sceneY:h});return this.insertImageElement(a,i),this.initializeImageDimensions(a),void this.setState({selectedElementIds:(0,F.xk)({[a.id]:!0},this.state)})}if(this.props.onPaste)try{if(await this.props.onPaste(j,b)===!1)return}catch(a){console.error(a)}if(j.errorMessage)this.setState({errorMessage:j.errorMessage});else if(j.spreadsheet&&!c)this.setState({pasteDialog:{data:j.spreadsheet,shown:!0}});else if(j.elements){let a=j.programmaticAPI?jt(j.elements):j.elements;this.addElementsFromPasteOrLibrary({elements:a,files:j.files||null,position:"cursor",retainSeed:c})}else if(j.text){var k;if(j.text&&(k=j.text,RegExp(`^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${["flowchart","graph","sequenceDiagram","classDiagram","stateDiagram","stateDiagram-v2","erDiagram","journey","gantt","pie","quadrantChart","requirementDiagram","gitGraph","C4Context","mindmap","timeline","zenuml","sankey","xychart","block"].map(a=>`\\s*${a}(-beta)?`).join("|")})\\b`).test(k.trim()))){let b=await a.A(479676);try{let{elements:a,files:c={}}=await b.parseMermaidToExcalidraw(j.text),d=jt(a,{regenerateIds:!0});this.addElementsFromPasteOrLibrary({elements:d,files:c,position:"cursor"});return}catch(a){console.warn(`parsing pasted text as mermaid definition failed: ${a.message}`)}}let b=(0,F.Rb)(j.text).split(/\n+/).map(a=>a.trim()).filter(Boolean),d=b.map(a=>(0,F._g)(a)).filter(a=>(0,F.$g)(a,this.props.validateEmbeddable)&&(/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(a)||(0,F.Zg)(a)?.type==="video"));if(!kq&&d.length>0&&d.length===b.length){let a=[];for(let b of d){let c=a[a.length-1],d=this.insertEmbeddableElement({sceneX:c?c.x+c.width+20:g,sceneY:h,link:(0,F.Xc)(b)});d&&a.push(d)}a.length&&this.setState({selectedElementIds:Object.fromEntries(a.map(a=>[a.id,!0]))});return}this.addTextFromPaste(j.text,c)}this.setActiveTool({type:"selection"}),b?.preventDefault()})),(0,K.d)(this,"addElementsFromPasteOrLibrary",a=>{let b=(0,F.jh)(a.elements,null,void 0),[c,d,e,f]=(0,F.bj)(b),g=(0,F.ib)(c,e)/2,h=(0,F.ib)(d,f)/2,i="object"==typeof a.position?a.position.clientX:"cursor"===a.position?this.lastViewportPosition.x:this.state.width/2+this.state.offsetLeft,j="object"==typeof a.position?a.position.clientY:"cursor"===a.position?this.lastViewportPosition.y:this.state.height/2+this.state.offsetTop,{x:k,y:l}=(0,F.lb)({clientX:i,clientY:j},this.state),[m,n]=(0,F.oj)(k-g,l-h,this.getEffectiveGridSize()),o=(0,F.dg)(b.map(a=>(0,F.Qj)(a,{x:a.x+m-c,y:a.y+n-d})),{randomizeSeed:!a.retainSeed}),p=this.scene.getElementsIncludingDeleted(),q=[...p,...o];q=this.props.onDuplicate?.(q,p)||q,(0,F.Mj)(q,(0,F.xb)(o));let r=this.getTopLayerFrameAtSceneCoords({x:k,y:l});if(r){let a=(0,F.Hi)(o,r);(0,F.Ii)(q,a,r,this.state)}this.scene.replaceAllElements(q),o.forEach(a=>{if((0,F._b)(a)&&(0,F.nc)(a)){let b=(0,F.Aj)(a,this.scene.getElementsMapIncludingDeleted());(0,F.uj)(a,b,this.scene.getElementsMapIncludingDeleted())}}),F.o&&F.Qf.loadElementsFonts(o).then(a=>{this.fonts.onLoaded(a)}),a.files&&this.addMissingFiles(a.files),this.store.shouldCaptureIncrement();let s=(0,F.rk)(o);this.setState({...this.state,openSidebar:this.state.openSidebar&&this.device.editor.canFitSidebar&&c_.get(hQ)?this.state.openSidebar:null,...(0,F.Jc)({editingGroupId:null,selectedElementIds:s.reduce((a,b)=>((0,F.nc)(b)||(a[b.id]=!0),a),{})},this.scene.getNonDeletedElements(),this.state,this)},()=>{a.files&&this.addNewImagesToImageCache()}),this.setActiveTool({type:"selection"}),a.fitToContent&&this.scrollToContent(o,{fitToContent:!0,canvasOffsets:this.getEditorUIOffsets()})}),(0,K.d)(this,"setAppState",(a,b)=>{this.setState(a,b)}),(0,K.d)(this,"removePointer",a=>{kn&&this.resetContextMenuTimer(),ku.pointers.delete(a.pointerId)}),(0,K.d)(this,"toggleLock",(a="ui")=>{this.state.activeTool.locked||dw("toolbar","toggleLock",`${a} (${this.device.editor.isMobile?"mobile":"desktop"})`),this.setState(a=>({activeTool:{...a.activeTool,...(0,F.jb)(this.state,a.activeTool.locked?{type:"selection"}:a.activeTool),locked:!a.activeTool.locked}}))}),(0,K.d)(this,"updateFrameRendering",a=>{this.setState(b=>{let c="function"==typeof a?a(b.frameRendering):a;return{frameRendering:{enabled:c?.enabled??b.frameRendering.enabled,clip:c?.clip??b.frameRendering.clip,name:c?.name??b.frameRendering.name,outline:c?.outline??b.frameRendering.outline}}})}),(0,K.d)(this,"togglePenMode",a=>{this.setState(b=>({penMode:a??!b.penMode,penDetected:!0}))}),(0,K.d)(this,"onHandToolToggle",()=>{this.actionManager.executeAction(eB)}),(0,K.d)(this,"zoomCanvas",a=>{this.setState({...er({viewportX:this.state.width/2+this.state.offsetLeft,viewportY:this.state.height/2+this.state.offsetTop,nextZoom:(0,F.Ak)(a)},this.state)})}),(0,K.d)(this,"cancelInProgressAnimation",null),(0,K.d)(this,"scrollToContent",(a=this.scene.getNonDeletedElements(),b)=>{if("string"==typeof a){let c;if(c=(0,F.$h)(a)?(0,F.ai)(a):a){let d=this.scene.getElementsFromId(c);d?.length?this.scrollToContent(d,{fitToContent:b?.fitToContent??!0,animate:b?.animate??!0}):(0,F.$h)(a)&&this.setState({toast:{message:c8("elementLink.notFound"),duration:3e3,closable:!0}})}return}this.cancelInProgressAnimation?.();let c=Array.isArray(a)?a:[a],d=this.state.zoom,e=this.state.scrollX,f=this.state.scrollY;if(b?.fitToContent||b?.fitToViewport){let{appState:a}=ez({canvasOffsets:b.canvasOffsets,targetElements:c,appState:this.state,fitToViewport:!!b?.fitToViewport,viewportZoomFactor:b?.viewportZoomFactor,minZoom:b?.minZoom,maxZoom:b?.maxZoom});d=a.zoom,e=a.scrollX,f=a.scrollY}else{let a=(0,F.zk)(c,this.state);e=a.scrollX,f=a.scrollY}if(b?.animate){let a=this.state.scrollX,c=this.state.scrollY,g=this.state.zoom.value,h=(0,F.gb)({fromValues:{scrollX:a,scrollY:c,zoom:g},toValues:{scrollX:e,scrollY:f,zoom:d.value},interpolateValue:(a,b,c,d)=>{if("zoom"===d)return a*Math.pow(b/a,(0,F.fb)(c))},onStep:({scrollX:a,scrollY:b,zoom:c})=>{this.setState({scrollX:a,scrollY:b,zoom:{value:c}})},onStart:()=>{this.setState({shouldCacheIgnoreZoom:!0})},onEnd:()=>{this.setState({shouldCacheIgnoreZoom:!1})},onCancel:()=>{this.setState({shouldCacheIgnoreZoom:!1})},duration:b?.duration??500});this.cancelInProgressAnimation=()=>{h(),this.cancelInProgressAnimation=null}}else this.setState({scrollX:e,scrollY:f,zoom:d})}),(0,K.d)(this,"maybeUnfollowRemoteUser",()=>{this.state.userToFollow&&this.setState({userToFollow:null})}),(0,K.d)(this,"translateCanvas",a=>{this.cancelInProgressAnimation?.(),this.maybeUnfollowRemoteUser(),this.setState(a)}),(0,K.d)(this,"setToast",a=>{this.setState({toast:a})}),(0,K.d)(this,"restoreFileFromShare",async()=>{try{let a=await caches.open("web-share-target"),b=await a.match("shared-file");if(b){let c=await b.blob(),d=new File([c],c.name||"",{type:c.type});this.loadFileToCanvas(d,null),await a.delete("shared-file"),window.history.replaceState(null,F.s,window.location.pathname)}}catch(a){this.setState({errorMessage:a.message})}}),(0,K.d)(this,"addFiles",ju(a=>{let{addedFiles:b}=this.addMissingFiles(a);this.clearImageShapeCache(b),this.scene.triggerUpdate(),this.addNewImagesToImageCache()})),(0,K.d)(this,"addMissingFiles",(a,b=!1)=>{let c=b?{}:{...this.files},d={};for(let b of Array.isArray(a)?a:Object.values(a))if(!c[b.id]&&(d[b.id]=b,c[b.id]=b,b.mimeType===F.T.svg))try{let a=(0,F.Bh)((0,F.Rh)((0,F.Dh)(b.dataURL)),F.T.svg);b.dataURL!==a&&(b.version=(b.version??1)+1,b.dataURL=a)}catch(a){console.error(a)}return this.files=c,{addedFiles:d}}),(0,K.d)(this,"updateScene",ju(a=>{let b=(0,F.Nj)(a.elements??[]);if(a.captureUpdate&&a.captureUpdate!==F.Wg.EVENTUALLY){let c=this.store.snapshot.appState,d=this.store.snapshot.elements,e=a.appState?Object.assign({},c,a.appState):c,f=a.elements?this.store.filterUncomittedElements(this.scene.getElementsMapIncludingDeleted(),(0,F.xb)(b)):d;a.captureUpdate===F.Wg.IMMEDIATELY?this.store.captureIncrement(f,e):a.captureUpdate===F.Wg.NEVER&&this.store.updateSnapshot(f,e)}a.appState&&this.setState(a.appState),a.elements&&this.scene.replaceAllElements(b),a.collaborators&&this.setState({collaborators:a.collaborators})})),(0,K.d)(this,"triggerRender",a=>{!0===a?this.scene.triggerUpdate():this.setState({})}),(0,K.d)(this,"toggleSidebar",({name:a,tab:b,force:c})=>{let d,e=(d=void 0===c?this.state.openSidebar?.name===a&&this.state.openSidebar?.tab===b?null:a:c?a:null)?{name:d}:null;return e&&b&&(e.tab=b),this.setState({openSidebar:e}),!!d}),(0,K.d)(this,"updateCurrentCursorPosition",ju(a=>{this.lastViewportPosition.x=a.clientX,this.lastViewportPosition.y=a.clientY})),(0,K.d)(this,"getEditorUIOffsets",()=>{let a=this.excalidrawContainerRef?.current?.querySelector(".App-toolbar")?.getBoundingClientRect()?.bottom??0,b=this.excalidrawContainerRef?.current?.querySelector(".sidebar")?.getBoundingClientRect(),c=this.excalidrawContainerRef?.current?.querySelector(".App-menu__left")?.getBoundingClientRect();return c4.rtl?{top:a+16,right:Math.max(this.state.width-(c?.left??this.state.width),0)+16,bottom:16,left:Math.max(b?.right??0,0)+16}:{top:a+16,right:Math.max(this.state.width-(b?.left??this.state.width)+16,0),bottom:16,left:Math.max(c?.right??0,0)+16}}),(0,K.d)(this,"onKeyDown",ju(a=>{if("Proxy"in window&&(!a.shiftKey&&/^[A-Z]$/.test(a.key)||a.shiftKey&&/^[a-z]$/.test(a.key))&&(a=new Proxy(a,{get(b,c){let d=b[c];return"function"==typeof d?d.bind(b):"key"===c?a.shiftKey?b.key.toUpperCase():b.key.toLowerCase():d}})),!(0,F._a)(a.target)){if((a.key===F.hg.ESCAPE||a.key===F.hg.ENTER)&&this.state.croppingElementId)return void this.finishImageCropping();let b=(0,F.vk)(this.scene.getNonDeletedElementsMap(),this.state);if(1===b.length&&(0,F.Wb)(b[0])&&a.key===F.hg.ENTER)return void this.startImageCropping(b[0]);if(a.key===F.hg.ESCAPE&&this.flowChartCreator.isCreatingChart){this.flowChartCreator.clear(),this.triggerRender(!0);return}let c=(0,F.jg)(a.key);if(a[F.hg.CTRL_OR_CMD]&&c&&!a.shiftKey){a.preventDefault();let b=(0,F.vk)(this.scene.getNonDeletedElementsMap(),this.state);1===b.length&&(0,F.lc)(b[0])&&this.flowChartCreator.createNodes(b[0],this.scene.getNonDeletedElementsMap(),this.state,hf(a.key)),this.flowChartCreator.pendingNodes?.length&&!(0,F.Uj)(this.flowChartCreator.pendingNodes,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap(),this.getEditorUIOffsets())&&this.scrollToContent(this.flowChartCreator.pendingNodes,{animate:!0,duration:300,fitToContent:!0,canvasOffsets:this.getEditorUIOffsets()});return}if(a.altKey){let b=(0,F.vk)(this.scene.getNonDeletedElementsMap(),this.state);if(1===b.length&&c){a.preventDefault();let c=this.flowChartNavigator.exploreByDirection(b[0],this.scene.getNonDeletedElementsMap(),hf(a.key));if(c){this.setState(a=>({selectedElementIds:(0,F.xk)({[c]:!0},a)}));let a=this.scene.getNonDeletedElementsMap().get(c);a&&!(0,F.Uj)([a],this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap(),this.getEditorUIOffsets())&&this.scrollToContent(a,{animate:!0,duration:300,canvasOffsets:this.getEditorUIOffsets()})}return}}}if(a[F.hg.CTRL_OR_CMD]&&a.key===F.hg.P&&!a.shiftKey&&!a.altKey){this.setToast({message:c8("commandPalette.shortcutHint",{shortcut:gm("commandPalette")})}),a.preventDefault();return}if(a[F.hg.CTRL_OR_CMD]&&a.key.toLowerCase()===F.hg.V&&(kq=a.shiftKey,clearTimeout(kr),kr=window.setTimeout(()=>{kq=!1},100)),a[F.hg.CTRL_OR_CMD]&&(0,F.ab)(a.target)&&(a.code===F.gg.MINUS||a.code===F.gg.EQUAL))return void a.preventDefault();if((0,F.ab)(a.target)&&a.key!==F.hg.ESCAPE||(0,F.jg)(a.key)&&(0,F._a)(a.target))return;if(a.key===F.hg.QUESTION_MARK)return void this.setState({openDialog:{name:"help"}});if(a.key.toLowerCase()===F.hg.E&&a.shiftKey&&a[F.hg.CTRL_OR_CMD]){a.preventDefault(),this.setState({openDialog:{name:"imageExport"}});return}if(a.key===F.hg.PAGE_UP||a.key===F.hg.PAGE_DOWN){let b=(a.shiftKey?this.state.width:this.state.height)/this.state.zoom.value;a.key===F.hg.PAGE_DOWN&&(b=-b),a.shiftKey?this.translateCanvas(a=>({scrollX:a.scrollX+b})):this.translateCanvas(a=>({scrollY:a.scrollY+b}))}if(this.state.openDialog?.name==="elementLinkSelector"||this.actionManager.handleKeyDown(a)||this.state.viewModeEnabled)return;if(a[F.hg.CTRL_OR_CMD]&&this.state.isBindingEnabled&&this.setState({isBindingEnabled:!1}),(0,F.jg)(a.key)){let b=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0}),c=b.find(F.ec),d=new Set;b.filter(F.ec).filter(a=>{let c=a.startBinding&&!b.some(b=>b.id===a.startBinding?.elementId),d=a.endBinding&&!b.some(b=>b.id===a.endBinding?.elementId);return c||d}).forEach(a=>d.add(a.id)),b=b.filter(a=>!d.has(a.id));let e=this.getEffectiveGridSize()&&(a.shiftKey?F.w:this.getEffectiveGridSize())||(a.shiftKey?F.v:F.w),f=0,g=0;a.key===F.hg.ARROW_LEFT?f=-e:a.key===F.hg.ARROW_RIGHT?f=e:a.key===F.hg.ARROW_UP?g=-e:a.key===F.hg.ARROW_DOWN&&(g=e),b.forEach(a=>{(0,F.Pj)(a,{x:a.x+f,y:a.y+g},!1),(0,F.Pg)(a,this.scene.getNonDeletedElementsMap(),{simultaneouslyUpdated:b})}),this.setState({suggestedBindings:(0,F.Kg)(b.filter(a=>a.id!==c?.id||0!==e),this.scene.getNonDeletedElementsMap(),this.state.zoom)}),this.scene.triggerUpdate(),a.preventDefault()}else if(a.key===F.hg.ENTER){let b=this.scene.getSelectedElements(this.state);if(1===b.length){let c=b[0];if(a[F.hg.CTRL_OR_CMD])(0,F.cc)(c)&&(!this.state.editingLinearElement||this.state.editingLinearElement.elementId!==b[0].id)&&(this.store.shouldCaptureIncrement(),(0,F.ec)(c)||this.setState({editingLinearElement:new F.pj(c)}));else if((0,F._b)(c)||(0,F.Fj)(c)){let b;(0,F._b)(c)||(b=c);let d=(0,F.Bj)(c,this.state,this.scene.getNonDeletedElementsMap()),e=d.x,f=d.y;this.startTextEditing({sceneX:e,sceneY:f,container:b}),a.preventDefault();return}else(0,F.bc)(c)&&this.setState({editingFrame:c.id})}}else if(!a.ctrlKey&&!a.altKey&&!a.metaKey&&!this.state.newElement&&!this.state.selectionElement&&!this.state.selectedElementsAreBeingDragged){let b=(0,F.sg)(a.key);b?(this.state.activeTool.type!==b&&dw("toolbar",b,`keyboard (${this.device.editor.isMobile?"mobile":"desktop"})`),"arrow"===b&&"arrow"===this.state.activeTool.type&&this.setState(a=>({currentItemArrowType:a.currentItemArrowType===F.Fa.sharp?F.Fa.round:a.currentItemArrowType===F.Fa.round?F.Fa.elbow:F.Fa.sharp})),this.setActiveTool({type:b}),a.stopPropagation()):a.key===F.hg.Q&&(this.toggleLock("keyboard"),a.stopPropagation())}if(a.key===F.hg.SPACE&&0===ku.pointers.size&&(kj=!0,(0,F.bd)(this.interactiveCanvas,F.z.GRAB),a.preventDefault()),(a.key===F.hg.G||a.key===F.hg.S)&&!a.altKey&&!a[F.hg.CTRL_OR_CMD]){let b=this.scene.getSelectedElements(this.state);if("selection"===this.state.activeTool.type&&!b.length)return;a.key===F.hg.G&&((0,F.Vi)(this.state.activeTool.type)||b.some(a=>(0,F.Vi)(a.type)))&&(this.setState({openPopup:"elementBackground"}),a.stopPropagation()),a.key===F.hg.S&&(this.setState({openPopup:"elementStroke"}),a.stopPropagation())}if(!a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&a.key.toLowerCase()===F.hg.F){let b=this.scene.getSelectedElements(this.state);if("selection"===this.state.activeTool.type&&!b.length)return;("text"===this.state.activeTool.type||b.find(a=>(0,F._b)(a)||(0,F.zj)(a,this.scene.getNonDeletedElementsMap())))&&(a.preventDefault(),this.setState({openPopup:"fontFamily"}))}if(a.key===F.hg.K&&!a.altKey&&!a[F.hg.CTRL_OR_CMD])return void("laser"===this.state.activeTool.type?this.setActiveTool({type:"selection"}):this.setActiveTool({type:"laser"}));a[F.hg.CTRL_OR_CMD]&&(a.key===F.hg.BACKSPACE||a.key===F.hg.DELETE)&&c_.set(gC,"clearCanvas");let b=a.key.toLocaleLowerCase(),c=b===F.hg.S&&a.shiftKey,d=a.key===F.hg.I||b===F.hg.G&&a.shiftKey;(c||d)&&this.openEyeDropper({type:c?"stroke":"background"})})),(0,K.d)(this,"onKeyUp",ju(a=>{if(a.key===F.hg.SPACE&&(this.state.viewModeEnabled||this.state.openDialog?.name==="elementLinkSelector"?(0,F.bd)(this.interactiveCanvas,F.z.GRAB):"selection"===this.state.activeTool.type?(0,F.ad)(this.interactiveCanvas):((0,F.dd)(this.interactiveCanvas,this.state),this.setState({selectedElementIds:(0,F.xk)({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})),kj=!1),a[F.hg.CTRL_OR_CMD]||this.state.isBindingEnabled||this.setState({isBindingEnabled:!0}),(0,F.jg)(a.key)&&((0,F.Jg)(this.scene.getSelectedElements(this.state).filter(F.cc),this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements(),this.scene,(0,F.Fg)(this.state),this.state.selectedLinearElement?.selectedPointsIndices??[],this.state.zoom),this.setState({suggestedBindings:[]})),a.altKey||this.flowChartNavigator.isExploring&&(this.flowChartNavigator.clear(),this.syncActionResult({captureUpdate:F.Wg.IMMEDIATELY})),!a[F.hg.CTRL_OR_CMD]&&this.flowChartCreator.isCreatingChart){this.flowChartCreator.pendingNodes?.length&&this.scene.insertElements(this.flowChartCreator.pendingNodes);let a=this.flowChartCreator.pendingNodes?.[0];a&&(this.setState(b=>({selectedElementIds:(0,F.xk)({[a.id]:!0},b)})),(0,F.Uj)([a],this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap(),this.getEditorUIOffsets())||this.scrollToContent(a,{animate:!0,duration:300,canvasOffsets:this.getEditorUIOffsets()})),this.flowChartCreator.clear(),this.syncActionResult({captureUpdate:F.Wg.IMMEDIATELY})}})),(0,K.d)(this,"isToolSupported",a=>this.props.UIOptions.tools?.[a]!==!1),(0,K.d)(this,"setActiveTool",a=>{if(!this.isToolSupported(a.type))return void console.warn(`"${a.type}" tool is disabled via "UIOptions.canvasActions.tools.${a.type}"`);let b=(0,F.jb)(this.state,a);"hand"===b.type?(0,F.bd)(this.interactiveCanvas,F.z.GRAB):kj||(0,F.dd)(this.interactiveCanvas,{...this.state,activeTool:b}),(0,F.Za)(document.activeElement)&&this.focusContainer(),(0,F.fc)(b.type)||this.setState({suggestedBindings:[]}),"image"===b.type&&this.onImageAction({insertOnCanvasDirectly:("image"===a.type&&a.insertOnCanvasDirectly)??!1}),this.setState(a=>{let c={snapLines:a.snapLines.length?[]:a.snapLines,originSnapOffset:null,activeEmbeddable:null};return"freedraw"===b.type&&this.store.shouldCaptureIncrement(),"selection"!==b.type?{...a,activeTool:b,selectedElementIds:(0,F.xk)({},a),selectedGroupIds:(0,F.xk)({},a),editingGroupId:null,multiElement:null,...c}:{...a,activeTool:b,...c}})}),(0,K.d)(this,"setOpenDialog",a=>{this.setState({openDialog:a})}),(0,K.d)(this,"setCursor",a=>{(0,F.bd)(this.interactiveCanvas,a)}),(0,K.d)(this,"resetCursor",()=>{(0,F.ad)(this.interactiveCanvas)}),(0,K.d)(this,"isTouchScreenMultiTouchGesture",()=>ku.pointers.size>=2),(0,K.d)(this,"getName",()=>this.state.name||this.props.name||`${c8("labels.untitled")}-${(0,F.Xa)()}`),(0,K.d)(this,"onGestureStart",ju(a=>{a.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({selectedElementIds:(0,F.xk)({},this.state),activeEmbeddable:null}),ku.initialScale=this.state.zoom.value})),(0,K.d)(this,"onGestureChange",ju(a=>{if(a.preventDefault(),this.isTouchScreenMultiTouchGesture())return;let b=ku.initialScale;b&&this.setState(c=>({...er({viewportX:this.lastViewportPosition.x,viewportY:this.lastViewportPosition.y,nextZoom:(0,F.Ak)(b*a.scale)},c)}))})),(0,K.d)(this,"onGestureEnd",ju(a=>{a.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({previousSelectedElementIds:{},selectedElementIds:(0,F.xk)(this.state.previousSelectedElementIds,this.state)}),ku.initialScale=null})),(0,K.d)(this,"startTextEditing",({sceneX:a,sceneY:b,insertAtParentCenter:c=!0,container:d,autoEdit:e=!0})=>{let f=!1,g=c&&this.getTextWysiwygSnappedToCenterPosition(a,b,this.state,d);d&&g&&((0,F.zj)(d,this.scene.getNonDeletedElementsMap())||(f=!0));let h=null,i=this.scene.getSelectedElements(this.state);h=1===i.length?(0,F._b)(i[0])?i[0]:d?(0,F.zj)(i[0],this.scene.getNonDeletedElementsMap()):this.getTextElementAtPosition(a,b):this.getTextElementAtPosition(a,b);let j=h?.fontFamily||this.state.currentItemFontFamily,k=h?.lineHeight||(0,F.Rf)(j),l=this.state.currentItemFontSize;if(!h&&f&&d&&!(0,F.dc)(d)){let c=(0,F.wc)((0,F.cb)({fontSize:l,fontFamily:j}),k),e=(0,F.Bc)(l,k),f=Math.max(d.height,e),h=Math.max(d.width,c);(0,F.Pj)(d,{height:f,width:h}),a=d.x+h/2,b=d.y+f/2,g&&(g=this.getTextWysiwygSnappedToCenterPosition(a,b,this.state,d))}let m=this.getTopLayerFrameAtSceneCoords({x:a,y:b}),n=h||(0,F.Xf)({x:g?g.elementCenterX:a,y:g?g.elementCenterY:b,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,text:"",fontSize:l,fontFamily:j,textAlign:g?"center":this.state.currentItemTextAlign,verticalAlign:g?F.sa.MIDDLE:F.L,containerId:f?d?.id:void 0,groupIds:d?.groupIds??[],lineHeight:k,angle:d?.angle??0,frameId:m?m.id:null});if(!h&&f&&d&&(0,F.Pj)(d,{boundElements:(d.boundElements||[]).concat({type:"text",id:n.id})}),this.setState({editingTextElement:n}),!h)if(d&&f){let a=this.scene.getElementIndex(d.id);this.scene.insertElementAtIndex(n,a+1)}else this.scene.insertElement(n);e||h||d?this.handleTextWysiwyg(n,{isExistingElement:!!h}):this.setState({newElement:n,multiElement:null})}),(0,K.d)(this,"startImageCropping",a=>{this.store.shouldCaptureIncrement(),this.setState({croppingElementId:a.id})}),(0,K.d)(this,"finishImageCropping",()=>{this.state.croppingElementId&&(this.store.shouldCaptureIncrement(),this.setState({croppingElementId:null}))}),(0,K.d)(this,"handleCanvasDoubleClick",a=>{if(this.state.multiElement||"selection"!==this.state.activeTool.type)return;let b=this.scene.getSelectedElements(this.state),{x:c,y:d}=(0,F.lb)(a,this.state);if(1===b.length&&(0,F.cc)(b[0]))if(!a[F.hg.CTRL_OR_CMD]||this.state.editingLinearElement&&this.state.editingLinearElement.elementId===b[0].id||(0,F.ec)(b[0])){if(this.state.selectedLinearElement&&(0,F.ec)(b[0])){let a=F.pj.getSegmentMidpointHitCoords(this.state.selectedLinearElement,{x:c,y:d},this.state,this.scene.getNonDeletedElementsMap()),e=a?F.pj.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,a,this.scene.getNonDeletedElementsMap()):-1;if(e&&e>-1){this.store.shouldCaptureIncrement(),F.pj.deleteFixedSegment(b[0],e);let f=F.pj.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:c,y:d},this.state,this.scene.getNonDeletedElementsMap()),g=f?F.pj.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,f,this.scene.getNonDeletedElementsMap()):null;this.setState({selectedLinearElement:{...this.state.selectedLinearElement,pointerDownState:{...this.state.selectedLinearElement.pointerDownState,segmentMidpoint:{index:g,value:a,added:!1}},segmentMidPointHoveredCoords:f}});return}}}else{this.store.shouldCaptureIncrement(),this.setState({editingLinearElement:new F.pj(b[0])});return}if(1===b.length&&(0,F.Wb)(b[0]))return void this.startImageCropping(b[0]);if((0,F.ad)(this.interactiveCanvas),(0,F.Mc)(this.state).length>0){let a=this.getElementAtPosition(c,d),b=a&&(0,F.Rc)(a,this.state.selectedGroupIds);if(b){this.store.shouldCaptureIncrement(),this.setState(c=>({...c,...(0,F.Jc)({editingGroupId:b,selectedElementIds:{[a.id]:!0}},this.scene.getNonDeletedElements(),c,this)}));return}}if((0,F.ad)(this.interactiveCanvas),!a[F.hg.CTRL_OR_CMD]&&!this.state.viewModeEnabled){let b=this.getElementAtPosition(c,d);if((0,F.Zb)(b))return void this.setState({activeEmbeddable:{element:b,state:"active"}});let e=this.getTextBindableContainerAtPosition(c,d);if(e&&((0,F.mc)(e)||!(0,F.sb)(e.backgroundColor)||(0,F.ng)({x:c,y:d,element:e,shape:(0,F.tg)(e,this.scene.getNonDeletedElementsMap()),threshold:this.getElementHitThreshold()}))){let a=(0,F.Bj)(e,this.state,this.scene.getNonDeletedElementsMap());c=a.x,d=a.y}this.startTextEditing({sceneX:c,sceneY:d,insertAtParentCenter:!a.altKey,container:e})}}),(0,K.d)(this,"getElementLinkAtPosition",(a,b)=>{let c=this.scene.getNonDeletedElements(),d=-1;for(let e=c.length-1;e>=0;e--){let f=c[e];if(b&&f.id===b.id&&(d=e),f.link&&e>=d&&(0,F.Uh)(f,this.scene.getNonDeletedElementsMap(),this.state,(0,F.Ua)(a.x,a.y),this.device.editor.isMobile))return f}}),(0,K.d)(this,"redirectToLink",(a,b)=>{let c=(0,F.Wa)((0,F.Ua)(this.lastPointerDownEvent.clientX,this.lastPointerDownEvent.clientY),(0,F.Ua)(this.lastPointerUpEvent.clientX,this.lastPointerUpEvent.clientY));if(!this.hitLinkElement||c>F.t)return;let d=(0,F.lb)(this.lastPointerDownEvent,this.state),e=this.scene.getNonDeletedElementsMap(),f=(0,F.Uh)(this.hitLinkElement,e,this.state,(0,F.Ua)(d.x,d.y),this.device.editor.isMobile),g=(0,F.lb)(this.lastPointerUpEvent,this.state),h=(0,F.Uh)(this.hitLinkElement,e,this.state,(0,F.Ua)(g.x,g.y),this.device.editor.isMobile);if(f&&h){fu();let b=this.hitLinkElement.link;if(b){let c;if(b=(0,F.Xc)(b),this.props.onLinkOpen&&(c=(0,F.Cb)("excalidraw-link",a.nativeEvent),this.props.onLinkOpen({...this.hitLinkElement,link:b},c)),!c?.defaultPrevented){let a=(0,F.Yc)(b)?"_self":"_blank",c=window.open(void 0,a);c&&(c.opener=null,c.location=b)}}}}),(0,K.d)(this,"getTopLayerFrameAtSceneCoords",a=>{let b=this.scene.getNonDeletedElementsMap(),c=this.scene.getNonDeletedFramesLikes().filter(c=>(0,F.zi)(a,c,b));return c.length?c[c.length-1]:null}),(0,K.d)(this,"handleCanvasPointerMove",a=>{var b,c,d;this.savePointer(a.clientX,a.clientY,this.state.cursorButton),this.lastPointerMoveEvent=a.nativeEvent,ku.pointers.has(a.pointerId)&&ku.pointers.set(a.pointerId,{x:a.clientX,y:a.clientY});let e=ku.initialScale;if(2===ku.pointers.size&&ku.lastCenter&&e&&ku.initialDistance){let a=g_(ku.pointers),b=a.x-ku.lastCenter.x,c=a.y-ku.lastCenter.y;ku.lastCenter=a;let d=g0(Array.from(ku.pointers.values())),f="freedraw"===this.state.activeTool.type&&this.state.penMode?1:d/ku.initialDistance,g=f?(0,F.Ak)(e*f):this.state.zoom.value;this.setState(d=>{let e=er({viewportX:a.x,viewportY:a.y,nextZoom:g},d);this.translateCanvas({zoom:e.zoom,scrollX:e.scrollX+b/g*2,scrollY:e.scrollY+c/g*2,shouldCacheIgnoreZoom:!0})}),this.resetShouldCacheIgnoreZoomDebounced()}else ku.lastCenter=ku.initialDistance=ku.initialScale=null;if(kj||kk||kl||(0,F.Hc)(this.state))return;let f=ho(km,a.clientX-this.state.offsetLeft,a.clientY-this.state.offsetTop).isOverEither;this.state.newElement||this.state.selectionElement||this.state.selectedElementsAreBeingDragged||this.state.multiElement||(f?(0,F.ad)(this.interactiveCanvas):(0,F.dd)(this.interactiveCanvas,this.state));let g=(0,F.lb)(a,this.state),{x:h,y:i}=g;if(!this.state.newElement&&(0,F.nj)(this.state.activeTool.type)){let{originOffset:b,snapLines:c}=(0,F.mj)(this.scene.getNonDeletedElements(),this,{x:h,y:i},a,this.scene.getNonDeletedElementsMap());this.setState(a=>{let d=(0,F.Ob)(a.snapLines,c),e=a.originSnapOffset?(0,F.Ob)(a.originSnapOffset,b):b;return a.snapLines===d&&a.originSnapOffset===e?null:{snapLines:d,originSnapOffset:e}})}else this.state.newElement||this.state.selectedElementsAreBeingDragged||this.state.selectionElement||this.setState(a=>a.snapLines.length?{snapLines:[]}:null);if(this.state.editingLinearElement&&!this.state.editingLinearElement.isDragging){let b=F.pj.handlePointerMove(a,h,i,this,this.scene.getNonDeletedElementsMap());b&&b!==this.state.editingLinearElement&&(0,aw.flushSync)(()=>{this.setState({editingLinearElement:b})}),b?.lastUncommittedPoint!=null?this.maybeSuggestBindingAtCursor(g,b.elbowed):(0,aw.flushSync)(()=>{this.setState({suggestedBindings:[]})})}if((0,F.hc)(this.state.activeTool.type)){let{newElement:a}=this.state;(0,F.gc)(a,!1)?this.maybeSuggestBindingsForLinearElementAtCoords(a,[g],this.state.startBoundElement):this.maybeSuggestBindingAtCursor(g,!1)}if(this.state.multiElement){let{multiElement:b}=this.state,{x:c,y:d}=b,{points:e,lastCommittedPoint:f}=b,g=e[e.length-1];if((0,F.dd)(this.interactiveCanvas,this.state),g===f)(0,F.Wa)((0,F.Ua)(h-c,i-d),g)>=F.u?(0,F.Pj)(b,{points:[...e,(0,F.Ua)(h-c,i-d)]},!1):(0,F.bd)(this.interactiveCanvas,F.z.POINTER);else if(e.length>2&&f&&(0,F.Wa)((0,F.Ua)(h-c,i-d),f)<F.u)(0,F.bd)(this.interactiveCanvas,F.z.POINTER),(0,F.Pj)(b,{points:e.slice(0,-1)},!1);else{let[f,g]=(0,F.oj)(h,i,a[F.hg.CTRL_OR_CMD]||(0,F.ec)(b)?null:this.getEffectiveGridSize()),[j,k]=b?.lastCommittedPoint??[0,0],l=f-c-j,m=g-d-k;(0,F.mg)(a)&&({width:l,height:m}=(0,F.Vj)(j+c,k+d,f,g)),(0,F.xg)(e,this.state.zoom.value)&&(0,F.bd)(this.interactiveCanvas,F.z.POINTER),(0,F.Pj)(b,{points:[...e.slice(0,-1),(0,F.Ua)(j+l,k+m)]},!1,{isDragging:!0}),this.triggerRender(!1)}return}if(a.buttons||"selection"!==this.state.activeTool.type&&"text"!==this.state.activeTool.type&&"eraser"!==this.state.activeTool.type)return;let j=this.scene.getNonDeletedElements(),k=this.scene.getSelectedElements(this.state);if(1!==k.length||f||this.state.editingLinearElement){if(k.length>1&&!f&&this.state.openDialog?.name!=="elementLinkSelector"){let b=(0,F.ak)((0,F.bj)(k),h,i,this.state.zoom,a.pointerType,this.device);if(b)return void(0,F.bd)(this.interactiveCanvas,(0,F.bk)({transformHandleType:b}))}}else if(this.state.selectedLinearElement&&this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,h,i),(!this.state.selectedLinearElement||-1===this.state.selectedLinearElement.hoverPointIndex)&&this.state.openDialog?.name!=="elementLinkSelector"&&!(1===k.length&&(0,F.ec)(k[0]))){let b=(0,F.$j)(j,this.state,h,i,this.state.zoom,a.pointerType,this.scene.getNonDeletedElementsMap(),this.device);if(b&&b.transformHandleType)return void(0,F.bd)(this.interactiveCanvas,(0,F.bk)(b))}let l=this.getElementAtPosition(g.x,g.y);this.hitLinkElement=this.getElementLinkAtPosition(g,l),!(0,F.Gc)(this.state)&&(this.hitLinkElement&&!this.state.selectedElementIds[this.hitLinkElement.id]?((0,F.bd)(this.interactiveCanvas,F.z.POINTER),b=this.hitLinkElement,c=this.state,d=this.scene.getNonDeletedElementsMap(),ft&&clearTimeout(ft),ft=window.setTimeout(()=>((a,b,c)=>{if(!a.link)return;let d=es();d.classList.add("excalidraw-tooltip--visible"),d.style.maxWidth="20rem",d.textContent=(0,F.$h)(a.link)?c8("labels.link.goToElement"):a.link;let[e,f,g,h]=(0,F.aj)(a,c),[i,j,k,l]=(0,F.Sh)([e,f,g,h],a.angle,b),m=(0,F.mb)({sceneX:i,sceneY:j},b);et(d,{left:m.x,top:m.y,width:k,height:l},"top"),dw("hyperlink","tooltip","link-icon"),fo=!0})(b,c,d),F.ca)):(fu(),l&&(l.link||(0,F.Xb)(l))&&this.state.selectedElementIds[l.id]&&!this.state.contextMenu&&!this.state.showHyperlinkPopup?this.setState({showHyperlinkPopup:"info"}):"text"===this.state.activeTool.type?(0,F.bd)(this.interactiveCanvas,(0,F._b)(l)?F.z.TEXT:F.z.CROSSHAIR):this.state.viewModeEnabled?(0,F.bd)(this.interactiveCanvas,F.z.GRAB):this.state.openDialog?.name==="elementLinkSelector"||f?(0,F.bd)(this.interactiveCanvas,F.z.AUTO):this.state.selectedLinearElement?this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,h,i):a[F.hg.CTRL_OR_CMD]?(0,F.bd)(this.interactiveCanvas,F.z.AUTO):(l||this.isHittingCommonBoundingBoxOfSelectedElements(g,k))&&!l?.locked&&(l&&(0,F.Zb)(l)&&this.isIframeLikeElementCenter(l,a,h,i)?((0,F.bd)(this.interactiveCanvas,F.z.POINTER),this.setState({activeEmbeddable:{element:l,state:"hover"}})):l&&(0,F.ec)(l)||((0,F.bd)(this.interactiveCanvas,F.z.MOVE),this.state.activeEmbeddable?.state==="hover"&&this.setState({activeEmbeddable:null})))),this.state.openDialog?.name==="elementLinkSelector"&&l?this.setState(a=>({hoveredElementIds:(0,F.Ob)(a.hoveredElementIds,(0,F.Jc)({editingGroupId:a.editingGroupId,selectedElementIds:{[l.id]:!0}},this.scene.getNonDeletedElements(),a,this).selectedElementIds)})):this.state.openDialog?.name!=="elementLinkSelector"||l||this.setState(a=>({hoveredElementIds:(0,F.Ob)(a.hoveredElementIds,{})})))}),(0,K.d)(this,"handleEraser",(a,b,c)=>{this.eraserTrail.addPointToPath(c.x,c.y);let d=!1,e=new Set,f=this.scene.getNonDeletedElements(),g=b=>{for(let c of b){if(c.locked)return;if(a.altKey?this.elementsPendingErasure.delete(c.id)&&(d=!0):this.elementsPendingErasure.has(c.id)||(d=!0,this.elementsPendingErasure.add(c.id)),d&&c.groupIds?.length){let b=c.groupIds.at(-1);if(!e.has(b))for(let c of(e.add(b),(0,F.Qc)(f,b)))a.altKey?this.elementsPendingErasure.delete(c.id):this.elementsPendingErasure.add(c.id)}}},h=(0,F.Wa)((0,F.Ua)(b.lastCoords.x,b.lastCoords.y),(0,F.Ua)(c.x,c.y)),i=this.getElementHitThreshold(),j={...b.lastCoords},k=0;for(;k<=h&&(g(this.getElementsAtPosition(j.x,j.y)),k!==h);){let a=(k=Math.min(k+i,h))/h,b=(1-a)*j.x+a*c.x,d=(1-a)*j.y+a*c.y;j.x=b,j.y=d}if(b.lastCoords.x=c.x,b.lastCoords.y=c.y,d){for(let b of this.scene.getNonDeletedElements())(0,F.nc)(b)&&(this.elementsPendingErasure.has(b.id)||this.elementsPendingErasure.has(b.containerId))&&(a.altKey?(this.elementsPendingErasure.delete(b.id),this.elementsPendingErasure.delete(b.containerId)):(this.elementsPendingErasure.add(b.id),this.elementsPendingErasure.add(b.containerId)));this.elementsPendingErasure=new Set(this.elementsPendingErasure),this.triggerRender()}}),(0,K.d)(this,"handleTouchMove",a=>{ko=!0}),(0,K.d)(this,"handleCanvasPointerDown",a=>{let b=a.target;if(b.setPointerCapture&&b.setPointerCapture(a.pointerId),this.maybeCleanupAfterMissingPointerUp(a.nativeEvent),this.maybeUnfollowRemoteUser(),this.state.searchMatches&&(this.setState(a=>({searchMatches:a.searchMatches.map(a=>({...a,focus:!1}))})),c_.set(id,null)),this.state.contextMenu&&this.setState({contextMenu:null}),this.state.snapLines&&this.setAppState({snapLines:[]}),this.updateGestureOnPointerDown(a),"touch"===a.pointerType&&this.state.newElement&&"freedraw"===this.state.newElement.type){let a=this.state.newElement;this.updateScene({...a.points.length<10?{elements:this.scene.getElementsIncludingDeleted().filter(b=>b.id!==a.id)}:{},appState:{newElement:null,editingTextElement:null,startBoundElement:null,suggestedBindings:[],selectedElementIds:(0,F.xk)(Object.keys(this.state.selectedElementIds).filter(b=>b!==a.id).reduce((a,b)=>(a[b]=this.state.selectedElementIds[b],a),{}),this.state)},captureUpdate:this.state.openDialog?.name==="elementLinkSelector"?F.Wg.EVENTUALLY:F.Wg.NEVER});return}let c=document.getSelection();if(c?.anchorNode&&c.removeAllRanges(),this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(a),this.state.penDetected||"pen"!==a.pointerType||this.setState(a=>({penMode:!0,penDetected:!0})),!this.device.isTouchScreen&&["pen","touch"].includes(a.pointerType)&&(this.device=(0,F.Db)(this.device,{isTouchScreen:!0})),kk||(this.lastPointerDownEvent=a,this.handleCanvasPanUsingWheelOrSpaceDrag(a)))return;if(this.setState({lastPointerDownWith:a.pointerType,cursorButton:"down"}),this.savePointer(a.clientX,a.clientY,"down"),a.button===F.A.ERASER&&this.state.activeTool.type!==F.Aa.eraser)return void this.setState({activeTool:(0,F.jb)(this.state,{type:F.Aa.eraser,lastActiveToolBeforeEraser:this.state.activeTool})},()=>{this.handleCanvasPointerDown(a);let b=()=>{c(),d?.(),(0,F.Gc)(this.state)&&this.setState({activeTool:(0,F.jb)(this.state,{...this.state.activeTool.lastActiveTool||{type:F.Aa.selection},lastActiveToolBeforeEraser:null})})},c=(0,F.Pb)(window,"pointerup",b,{once:!0}),d;requestAnimationFrame(()=>{d=this.missingPointerEventCleanupEmitter.once(b)})});if(a.button!==F.A.MAIN&&a.button!==F.A.TOUCH&&a.button!==F.A.ERASER||ku.pointers.size>1)return;let d=this.initialPointerDownState(a);if(this.setState({selectedElementsAreBeingDragged:!1}),this.handleDraggingScrollBar(a,d)||(this.clearSelectionIfNotUsingSelection(),this.updateBindingEnabledOnPointerMove(a),this.handleSelectionOnPointerDown(a,d))||!(!this.state.penMode||"touch"!==a.pointerType||"selection"===this.state.activeTool.type||"text"===this.state.activeTool.type||"image"===this.state.activeTool.type))return;if("text"===this.state.activeTool.type)this.handleTextOnPointerDown(a,d);else if("arrow"===this.state.activeTool.type||"line"===this.state.activeTool.type)this.handleLinearElementOnPointerDown(a,this.state.activeTool.type,d);else if("image"===this.state.activeTool.type){(0,F.bd)(this.interactiveCanvas,F.z.CROSSHAIR);let b=this.state.pendingImageElementId&&this.scene.getElement(this.state.pendingImageElementId);if(!b)return;this.setState({newElement:b,pendingImageElementId:null,multiElement:null});let{x:c,y:d}=(0,F.lb)(a,this.state),e=this.getTopLayerFrameAtSceneCoords({x:c,y:d});(0,F.Pj)(b,{x:c,y:d,frameId:e?e.id:null})}else"freedraw"===this.state.activeTool.type?this.handleFreeDrawElementOnPointerDown(a,this.state.activeTool.type,d):"custom"===this.state.activeTool.type?(0,F.dd)(this.interactiveCanvas,this.state):this.state.activeTool.type===F.Aa.frame||this.state.activeTool.type===F.Aa.magicframe?this.createFrameElementOnPointerDown(d,this.state.activeTool.type):"laser"===this.state.activeTool.type?this.laserTrails.startPath(d.lastCoords.x,d.lastCoords.y):"eraser"!==this.state.activeTool.type&&"hand"!==this.state.activeTool.type&&this.createGenericElementOnPointerDown(this.state.activeTool.type,d);this.props?.onPointerDown?.(this.state.activeTool,d),this.onPointerDownEmitter.trigger(this.state.activeTool,d,a),"eraser"===this.state.activeTool.type&&this.eraserTrail.startPath(d.lastCoords.x,d.lastCoords.y);let e=this.onPointerMoveFromPointerDownHandler(d),f=this.onPointerUpFromPointerDownHandler(d),g=this.onKeyDownFromPointerDownHandler(d),h=this.onKeyUpFromPointerDownHandler(d);this.missingPointerEventCleanupEmitter.once(b=>f(b||a.nativeEvent)),this.state.viewModeEnabled&&"laser"!==this.state.activeTool.type||(window.addEventListener("pointermove",e),window.addEventListener("pointerup",f),window.addEventListener("keydown",g),window.addEventListener("keyup",h),d.eventListeners.onMove=e,d.eventListeners.onUp=f,d.eventListeners.onKeyUp=h,d.eventListeners.onKeyDown=g)}),(0,K.d)(this,"handleCanvasPointerUp",a=>{this.removePointer(a),this.lastPointerUpEvent=a;let b=(0,F.lb)({clientX:a.clientX,clientY:a.clientY},this.state),c=a.timeStamp-(this.lastPointerDownEvent?.timeStamp??0);if(this.device.editor.isMobile&&c<300){let c=this.getElementAtPosition(b.x,b.y);if((0,F.Zb)(c)&&this.isIframeLikeElementCenter(c,a,b.x,b.y))return void this.handleEmbeddableCenterClick(c)}if(this.device.isTouchScreen){let a=this.getElementAtPosition(b.x,b.y);this.hitLinkElement=this.getElementLinkAtPosition(b,a)}this.hitLinkElement&&!this.state.selectedElementIds[this.hitLinkElement.id]?c<300&&(0,F.Zb)(this.hitLinkElement)&&!(0,F.Th)(this.hitLinkElement,this.scene.getNonDeletedElementsMap(),this.state,(0,F.Ua)(b.x,b.y))?this.handleEmbeddableCenterClick(this.hitLinkElement):this.redirectToLink(a,this.device.isTouchScreen):this.state.viewModeEnabled&&this.setState({activeEmbeddable:null,selectedElementIds:{}})}),(0,K.d)(this,"maybeOpenContextMenuAfterPointerDownOnTouchDevices",a=>{"touch"===a.pointerType&&(ko=!1,kn?ko=!0:kn=window.setTimeout(()=>{kn=0,ko||this.handleCanvasContextMenu(a)},F.Z))}),(0,K.d)(this,"resetContextMenuTimer",()=>{clearTimeout(kn),kn=0,ko=!1}),(0,K.d)(this,"maybeCleanupAfterMissingPointerUp",a=>{kt?.(),this.missingPointerEventCleanupEmitter.trigger(a).clear()}),(0,K.d)(this,"handleCanvasPanUsingWheelOrSpaceDrag",a=>{if(!(ku.pointers.size<=1&&(a.button===F.A.WHEEL||a.button===F.A.MAIN&&kj||(0,F.Hc)(this.state)||this.state.viewModeEnabled)))return!1;kk=!0,this.focusContainer(),this.state.editingTextElement||a.preventDefault();let b=!1,c=/Linux/.test(window.navigator.platform);(0,F.bd)(this.interactiveCanvas,F.z.GRABBING);let{clientX:d,clientY:e}=a,f=jv(a=>{let f=d-a.clientX,g=e-a.clientY;if(d=a.clientX,e=a.clientY,c&&!b&&(Math.abs(f)>1||Math.abs(g)>1)){b=!0;let a=b=>{document.body.removeEventListener("paste",a),b.stopPropagation()},c=()=>{setTimeout(()=>{document.body.removeEventListener("paste",a),window.removeEventListener("pointerup",c)},100)};document.body.addEventListener("paste",a),window.addEventListener("pointerup",c)}this.translateCanvas({scrollX:this.state.scrollX-f/this.state.zoom.value,scrollY:this.state.scrollY-g/this.state.zoom.value})}),g=ju(kt=()=>{kt=null,kk=!1,kj||(this.state.viewModeEnabled?(0,F.bd)(this.interactiveCanvas,F.z.GRAB):(0,F.dd)(this.interactiveCanvas,this.state)),this.setState({cursorButton:"up"}),this.savePointer(a.clientX,a.clientY,"up"),window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",g),window.removeEventListener("blur",g),f.flush()});return window.addEventListener("blur",g),window.addEventListener("pointermove",f,{passive:!0}),window.addEventListener("pointerup",g),!0}),(0,K.d)(this,"clearSelectionIfNotUsingSelection",()=>{"selection"!==this.state.activeTool.type&&this.setState({selectedElementIds:(0,F.xk)({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})}),(0,K.d)(this,"handleSelectionOnPointerDown",(a,b)=>{if("selection"===this.state.activeTool.type){let c=this.scene.getNonDeletedElements(),d=this.scene.getNonDeletedElementsMap(),e=this.scene.getSelectedElements(this.state);if(1!==e.length||this.state.editingLinearElement||(0,F.ec)(e[0])||this.state.selectedLinearElement&&-1!==this.state.selectedLinearElement.hoverPointIndex)e.length>1&&(b.resize.handleType=(0,F.ak)((0,F.bj)(e),b.origin.x,b.origin.y,this.state.zoom,a.pointerType,this.device));else{let d=(0,F.$j)(c,this.state,b.origin.x,b.origin.y,this.state.zoom,a.pointerType,this.scene.getNonDeletedElementsMap(),this.device);null!=d&&("rotation"===d.transformHandleType?this.setState({resizingElement:d.element}):this.state.croppingElementId||this.setState({resizingElement:d.element}),b.resize.handleType=d.transformHandleType)}if(b.resize.handleType)b.resize.isResizing=!0,b.resize.offset=(0,F.ob)((0,F.ek)(b.resize.handleType,e,d,b.origin.x,b.origin.y)),1===e.length&&(0,F.cc)(e[0])&&2===e[0].points.length&&(b.resize.arrowDirection=(0,F.fk)(b.resize.handleType,e[0]));else{if(this.state.selectedLinearElement){let c=this.state.editingLinearElement||this.state.selectedLinearElement,d=F.pj.handlePointerDown(a,this,this.store,b.origin,c,this.scene);if(d.hitElement&&(b.hit.element=d.hitElement),d.linearElementEditor&&(this.setState({selectedLinearElement:d.linearElementEditor}),this.state.editingLinearElement&&this.setState({editingLinearElement:d.linearElementEditor})),d.didAddPoint)return!0}if(b.hit.element=b.hit.element??this.getElementAtPosition(b.origin.x,b.origin.y),this.hitLinkElement=this.getElementLinkAtPosition(b.origin,b.hit.element),this.hitLinkElement)return!0;if(this.state.croppingElementId&&b.hit.element?.id!==this.state.croppingElementId&&this.finishImageCropping(),b.hit.element&&this.getElementLinkAtPosition({x:b.origin.x,y:b.origin.y},b.hit.element))return!1;b.hit.allHitElements=this.getElementsAtPosition(b.origin.x,b.origin.y);let c=b.hit.element,d=b.hit.allHitElements.some(a=>this.isASelectedElement(a));if(null!==c&&d||a.shiftKey||b.hit.hasHitCommonBoundingBoxOfSelectedElements||this.clearSelection(c),this.state.editingLinearElement)this.setState({selectedElementIds:(0,F.xk)({[this.state.editingLinearElement.elementId]:!0},this.state)});else if(null!=c){if(a[F.hg.CTRL_OR_CMD])return this.state.selectedElementIds[c.id]||(b.hit.wasAddedToSelection=!0),this.setState(a=>({...(0,F.Oc)(a,c),previousSelectedElementIds:this.state.selectedElementIds})),!1;this.state.selectedElementIds[c.id]||(this.state.editingGroupId&&!(0,F.Pc)(c,this.state.editingGroupId)&&this.setState({selectedElementIds:(0,F.xk)({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),d||b.hit.hasHitCommonBoundingBoxOfSelectedElements||(this.setState(a=>{let b={...a.selectedElementIds,[c.id]:!0},d=[];if(Object.keys(a.selectedElementIds).forEach(a=>{let b=this.scene.getElement(a);b&&d.push(b)}),(0,F.bc)(c))(0,F.Bi)(d,c.id).forEach(a=>{delete b[a.id]});else if(c.frameId)b[c.frameId]&&delete b[c.id];else{let a=new Set(c.groupIds.flatMap(a=>(0,F.Qc)(this.scene.getNonDeletedElements(),a)).filter(a=>(0,F.bc)(a)).map(a=>a.id));a.size>0&&d.forEach(c=>{c.frameId&&a.has(c.frameId)&&(delete b[c.id],c.groupIds.flatMap(a=>(0,F.Qc)(this.scene.getNonDeletedElements(),a)).forEach(a=>{delete b[a.id]}))})}return a.openDialog?.name==="elementLinkSelector"&&(c.groupIds.some(b=>a.selectedGroupIds[b])||(b={[c.id]:!0})),{...(0,F.Jc)({editingGroupId:a.editingGroupId,selectedElementIds:b},this.scene.getNonDeletedElements(),a,this),showHyperlinkPopup:!!(c.link||(0,F.Xb)(c))&&"info"}}),b.hit.wasAddedToSelection=!0))}this.setState({previousSelectedElementIds:this.state.selectedElementIds})}}return!1}),(0,K.d)(this,"handleTextOnPointerDown",(a,b)=>{if(this.state.editingTextElement)return;let c=b.origin.x,d=b.origin.y,e=this.getElementAtPosition(c,d,{includeBoundTextElement:!0}),f=this.getTextBindableContainerAtPosition(c,d);(0,F.mc)(e)&&(f=e,c=e.x+e.width/2,d=e.y+e.height/2),this.startTextEditing({sceneX:c,sceneY:d,insertAtParentCenter:!a.altKey,container:f,autoEdit:!1}),(0,F.ad)(this.interactiveCanvas),this.state.activeTool.locked||this.setState({activeTool:(0,F.jb)(this.state,{type:"selection"})})}),(0,K.d)(this,"handleFreeDrawElementOnPointerDown",(a,b,c)=>{let[d,e]=(0,F.oj)(c.origin.x,c.origin.y,null),f=this.getTopLayerFrameAtSceneCoords({x:d,y:e}),g=.5===a.pressure,h=(0,F.Zf)({type:b,x:d,y:e,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:null,simulatePressure:g,locked:!1,frameId:f?f.id:null,points:[(0,F.Ua)(0,0)],pressures:g?[]:[a.pressure]});this.scene.insertElement(h),this.setState(a=>{let b={...a.selectedElementIds};return delete b[h.id],{selectedElementIds:(0,F.xk)(b,a)}});let i=(0,F.Og)(c.origin,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),this.state.zoom);this.setState({newElement:h,startBoundElement:i,suggestedBindings:[]})}),(0,K.d)(this,"insertIframeElement",({sceneX:a,sceneY:b,width:c,height:d})=>{let[e,f]=(0,F.oj)(a,b,this.lastPointerDownEvent?.[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=(0,F.Uf)({type:"iframe",x:e,y:f,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("iframe"),opacity:this.state.currentItemOpacity,locked:!1,width:c,height:d});return this.scene.insertElement(g),g}),(0,K.d)(this,"insertEmbeddableElement",({sceneX:a,sceneY:b,link:c})=>{let[d,e]=(0,F.oj)(a,b,this.lastPointerDownEvent?.[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),f=(0,F.Zg)(c);if(!f)return;f.error instanceof URIError&&this.setToast({message:c8("toast.unrecognizedLinkFormat"),closable:!0});let g=(0,F.Tf)({type:"embeddable",x:d,y:e,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("embeddable"),opacity:this.state.currentItemOpacity,locked:!1,width:f.intrinsicSize.w,height:f.intrinsicSize.h,link:c});return this.scene.insertElement(g),g}),(0,K.d)(this,"createImageElement",({sceneX:a,sceneY:b,addToFrameUnderCursor:c=!0})=>{let[d,e]=(0,F.oj)(a,b,this.lastPointerDownEvent?.[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),f=c?this.getTopLayerFrameAtSceneCoords({x:d,y:e}):null;return(0,F.ag)({type:"image",x:d,y:e,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:null,opacity:this.state.currentItemOpacity,locked:!1,frameId:f?f.id:null})}),(0,K.d)(this,"handleLinearElementOnPointerDown",(a,b,c)=>{if(this.state.multiElement){let{multiElement:a}=this.state;if("line"===a.type&&(0,F.xg)(a.points,this.state.zoom.value)||(0,F.ec)(a)&&a.points.length>1){(0,F.Pj)(a,{lastCommittedPoint:a.points[a.points.length-1]}),this.actionManager.executeAction(eC);return}let{x:b,y:d,lastCommittedPoint:e}=a;if(a.points.length>1&&e&&(0,F.Wa)((0,F.Ua)(c.origin.x-b,c.origin.y-d),e)<F.u)return void this.actionManager.executeAction(eC);this.setState(b=>({selectedElementIds:(0,F.xk)({...b.selectedElementIds,[a.id]:!0},b)})),(0,F.Pj)(a,{lastCommittedPoint:a.points[a.points.length-1]}),(0,F.bd)(this.interactiveCanvas,F.z.POINTER)}else{let[d,e]=(0,F.oj)(c.origin.x,c.origin.y,a[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),f=this.getTopLayerFrameAtSceneCoords({x:d,y:e}),{currentItemStartArrowhead:g,currentItemEndArrowhead:h}=this.state,[i,j]="arrow"===b?[g,h]:[null,null],k="arrow"===b?(0,F.$f)({type:b,x:d,y:e,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.state.currentItemArrowType===F.Fa.round?{type:F.ua.PROPORTIONAL_RADIUS}:null,startArrowhead:i,endArrowhead:j,locked:!1,frameId:f?f.id:null,elbowed:this.state.currentItemArrowType===F.Fa.elbow,fixedSegments:this.state.currentItemArrowType===F.Fa.elbow?[]:null}):(0,F._f)({type:b,x:d,y:e,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:"round"===this.state.currentItemRoundness?{type:F.ua.PROPORTIONAL_RADIUS}:null,locked:!1,frameId:f?f.id:null});this.setState(a=>{let b={...a.selectedElementIds};return delete b[k.id],{selectedElementIds:(0,F.xk)(b,a)}}),(0,F.Pj)(k,{points:[...k.points,(0,F.Ua)(0,0)]});let l=(0,F.Og)(c.origin,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),this.state.zoom,(0,F.ec)(k),(0,F.ec)(k));this.scene.insertElement(k),this.setState({newElement:k,startBoundElement:l,suggestedBindings:[]})}}),(0,K.d)(this,"createGenericElementOnPointerDown",(a,b)=>{let[c,d]=(0,F.oj)(b.origin.x,b.origin.y,this.lastPointerDownEvent?.[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),e=this.getTopLayerFrameAtSceneCoords({x:c,y:d}),f={x:c,y:d,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.getCurrentItemRoundness(a),locked:!1,frameId:e?e.id:null},g;"selection"===(g="embeddable"===a?(0,F.Tf)({type:"embeddable",...f}):(0,F.Sf)({type:a,...f})).type?this.setState({selectionElement:g}):(this.scene.insertElement(g),this.setState({multiElement:null,newElement:g}))}),(0,K.d)(this,"createFrameElementOnPointerDown",(a,b)=>{let[c,d]=(0,F.oj)(a.origin.x,a.origin.y,this.lastPointerDownEvent?.[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),e={x:c,y:d,opacity:this.state.currentItemOpacity,locked:!1,...F.H},f=b===F.Aa.magicframe?(0,F.Wf)(e):(0,F.Vf)(e);this.scene.insertElement(f),this.setState({multiElement:null,newElement:f})}),(0,K.d)(this,"restoreReadyToEraseElements",()=>{this.elementsPendingErasure=new Set,this.triggerRender()}),(0,K.d)(this,"eraseElements",()=>{let a=!1,b=this.scene.getElementsIncludingDeleted().map(b=>this.elementsPendingErasure.has(b.id)||b.frameId&&this.elementsPendingErasure.has(b.frameId)||(0,F.nc)(b)&&this.elementsPendingErasure.has(b.containerId)?(a=!0,(0,F.Qj)(b,{isDeleted:!0})):b);this.elementsPendingErasure=new Set,a&&(this.store.shouldCaptureIncrement(),this.scene.replaceAllElements(b))}),(0,K.d)(this,"initializeImage",async({imageFile:a,imageElement:b,showCursorImagePreview:c=!1})=>{if(!(0,F.th)(a))throw Error(c8("errors.unsupportedFileType"));let d=a.type;if((0,F.bd)(this.interactiveCanvas,"wait"),d===F.T.svg)try{a=(0,F.Fh)((0,F.Rh)(await a.text()),a.name)}catch(a){throw console.warn(a),Error(c8("errors.svgImageInsertError"))}let e=await (this.props.generateIdForFile?.(a)||(0,F.zh)(a));if(!e)throw console.warn("Couldn't generate file id or the supplied `generateIdForFile` didn't resolve to one."),Error(c8("errors.imageInsertError"));if(!this.files[e]?.dataURL){try{a=await (0,F.Eh)(a,{maxWidthOrHeight:F.na})}catch(a){console.error("Error trying to resizing image file on insertion",a)}if(a.size>F.oa)throw Error(c8("errors.fileTooBig",{maxSize:`${Math.trunc(F.oa/1024/1024)}MB`}))}if(c){let b=this.files[e]?.dataURL,c=b&&(0,F.Ch)(b);this.setImagePreviewCursor(c||a)}let f=this.files[e]?.dataURL||await (0,F.Ah)(a),g=(0,F.Pj)(b,{fileId:e},!1);return new Promise(async(a,b)=>{try{this.addMissingFiles([{mimeType:d,id:e,dataURL:f,created:Date.now(),lastRetrieved:Date.now()}]);let b=this.imageCache.get(e);b||(this.addNewImagesToImageCache(),await this.updateImageCache([g])),b?.image instanceof Promise&&await b.image,this.state.pendingImageElementId!==g.id&&this.state.newElement?.id!==g.id&&this.initializeImageDimensions(g,!0),a(g)}catch(a){console.error(a),b(Error(c8("errors.imageInsertError")))}finally{c||(0,F.ad)(this.interactiveCanvas)}})}),(0,K.d)(this,"insertImageElement",async(a,b,c)=>{if(!this.isToolSupported("image"))return void this.setState({errorMessage:c8("errors.imageToolNotSupported")});this.scene.insertElement(a);try{return await this.initializeImage({imageFile:b,imageElement:a,showCursorImagePreview:c})}catch(b){return(0,F.Pj)(a,{isDeleted:!0}),this.actionManager.executeAction(eC),this.setState({errorMessage:b.message||c8("errors.imageInsertError")}),null}}),(0,K.d)(this,"setImagePreviewCursor",async a=>{let b;try{b=await (0,F.Eh)(a,{maxWidthOrHeight:96})}catch(a){throw"UNSUPPORTED"===a.cause?Error(c8("errors.unsupportedFileType")):a}let c=await (0,F.Ah)(b);if(a.type===F.T.svg){let a=await (0,F.Oh)(c),b=Math.min(a.height,96),d=b*(a.width/a.height);d>96&&(b=(d=96)*(a.height/a.width));let e=document.createElement("canvas");e.height=b,e.width=d,e.getContext("2d").drawImage(a,0,0,d,b),c=e.toDataURL(F.T.svg)}this.state.pendingImageElementId&&(0,F.bd)(this.interactiveCanvas,`url(${c}) 4 4, auto`)}),(0,K.d)(this,"onImageAction",async({insertOnCanvasDirectly:a})=>{try{let b=this.state.width/2+this.state.offsetLeft,c=this.state.height/2+this.state.offsetTop,{x:d,y:e}=(0,F.lb)({clientX:b,clientY:c},this.state),f=await (0,F.fh)({description:"Image",extensions:Object.keys(F.S)}),g=this.createImageElement({sceneX:d,sceneY:e,addToFrameUnderCursor:!1});a?(this.insertImageElement(g,f),this.initializeImageDimensions(g),this.setState({selectedElementIds:(0,F.xk)({[g.id]:!0},this.state)},()=>{this.actionManager.executeAction(eC)})):this.setState({pendingImageElementId:g.id},()=>{this.insertImageElement(g,f,!0)})}catch(a){"AbortError"!==a.name?console.error(a):console.warn(a),this.setState({pendingImageElementId:null,newElement:null,activeTool:(0,F.jb)(this.state,{type:"selection"})},()=>{this.actionManager.executeAction(eC)})}}),(0,K.d)(this,"initializeImageDimensions",(a,b=!1)=>{let c=(0,F.Vb)(a)&&this.imageCache.get(a.fileId)?.image;if(!c||c instanceof Promise){if(a.width<F.t/this.state.zoom.value&&a.height<F.t/this.state.zoom.value){let b=100/this.state.zoom.value;(0,F.Pj)(a,{x:a.x-b/2,y:a.y-b/2,width:b,height:b})}return}if(b||a.width<F.t/this.state.zoom.value&&a.height<F.t/this.state.zoom.value){let b=Math.min(Math.max(this.state.height-120,160),Math.floor(.5*this.state.height)/this.state.zoom.value),d=Math.min(c.naturalHeight,b),e=d*(c.naturalWidth/c.naturalHeight),f=a.x+a.width/2-e/2,g=a.y+a.height/2-d/2;(0,F.Pj)(a,{x:f,y:g,width:e,height:d,crop:null})}}),(0,K.d)(this,"updateImageCache",async(a,b=this.files)=>{let{updatedFiles:c,erroredFiles:d}=await (0,F.Ph)({imageCache:this.imageCache,fileIds:a.map(a=>a.fileId),files:b});if(c.size||d.size)for(let b of a)c.has(b.fileId)&&F.ed.delete(b);return d.size&&this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map(a=>(0,F.Vb)(a)&&d.has(a.fileId)?(0,F.Qj)(a,{status:"error"}):a)),{updatedFiles:c,erroredFiles:d}}),(0,K.d)(this,"addNewImagesToImageCache",async(a=(0,F.Qh)(this.scene.getNonDeletedElements()),b=this.files)=>{let c=a.filter(a=>!a.isDeleted&&!this.imageCache.has(a.fileId));if(c.length){let{updatedFiles:a}=await this.updateImageCache(c,b);a.size&&this.scene.triggerUpdate()}}),(0,K.d)(this,"scheduleImageRefresh",(0,bO.default)(()=>{this.addNewImagesToImageCache()},F.X)),(0,K.d)(this,"updateBindingEnabledOnPointerMove",a=>{let b=(0,F.Eg)(a);this.state.isBindingEnabled!==b&&this.setState({isBindingEnabled:b})}),(0,K.d)(this,"maybeSuggestBindingAtCursor",(a,b)=>{let c=(0,F.Og)(a,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),this.state.zoom,!1,b);this.setState({suggestedBindings:null!=c?[c]:[]})}),(0,K.d)(this,"maybeSuggestBindingsForLinearElementAtCoords",(a,b,c)=>{if(!b.length)return;let d=b.reduce((b,d)=>{let e=(0,F.Og)(d,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),this.state.zoom,(0,F.ec)(a),(0,F.ec)(a));return null==e||(0,F.Ng)(a,c?.id,e)||b.push(e),b},[]);this.setState({suggestedBindings:d})}),(0,K.d)(this,"handleInteractiveCanvasRef",a=>{null!==a?(this.interactiveCanvas=a,this.interactiveCanvas.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.interactiveCanvas.addEventListener("touchend",this.onTouchEnd)):(this.interactiveCanvas?.removeEventListener("touchstart",this.onTouchStart),this.interactiveCanvas?.removeEventListener("touchend",this.onTouchEnd))}),(0,K.d)(this,"handleAppOnDrop",async a=>{let{file:b,fileHandle:c}=await (0,F.Hh)(a),{x:d,y:e}=(0,F.lb)(a,this.state);try{if((0,F.th)(b)&&this.isToolSupported("image")){if(b?.type===F.T.png||b?.type===F.T.svg)try{let a=await (0,F.vh)(b,this.state,this.scene.getElementsIncludingDeleted(),c);this.syncActionResult({...a,appState:{...a.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:F.Wg.IMMEDIATELY});return}catch(a){if("EncodingError"!==a.name)throw Error(c8("alerts.couldNotLoadInvalidFile"))}let a=this.createImageElement({sceneX:d,sceneY:e});this.insertImageElement(a,b),this.initializeImageDimensions(a),this.setState({selectedElementIds:(0,F.xk)({[a.id]:!0},this.state)});return}}catch(a){return this.setState({isLoading:!1,errorMessage:a.message})}let f=a.dataTransfer.getData(F.T.excalidrawlib);if(f&&"string"==typeof f){try{let b=(0,F.wh)(f);this.addElementsFromPasteOrLibrary({elements:fK(b),position:a,files:null})}catch(a){this.setState({errorMessage:a.message})}return}if(b&&await this.loadFileToCanvas(b,c),a.dataTransfer?.types?.includes("text/plain")){let b=a.dataTransfer?.getData("text");if(b&&(0,F.$g)(b,this.props.validateEmbeddable)&&(/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(b)||(0,F.Zg)(b)?.type==="video")){let a=this.insertEmbeddableElement({sceneX:d,sceneY:e,link:(0,F.Xc)(b)});a&&this.setState({selectedElementIds:{[a.id]:!0}})}}}),(0,K.d)(this,"loadFileToCanvas",async(a,b)=>{a=await (0,F.Ih)(a);try{let c=this.scene.getElementsIncludingDeleted(),d;try{d=await (0,F.uh)(a,this.state,c,b)}catch(c){let a=c instanceof F.uc;if(a&&"IMAGE_NOT_CONTAINS_SCENE_DATA"===c.code&&!this.isToolSupported("image"))return void this.setState({isLoading:!1,errorMessage:c8("errors.imageToolNotSupported")});let b=a?c8("alerts.cannotRestoreFromImage"):c8("alerts.couldNotLoadInvalidFile");this.setState({isLoading:!1,errorMessage:b})}if(!d)return;d.type===F.T.excalidraw?((0,F.Nj)(c.concat(d.data.elements)),this.store.updateSnapshot((0,F.xb)(c),this.state),this.setState({isLoading:!0}),this.syncActionResult({...d.data,appState:{...d.data.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:F.Wg.IMMEDIATELY})):d.type===F.T.excalidrawlib&&await this.library.updateLibrary({libraryItems:a,merge:!0,openLibraryMenu:!0}).catch(a=>{console.error(a),this.setState({errorMessage:c8("errors.importLibraryError")})})}catch(a){this.setState({isLoading:!1,errorMessage:a.message})}}),(0,K.d)(this,"handleCanvasContextMenu",a=>{if(a.preventDefault(),("pointerType"in a.nativeEvent&&"touch"===a.nativeEvent.pointerType||"pointerType"in a.nativeEvent&&"pen"===a.nativeEvent.pointerType&&a.button!==F.A.SECONDARY)&&"selection"!==this.state.activeTool.type)return;let{x:b,y:c}=(0,F.lb)(a,this.state),d=this.getElementAtPosition(b,c,{preferSelected:!0,includeLockedElements:!0}),e=this.scene.getSelectedElements(this.state),f=this.isHittingCommonBoundingBoxOfSelectedElements({x:b,y:c},e),g=d||f?"element":"canvas",{top:h,left:i}=this.excalidrawContainerRef.current.getBoundingClientRect(),j=a.clientX-i,k=a.clientY-h;dw("contextMenu","openContextMenu",g),this.setState({...d&&!this.state.selectedElementIds[d.id]?{...this.state,...(0,F.Jc)({editingGroupId:this.state.editingGroupId,selectedElementIds:{[d.id]:!0}},this.scene.getNonDeletedElements(),this.state,this),selectedLinearElement:(0,F.cc)(d)?new F.pj(d):null}:this.state,showHyperlinkPopup:!1},()=>{this.setState({contextMenu:{top:k,left:j,items:this.getContextMenuItems(g)}})})}),(0,K.d)(this,"maybeDragNewGenericElement",(a,b,c=!0)=>{let d=this.state.selectionElement,e=a.lastCoords;if(d&&"eraser"!==this.state.activeTool.type)return void(0,F.kk)({newElement:d,elementType:this.state.activeTool.type,originX:a.origin.x,originY:a.origin.y,x:e.x,y:e.y,width:(0,F.ib)(a.origin.x,e.x),height:(0,F.ib)(a.origin.y,e.y),shouldMaintainAspectRatio:(0,F.lg)(b),shouldResizeFromCenter:(0,F.kg)(b),zoom:this.state.zoom.value,informMutation:c});let f=this.state.newElement;if(!f)return;let[g,h]=(0,F.oj)(e.x,e.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),i=(0,F.Vb)(f)&&this.imageCache.get(f.fileId)?.image,j=!i||i instanceof Promise?null:i.width/i.height;this.maybeCacheReferenceSnapPoints(b,[f]);let{snapOffset:k,snapLines:l}=(0,F.lj)(f,this,b,{x:a.originInGrid.x+(this.state.originSnapOffset?.x??0),y:a.originInGrid.y+(this.state.originSnapOffset?.y??0)},{x:g-a.originInGrid.x,y:h-a.originInGrid.y},this.scene.getNonDeletedElementsMap());g+=k.x,h+=k.y,this.setState({snapLines:l}),(0,F.kk)({newElement:f,elementType:this.state.activeTool.type,originX:a.originInGrid.x,originY:a.originInGrid.y,x:g,y:h,width:(0,F.ib)(a.originInGrid.x,g),height:(0,F.ib)(a.originInGrid.y,h),shouldMaintainAspectRatio:(0,F.Wb)(f)?!(0,F.lg)(b):(0,F.lg)(b),shouldResizeFromCenter:(0,F.kg)(b),zoom:this.state.zoom.value,widthAspectRatio:j,originOffset:this.state.originSnapOffset,informMutation:c}),this.setState({newElement:f}),(this.state.activeTool.type===F.Aa.frame||this.state.activeTool.type===F.Aa.magicframe)&&this.setState({elementsToHighlight:(0,F.Ei)(this.scene.getNonDeletedElements(),f,this.state,this.scene.getNonDeletedElementsMap())})}),(0,K.d)(this,"maybeHandleCrop",(a,b)=>{if(!this.state.croppingElementId)return!1;let c=a.resize.handleType,d=a.lastCoords,[e,f]=(0,F.oj)(d.x-a.resize.offset.x,d.y-a.resize.offset.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(c&&g&&(0,F.Wb)(g)){let h=a.originalElements.get(g.id),i=(0,F.Vb)(g)&&this.imageCache.get(g.fileId)?.image;if(h&&(0,F.Wb)(h)&&i&&!(i instanceof Promise)){let[j,k]=(0,F.oj)(d.x,d.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),l={x:j-a.originInGrid.x,y:k-a.originInGrid.y};this.maybeCacheReferenceSnapPoints(b,[g]);let{snapOffset:m,snapLines:n}=(0,F.kj)([g],[h],this,b,l,c);(0,F.Pj)(g,(0,F.bh)(g,c,i.naturalWidth,i.naturalHeight,e+m.x,f+m.y,b.shiftKey?h.width/h.height:void 0)),(0,F.Pg)(g,this.scene.getNonDeletedElementsMap(),{newSize:{width:g.width,height:g.height}}),this.setState({isCropping:c&&"rotation"!==c,snapLines:n})}return!0}return!1}),(0,K.d)(this,"maybeHandleResize",(a,b)=>{let c=this.scene.getSelectedElements(this.state),d=c.filter(a=>(0,F.bc)(a)),e=a.resize.handleType;if(d.length>0&&"rotation"===e||1===c.length&&(0,F.ec)(c[0])||this.state.croppingElementId)return!1;this.setState({isResizing:e&&"rotation"!==e,isRotating:"rotation"===e,activeEmbeddable:null});let f=a.lastCoords,[g,h]=(0,F.oj)(f.x-a.resize.offset.x,f.y-a.resize.offset.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),i=new Map;if(d.forEach(a=>{(0,F.Bi)(this.scene.getNonDeletedElements(),a.id).forEach(b=>{i.set(a.id+b.id,{x:b.x-a.x,y:b.y-a.y})})}),!this.state.selectedElementsAreBeingDragged){let[d,i]=(0,F.oj)(f.x,f.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),j={x:d-a.originInGrid.x,y:i-a.originInGrid.y},k=[...a.originalElements.values()];this.maybeCacheReferenceSnapPoints(b,c);let{snapOffset:l,snapLines:m}=(0,F.kj)(c,(0,F.vk)(k,this.state),this,b,j,e);g+=l.x,h+=l.y,this.setState({snapLines:m})}if((0,F.ck)(a.originalElements,e,c,this.scene.getElementsMapIncludingDeleted(),this.scene,(0,F.mg)(b),(0,F.kg)(b),c.some(a=>(0,F.Wb)(a))?!(0,F.lg)(b):(0,F.lg)(b),g,h,a.resize.center.x,a.resize.center.y)){let a=(0,F.Kg)(c,this.scene.getNonDeletedElementsMap(),this.state.zoom),b=new Set;return d.forEach(a=>{(0,F.Ei)(this.scene.getNonDeletedElements(),a,this.state,this.scene.getNonDeletedElementsMap()).forEach(a=>b.add(a))}),this.setState({elementsToHighlight:[...b],suggestedBindings:a}),!0}return!1}),(0,K.d)(this,"getContextMenuItems",a=>{let b=[];return b.push(fd,fc),"canvas"===a?this.state.viewModeEnabled?[...b,ff,fg,jk,fi]:[fa,g3,fd,fc,fe,g3,dt,fz,g3,ff,fh,fg,jk,fi]:(b.push(fe),this.state.viewModeEnabled?[e9,...b]:[g3,fb,e9,fa,g3,jm,jn,jo,g3,gT,g3,...b,g3,eT,eU,g3,eX,jY,fj,fk,fn,eY,g3,e0,g3,dp,dq,dr,ds,g3,e5,e6,g3,gR,g3,fw,gG,g3,du,fy,g3,dg])}),(0,K.d)(this,"handleWheel",ju(a=>{if(!(a.target instanceof HTMLCanvasElement||a.target instanceof HTMLTextAreaElement||a.target instanceof HTMLIFrameElement)){a[F.hg.CTRL_OR_CMD]&&a.preventDefault();return}if(a.preventDefault(),kk)return;let{deltaX:b,deltaY:c}=a;if(a.metaKey||a.ctrlKey){let a=Math.sign(c),b=100*F.$,d=Math.abs(c),e=c;d>b&&(e=b*a);let f=this.state.zoom.value-e/100;f+=-(Math.log10(Math.max(1,this.state.zoom.value))*a)*Math.min(1,d/20),this.translateCanvas(a=>({...er({viewportX:this.lastViewportPosition.x,viewportY:this.lastViewportPosition.y,nextZoom:(0,F.Ak)(f)},a),shouldCacheIgnoreZoom:!0})),this.resetShouldCacheIgnoreZoomDebounced();return}a.shiftKey?this.translateCanvas(({zoom:a,scrollX:d})=>({scrollX:d-(c||b)/a.value})):this.translateCanvas(({zoom:a,scrollX:d,scrollY:e})=>({scrollX:d-b/a.value,scrollY:e-c/a.value}))})),(0,K.d)(this,"savePointer",(a,b,c)=>{if(!a||!b)return;let{x:d,y:e}=(0,F.lb)({clientX:a,clientY:b},this.state);isNaN(d)||isNaN(e);let f={x:d,y:e,tool:"laser"===this.state.activeTool.type?"laser":"pointer"};this.props.onPointerUpdate?.({pointer:f,button:c,pointersMap:ku.pointers})}),(0,K.d)(this,"resetShouldCacheIgnoreZoomDebounced",(0,F.db)(()=>{this.unmounted||this.setState({shouldCacheIgnoreZoom:!1})},300)),(0,K.d)(this,"updateDOMRect",a=>{if(this.excalidrawContainerRef?.current){let{width:b,height:c,left:d,top:e}=this.excalidrawContainerRef.current.getBoundingClientRect(),{width:f,height:g,offsetTop:h,offsetLeft:i}=this.state;if(b===f&&c===g&&d===i&&e===h){a&&a();return}this.setState({width:b,height:c,offsetLeft:d,offsetTop:e},()=>{a&&a()})}}),(0,K.d)(this,"refresh",()=>{this.setState({...this.getCanvasOffsets()})});let d=(0,F.Fc)(),{excalidrawAPI:f,viewModeEnabled:g=!1,zenModeEnabled:h=!1,gridModeEnabled:i=!1,objectsSnapModeEnabled:j=!1,theme:k=d.theme,name:l=`${c8("labels.untitled")}-${(0,F.Xa)()}`}=c;if(this.state={...d,theme:k,isLoading:!0,...this.getCanvasOffsets(),viewModeEnabled:g,zenModeEnabled:h,objectsSnapModeEnabled:j,gridModeEnabled:i??d.gridModeEnabled,name:l,width:window.innerWidth,height:window.innerHeight},this.id=(0,ay.nanoid)(),this.library=new fJ(this),this.actionManager=new g$(this.syncActionResult,()=>this.state,()=>this.scene.getElementsIncludingDeleted(),this),this.scene=new F.Oj,this.canvas=document.createElement("canvas"),this.rc=ax.default.canvas(this.canvas),this.renderer=new jQ(this.scene),this.visibleElements=[],this.store=new F.Xg,this.history=new gV,f){let a={updateScene:this.updateScene,updateLibrary:this.library.updateLibrary,addFiles:this.addFiles,resetScene:this.resetScene,getSceneElementsIncludingDeleted:this.getSceneElementsIncludingDeleted,history:{clear:this.resetHistory},scrollToContent:this.scrollToContent,getSceneElements:this.getSceneElements,getAppState:()=>this.state,getFiles:()=>this.files,getName:this.getName,registerAction:a=>{this.actionManager.registerAction(a)},refresh:this.refresh,setToast:this.setToast,id:this.id,setActiveTool:this.setActiveTool,setCursor:this.setCursor,resetCursor:this.resetCursor,updateFrameRendering:this.updateFrameRendering,toggleSidebar:this.toggleSidebar,onChange:a=>this.onChangeEmitter.on(a),onPointerDown:a=>this.onPointerDownEmitter.on(a),onPointerUp:a=>this.onPointerUpEmitter.on(a),onScrollChange:a=>this.onScrollChangeEmitter.on(a),onUserFollow:a=>this.onUserFollowEmitter.on(a)};"function"==typeof f?f(a):console.error("excalidrawAPI should be a function!")}this.excalidrawContainerValue={container:this.excalidrawContainerRef.current,id:this.id},this.fonts=new F.Qf(this.scene),this.history=new gV,this.actionManager.registerAll(F._c),this.actionManager.registerAction(((a,b)=>({name:"undo",label:"buttons.undo",icon:F.Rd,trackEvent:{category:"history"},viewMode:!1,perform:(c,d,e,f)=>gY(f,d,()=>a.undo((0,F.xb)(c),d,b.snapshot)),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&(0,F.ig)(a,F.hg.Z)&&!a.shiftKey,PanelComponent:({updateData:b,data:c})=>{let{isUndoStackEmpty:d}=gX(a.onHistoryChangedEmitter,new gU(a.isUndoStackEmpty,a.isRedoStackEmpty));return(0,e.jsx)(de,{type:"button",icon:F.Rd,"aria-label":c8("buttons.undo"),onClick:b,size:c?.size||"medium",disabled:d,"data-testid":"button-undo"})}}))(this.history,this.store)),this.actionManager.registerAction(((a,b)=>({name:"redo",label:"buttons.redo",icon:F.Sd,trackEvent:{category:"history"},viewMode:!1,perform:(c,d,e,f)=>gY(f,d,()=>a.redo((0,F.xb)(c),d,b.snapshot)),keyTest:a=>a[F.hg.CTRL_OR_CMD]&&a.shiftKey&&(0,F.ig)(a,F.hg.Z)||F.m&&a.ctrlKey&&!a.shiftKey&&(0,F.ig)(a,F.hg.Y),PanelComponent:({updateData:b,data:c})=>{let{isRedoStackEmpty:d}=gX(a.onHistoryChangedEmitter,new gU(a.isUndoStackEmpty,a.isRedoStackEmpty));return(0,e.jsx)(de,{type:"button",icon:F.Sd,"aria-label":c8("buttons.redo"),onClick:b,size:c?.size||"medium",disabled:d,"data-testid":"button-redo"})}}))(this.history,this.store))}onWindowMessage(a){if("https://player.vimeo.com"!==a.origin&&"https://www.youtube.com"!==a.origin)return;let b=null;try{b=JSON.parse(a.data)}catch{}if(b)switch(a.origin){case"https://player.vimeo.com":if("paused"===b.method){let c=null,d=document.body.querySelectorAll("iframe.excalidraw__embeddable");if(!d)break;for(let b of d)b.contentWindow===a.source&&(c=b.contentWindow);c?.postMessage(JSON.stringify({method:b.value?"play":"pause",value:!0}),"*")}break;case"https://www.youtube.com":if("infoDelivery"===b.event&&b.info&&b.id&&"number"==typeof b.info.playerState){let a=b.id,c=b.info.playerState;Object.values(F.C).includes(c)&&kp.set(a,c)}}}cacheEmbeddableRef(a,b){b&&this.iFrameRefs.set(a.id,b)}getHTMLIFrameElement(a){return this.iFrameRefs.get(a.id)}handleEmbeddableCenterClick(a){if(this.state.activeEmbeddable?.element===a&&this.state.activeEmbeddable?.state==="active"||(setTimeout(()=>{this.setState({activeEmbeddable:{element:a,state:"active"},selectedElementIds:{[a.id]:!0},newElement:null,selectionElement:null})},100),(0,F.Yb)(a)))return;let b=this.getHTMLIFrameElement(a);if(b?.contentWindow){if(b.src.includes("youtube")){let c=kp.get(a.id);switch(c||(kp.set(a.id,F.C.UNSTARTED),b.contentWindow.postMessage(JSON.stringify({event:"listening",id:a.id}),"*")),c){case F.C.PLAYING:case F.C.BUFFERING:b.contentWindow?.postMessage(JSON.stringify({event:"command",func:"pauseVideo",args:""}),"*");break;default:b.contentWindow?.postMessage(JSON.stringify({event:"command",func:"playVideo",args:""}),"*")}}b.src.includes("player.vimeo.com")&&b.contentWindow.postMessage(JSON.stringify({method:"paused"}),"*")}}isIframeLikeElementCenter(a,b,c,d){return a&&!b.altKey&&!b.shiftKey&&!b.metaKey&&!b.ctrlKey&&(this.state.activeEmbeddable?.element!==a||this.state.activeEmbeddable?.state==="hover"||!this.state.activeEmbeddable)&&c>=a.x+a.width/3&&c<=a.x+2*a.width/3&&d>=a.y+a.height/3&&d<=a.y+2*a.height/3}renderEmbeddables(){let a=this.state.zoom.value,b=this.state.width,c=this.state.height,d=this.scene.getNonDeletedElements().filter(a=>(0,F.Xb)(a)&&!0===this.embedsValidationStatus.get(a.id)||(0,F.Yb)(a));return(0,e.jsx)(e.Fragment,{children:d.map(d=>{let f,{x:g,y:h}=(0,F.mb)({sceneX:d.x,sceneY:d.y},this.state),i=(0,F.Tj)(d,b,c,this.state,this.scene.getNonDeletedElementsMap()),j=this.initializedEmbeds.has(d.id);if(i&&!j&&this.initializedEmbeds.add(d.id),!(i||j))return null;if((0,F.Yb)(d)){f=null;let a=(d.customData?.generationData??this.magicGenerations.get(d.id))||{status:"error",message:"No generation data",code:"ERR_NO_GENERATION_DATA"};if("done"===a.status){let b=a.html;f={intrinsicSize:{w:d.width,h:d.height},type:"document",srcdoc:()=>b}}else if("pending"===a.status)f={intrinsicSize:{w:d.width,h:d.height},type:"document",srcdoc:()=>(0,F.Yg)(`
14
- <style>
15
- html, body {
16
- width: 100%;
17
- height: 100%;
18
- color: ${this.state.theme===F.G.DARK?"white":"black"};
19
- }
20
- body {
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- flex-direction: column;
25
- gap: 1rem;
26
- }
27
-
28
- .Spinner {
29
- display: flex;
30
- align-items: center;
31
- justify-content: center;
32
- margin-left: auto;
33
- margin-right: auto;
34
- }
35
-
36
- .Spinner svg {
37
- animation: rotate 1.6s linear infinite;
38
- transform-origin: center center;
39
- width: 40px;
40
- height: 40px;
41
- }
42
-
43
- .Spinner circle {
44
- stroke: currentColor;
45
- animation: dash 1.6s linear 0s infinite;
46
- stroke-linecap: round;
47
- }
48
-
49
- @keyframes rotate {
50
- 100% {
51
- transform: rotate(360deg);
52
- }
53
- }
54
-
55
- @keyframes dash {
56
- 0% {
57
- stroke-dasharray: 1, 300;
58
- stroke-dashoffset: 0;
59
- }
60
- 50% {
61
- stroke-dasharray: 150, 300;
62
- stroke-dashoffset: -200;
63
- }
64
- 100% {
65
- stroke-dasharray: 1, 300;
66
- stroke-dashoffset: -280;
67
- }
68
- }
69
- </style>
70
- <div class="Spinner">
71
- <svg
72
- viewBox="0 0 100 100"
73
- >
74
- <circle
75
- cx="50"
76
- cy="50"
77
- r="46"
78
- stroke-width="8"
79
- fill="none"
80
- stroke-miter-limit="10"
81
- />
82
- </svg>
83
- </div>
84
- <div>Generating...</div>
85
- `)};else{let b;b="ERR_GENERATION_INTERRUPTED"===a.code?"Generation was interrupted...":a.message||"Generation failed",f={intrinsicSize:{w:d.width,h:d.height},type:"document",srcdoc:()=>(0,F.Yg)(`
86
- <style>
87
- html, body {
88
- height: 100%;
89
- }
90
- body {
91
- display: flex;
92
- flex-direction: column;
93
- align-items: center;
94
- justify-content: center;
95
- color: ${F.e.red[3]};
96
- }
97
- h1, h3 {
98
- margin-top: 0;
99
- margin-bottom: 0.5rem;
100
- }
101
- </style>
102
- <h1>Error!</h1>
103
- <h3>${b}</h3>
104
- `)}}}else f=(0,F.Zg)((0,F.Zc)(d.link||""));let k=this.state.activeEmbeddable?.element===d&&this.state.activeEmbeddable?.state==="active",l=this.state.activeEmbeddable?.element===d&&this.state.activeEmbeddable?.state==="hover";return(0,e.jsx)("div",{className:(0,av.default)("excalidraw__embeddable-container",{"is-hovered":l}),style:{transform:i?`translate(${g-this.state.offsetLeft}px, ${h-this.state.offsetTop}px) scale(${a})`:"none",display:i?"block":"none",opacity:(0,F.Ri)(d,(0,F.Gi)(d,this.scene.getNonDeletedElementsMap()),this.elementsPendingErasure,null,this.state.openDialog?.name==="elementLinkSelector"?F.Ga:1),"--embeddable-radius":`${(0,F.wg)(Math.min(d.width,d.height),d)}px`},children:(0,e.jsxs)("div",{className:"excalidraw__embeddable-container__inner",style:{width:i?`${d.width}px`:0,height:i?`${d.height}px`:0,transform:i?`rotate(${d.angle}rad)`:"none",pointerEvents:k?F.B.enabled:F.B.disabled},children:[l&&(0,e.jsx)("div",{className:"excalidraw__embeddable-hint",children:c8("buttons.embeddableInteractionButton")}),(0,e.jsx)("div",{className:"excalidraw__embeddable__outer",style:{padding:`${d.strokeWidth}px`},children:((0,F.Xb)(d)?this.props.renderEmbeddable?.(d,this.state):null)??(0,e.jsx)("iframe",{ref:a=>this.cacheEmbeddableRef(d,a),className:"excalidraw__embeddable",srcDoc:f?.type==="document"?f.srcdoc(this.state.theme):void 0,src:f?.type!=="document"?f?.link??"":void 0,scrolling:"no",referrerPolicy:"no-referrer-when-downgrade",title:"Excalidraw Embedded Content",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,sandbox:`${f?.sandbox?.allowSameOrigin?"allow-same-origin":""} allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-downloads`})})]})},d.id)})})}toggleOverscrollBehavior(a){document.documentElement.style.overscrollBehaviorX="pointerenter"===a.type?"none":"auto"}render(){let a=this.scene.getSelectedElements(this.state),{renderTopRightUI:b,renderCustomStats:c}=this.props,d=this.scene.getSceneNonce(),{elementsMap:f,visibleElements:g}=this.renderer.getRenderableElements({sceneNonce:d,zoom:this.state.zoom,offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,height:this.state.height,width:this.state.width,editingTextElement:this.state.editingTextElement,newElementId:this.state.newElement?.id,pendingImageElementId:this.state.pendingImageElementId});this.visibleElements=g;let h=this.scene.getNonDeletedElementsMap(),i=!("setPointerCapture"in HTMLElement.prototype)&&(this.state.selectionElement||this.state.newElement||this.state.selectedElementsAreBeingDragged||this.state.resizingElement||"laser"===this.state.activeTool.type&&"down"===this.state.cursorButton),j=a[0];return(0,e.jsx)("div",{className:(0,av.default)("excalidraw excalidraw-container",{"excalidraw--view-mode":this.state.viewModeEnabled||this.state.openDialog?.name==="elementLinkSelector","excalidraw--mobile":this.device.editor.isMobile}),style:{"--ui-pointerEvents":i?F.B.disabled:F.B.enabled,"--right-sidebar-width":"302px"},ref:this.excalidrawContainerRef,onDrop:this.handleAppOnDrop,tabIndex:0,onKeyDown:this.props.handleKeyboardGlobally?void 0:this.onKeyDown,onPointerEnter:this.toggleOverscrollBehavior,onPointerLeave:this.toggleOverscrollBehavior,children:(0,e.jsx)(j0.Provider,{value:this,children:(0,e.jsx)(j1.Provider,{value:this.props,children:(0,e.jsx)(j4.Provider,{value:this.excalidrawContainerValue,children:(0,e.jsx)(j3.Provider,{value:this.device,children:(0,e.jsx)(j7.Provider,{value:this.setAppState,children:(0,e.jsx)(j6.Provider,{value:this.state,children:(0,e.jsxs)(j5.Provider,{value:this.scene.getNonDeletedElements(),children:[(0,e.jsxs)(j8.Provider,{value:this.actionManager,children:[(0,e.jsx)(jh,{canvas:this.canvas,appState:this.state,files:this.files,setAppState:this.setAppState,actionManager:this.actionManager,elements:this.scene.getNonDeletedElements(),onLockToggle:this.toggleLock,onPenModeToggle:this.togglePenMode,onHandToolToggle:this.onHandToolToggle,langCode:c4.code,renderTopRightUI:b,renderCustomStats:c,showExitZenModeBtn:typeof this.props?.zenModeEnabled>"u"&&this.state.zenModeEnabled,UIOptions:this.props.UIOptions,onExportImage:this.onExportImage,renderWelcomeScreen:!this.state.isLoading&&this.state.showWelcomeScreen&&"selection"===this.state.activeTool.type&&!this.state.zenModeEnabled&&!this.scene.getElementsIncludingDeleted().length,app:this,isCollaborating:this.props.isCollaborating,generateLinkForSelection:this.props.generateLinkForSelection,children:this.props.children}),(0,e.jsx)("div",{className:"excalidraw-textEditorContainer"}),(0,e.jsx)("div",{className:"excalidraw-contextMenuContainer"}),(0,e.jsx)("div",{className:"excalidraw-eye-dropper-container"}),(0,e.jsx)(jR,{trails:[this.laserTrails,this.eraserTrail]}),1===a.length&&this.state.openDialog?.name!=="elementLinkSelector"&&this.state.showHyperlinkPopup&&(0,e.jsx)(fq,{element:j,elementsMap:h,setAppState:this.setAppState,onLinkOpen:this.props.onLinkOpen,setToast:this.setToast,updateEmbedValidationStatus:this.updateEmbedValidationStatus},j.id),!1!==this.props.aiEnabled&&1===a.length&&(0,F.ac)(j)&&(0,e.jsx)(jS,{element:j,elementsMap:f,children:(0,e.jsx)(jT,{title:c8("labels.convertToCode"),icon:F.jf,checked:!1,onChange:()=>this.onMagicFrameGenerate(j,"button")})}),1===a.length&&(0,F.Yb)(j)&&j.customData?.generationData?.status==="done"&&(0,e.jsxs)(jS,{element:j,elementsMap:f,children:[(0,e.jsx)(jT,{title:c8("labels.copySource"),icon:F._e,checked:!1,onChange:()=>this.onIframeSrcCopy(j)}),(0,e.jsx)(jT,{title:"Enter fullscreen",icon:F.kf,checked:!1,onChange:()=>{let a=this.getHTMLIFrameElement(j);if(a)try{a.requestFullscreen(),this.setState({activeEmbeddable:{element:j,state:"active"},selectedElementIds:{[j.id]:!0},newElement:null,selectionElement:null})}catch(a){console.warn(a),this.setState({errorMessage:"Couldn't enter fullscreen"})}}})]}),null!==this.state.toast&&(0,e.jsx)(jj,{message:this.state.toast.message,onClose:()=>this.setToast(null),duration:this.state.toast.duration,closable:this.state.toast.closable}),this.state.contextMenu&&(0,e.jsx)(g4,{items:this.state.contextMenu.items,top:this.state.contextMenu.top,left:this.state.contextMenu.left,actionManager:this.actionManager,onClose:a=>{this.setState({contextMenu:null},()=>{this.focusContainer(),a?.()})}}),(0,e.jsx)(jP,{canvas:this.canvas,rc:this.rc,elementsMap:f,allElementsMap:h,visibleElements:g,sceneNonce:d,selectionNonce:this.state.selectionElement?.versionNonce,scale:window.devicePixelRatio,appState:this.state,renderConfig:{imageCache:this.imageCache,isExporting:!1,renderGrid:(0,F.fj)(this),canvasBackgroundColor:this.state.viewBackgroundColor,embedsValidationStatus:this.embedsValidationStatus,elementsPendingErasure:this.elementsPendingErasure,pendingFlowchartNodes:this.flowChartCreator.pendingNodes}}),this.state.newElement&&(0,e.jsx)(j_,{appState:this.state,scale:window.devicePixelRatio,rc:this.rc,elementsMap:f,allElementsMap:h,renderConfig:{imageCache:this.imageCache,isExporting:!1,renderGrid:!1,canvasBackgroundColor:this.state.viewBackgroundColor,embedsValidationStatus:this.embedsValidationStatus,elementsPendingErasure:this.elementsPendingErasure,pendingFlowchartNodes:null}}),(0,e.jsx)(jN,{containerRef:this.excalidrawContainerRef,canvas:this.interactiveCanvas,elementsMap:f,visibleElements:g,allElementsMap:h,selectedElements:a,sceneNonce:d,selectionNonce:this.state.selectionElement?.versionNonce,scale:window.devicePixelRatio,appState:this.state,device:this.device,renderInteractiveSceneCallback:this.renderInteractiveSceneCallback,handleCanvasRef:this.handleInteractiveCanvasRef,onContextMenu:this.handleCanvasContextMenu,onPointerMove:this.handleCanvasPointerMove,onPointerUp:this.handleCanvasPointerUp,onPointerCancel:this.removePointer,onTouchMove:this.handleTouchMove,onPointerDown:this.handleCanvasPointerDown,onDoubleClick:this.handleCanvasDoubleClick}),this.state.userToFollow&&(0,e.jsx)(jU,{width:this.state.width,height:this.state.height,userToFollow:this.state.userToFollow,onDisconnect:this.maybeUnfollowRemoteUser}),this.renderFrameNames()]}),this.renderEmbeddables()]})})})})})})})})}setPlugins(a){Object.assign(this.plugins,a)}async onMagicFrameGenerate(a,b){let c=this.plugins.diagramToCode?.generate;if(!c)return void this.setState({errorMessage:"No diagram to code plugin found"});let d=(0,F.Pi)(this.scene.getNonDeletedElements(),a).filter(a=>!(0,F.ac)(a));if(!d.length)return void("button"===b?(this.setState({errorMessage:"Cannot generate from an empty frame"}),dw("ai","generate (no-children)","d2c")):this.setActiveTool({type:"magicframe"}));let e=this.insertIframeElement({sceneX:a.x+a.width+30,sceneY:a.y,width:a.width,height:a.height});if(e){this.updateMagicGeneration({frameElement:e,data:{status:"pending"}}),this.setState({selectedElementIds:{[e.id]:!0}}),dw("ai","generate (start)","d2c");try{let{html:b}=await c({frame:a,children:d});if(dw("ai","generate (success)","d2c"),!b.trim())return void this.updateMagicGeneration({frameElement:e,data:{status:"error",code:"ERR_OAI",message:"Nothing genereated :("}});let f=b.includes("<!DOCTYPE html>")&&b.includes("</html>")?b.slice(b.indexOf("<!DOCTYPE html>"),b.indexOf("</html>")+7):b;this.updateMagicGeneration({frameElement:e,data:{status:"done",html:f}})}catch(a){dw("ai","generate (failed)","d2c"),this.updateMagicGeneration({frameElement:e,data:{status:"error",code:"ERR_OAI",message:a.message||"Unknown error during generation"}})}}}onIframeSrcCopy(a){a.customData?.generationData?.status==="done"&&((0,F.oi)(a.customData.generationData.html),this.setToast({message:"copied to clipboard",closable:!1,duration:1500}))}clearImageShapeCache(a){let b=a??this.files;this.scene.getNonDeletedElements().forEach(a=>{(0,F.Vb)(a)&&b[a.fileId]&&(this.imageCache.delete(a.fileId),F.ed.delete(a))})}async componentDidMount(){this.unmounted=!1,this.excalidrawContainerValue.container=this.excalidrawContainerRef.current,(H.a.MODE===F.D.TEST||H.a.DEV)&&(this.setState.bind(this),Object.defineProperties(window.h,{state:{configurable:!0,get:()=>this.state},setState:{configurable:!0,value:(...a)=>this.setState(...a)},app:{configurable:!0,value:this},history:{configurable:!0,value:this.history},store:{configurable:!0,value:this.store},fonts:{configurable:!0,value:this.fonts}})),this.store.onStoreIncrementEmitter.on(a=>{this.history.record(a.elementsChange,a.appStateChange)}),this.scene.onUpdate(this.triggerRender),this.addEventListeners(),this.props.autoFocus&&this.excalidrawContainerRef.current&&this.focusContainer(),(0,F.Ab)()||(this.refreshViewportBreakpoints(),this.refreshEditorBreakpoints()),F.r&&this.excalidrawContainerRef.current&&(this.resizeObserver=new ResizeObserver(()=>{this.refreshEditorBreakpoints(),this.updateDOMRect()}),this.resizeObserver?.observe(this.excalidrawContainerRef.current)),new URLSearchParams(window.location.search.slice(1)).has("web-share-target")?this.restoreFileFromShare():this.updateDOMRect(this.initializeScene),(0,F.q)()&&!(0,F.yc)()&&this.setState({errorMessage:(0,e.jsx)(jp,{})})}componentWillUnmount(){window.launchQueue?.setConsumer(()=>{}),this.renderer.destroy(),this.scene.destroy(),this.scene=new F.Oj,this.fonts=new F.Qf(this.scene),this.renderer=new jQ(this.scene),this.files={},this.imageCache.clear(),this.resizeObserver?.disconnect(),this.unmounted=!0,this.removeEventListeners(),this.library.destroy(),this.laserTrails.stop(),this.eraserTrail.stop(),this.onChangeEmitter.clear(),this.store.onStoreIncrementEmitter.clear(),F.ed.destroy(),F.ej.destroy(),clearTimeout(kn),F.tk.clearCache(),F.Jc.clearCache(),kn=0,document.documentElement.style.overscrollBehaviorX=""}removeEventListeners(){this.onRemoveEventListenersEmitter.trigger()}addEventListeners(){this.removeEventListeners(),this.props.handleKeyboardGlobally&&this.onRemoveEventListenersEmitter.once((0,F.Pb)(document,"keydown",this.onKeyDown,!1)),this.onRemoveEventListenersEmitter.once((0,F.Pb)(this.excalidrawContainerRef.current,"wheel",this.handleWheel,{passive:!1}),(0,F.Pb)(window,"message",this.onWindowMessage,!1),(0,F.Pb)(document,"pointerup",this.removePointer,{passive:!1}),(0,F.Pb)(document,"copy",this.onCopy,{passive:!1}),(0,F.Pb)(document,"keyup",this.onKeyUp,{passive:!0}),(0,F.Pb)(document,"pointermove",this.updateCurrentCursorPosition,{passive:!1}),(0,F.Pb)(document.fonts,"loadingdone",a=>{let b=a.fontfaces;this.fonts.onLoaded(b)},{passive:!1}),(0,F.Pb)(document,"gesturestart",this.onGestureStart,!1),(0,F.Pb)(document,"gesturechange",this.onGestureChange,!1),(0,F.Pb)(document,"gestureend",this.onGestureEnd,!1),(0,F.Pb)(window,"focus",()=>{this.maybeCleanupAfterMissingPointerUp(null),this.triggerRender(!0)},{passive:!1})),!this.state.viewModeEnabled&&(this.onRemoveEventListenersEmitter.once((0,F.Pb)(document,"fullscreenchange",this.onFullscreenChange,{passive:!1}),(0,F.Pb)(document,"paste",this.pasteFromClipboard,{passive:!1}),(0,F.Pb)(document,"cut",this.onCut,{passive:!1}),(0,F.Pb)(window,"resize",this.onResize,!1),(0,F.Pb)(window,"unload",this.onUnload,!1),(0,F.Pb)(window,"blur",this.onBlur,!1),(0,F.Pb)(this.excalidrawContainerRef.current,"wheel",this.handleWheel,{passive:!1}),(0,F.Pb)(this.excalidrawContainerRef.current,"dragover",this.disableEvent,!1),(0,F.Pb)(this.excalidrawContainerRef.current,"drop",this.disableEvent,!1)),this.props.detectScroll&&this.onRemoveEventListenersEmitter.once((0,F.Pb)((0,F.ub)(this.excalidrawContainerRef.current),"scroll",this.onScroll,{passive:!1})))}componentDidUpdate(a,b){this.updateEmbeddables();let c=this.scene.getElementsIncludingDeleted(),d=this.scene.getElementsMapIncludingDeleted(),e=this.scene.getNonDeletedElementsMap();this.state.showWelcomeScreen||c.length||this.setState({showWelcomeScreen:!0}),a.UIOptions.dockedSidebarBreakpoint!==this.props.UIOptions.dockedSidebarBreakpoint&&this.refreshEditorBreakpoints(),b.userToFollow&&!this.state.collaborators.has(b.userToFollow.socketId)&&this.maybeUnfollowRemoteUser(),(b.zoom.value!==this.state.zoom.value||b.scrollX!==this.state.scrollX||b.scrollY!==this.state.scrollY)&&(this.props?.onScrollChange?.(this.state.scrollX,this.state.scrollY,this.state.zoom),this.onScrollChangeEmitter.trigger(this.state.scrollX,this.state.scrollY,this.state.zoom)),b.userToFollow!==this.state.userToFollow&&(b.userToFollow&&this.onUserFollowEmitter.trigger({userToFollow:b.userToFollow,action:"UNFOLLOW"}),this.state.userToFollow&&this.onUserFollowEmitter.trigger({userToFollow:this.state.userToFollow,action:"FOLLOW"})),Object.keys(this.state.selectedElementIds).length&&(0,F.Gc)(this.state)&&this.setState({activeTool:(0,F.jb)(this.state,{type:"selection"})}),"eraser"===this.state.activeTool.type&&b.theme!==this.state.theme&&(0,F.cd)(this.interactiveCanvas,this.state.theme),"selection"===b.activeTool.type&&"selection"!==this.state.activeTool.type&&this.state.showHyperlinkPopup&&this.setState({showHyperlinkPopup:!1}),a.langCode!==this.props.langCode&&this.updateLanguage(),(0,F.Gc)(b)&&!(0,F.Gc)(this.state)&&this.eraserTrail.endPath(),a.viewModeEnabled!==this.props.viewModeEnabled&&this.setState({viewModeEnabled:!!this.props.viewModeEnabled}),b.viewModeEnabled!==this.state.viewModeEnabled&&(this.addEventListeners(),this.deselectElements()),(b.openDialog?.name==="elementLinkSelector"||this.state.openDialog?.name==="elementLinkSelector")&&b.openDialog?.name!==this.state.openDialog?.name&&(this.deselectElements(),this.setState({hoveredElementIds:{}})),a.zenModeEnabled!==this.props.zenModeEnabled&&this.setState({zenModeEnabled:!!this.props.zenModeEnabled}),a.theme!==this.props.theme&&this.props.theme&&this.setState({theme:this.props.theme}),this.excalidrawContainerRef.current?.classList.toggle("theme--dark",this.state.theme===F.G.DARK),this.state.editingLinearElement&&!this.state.selectedElementIds[this.state.editingLinearElement.elementId]&&setTimeout(()=>{this.state.editingLinearElement&&this.actionManager.executeAction(eC)}),this.state.editingTextElement?.isDeleted&&this.setState({editingTextElement:null}),this.state.selectedLinearElement&&!this.state.selectedElementIds[this.state.selectedLinearElement.elementId]&&this.setState({selectedLinearElement:null});let{multiElement:f}=b;b.activeTool!==this.state.activeTool&&null!=f&&(0,F.Fg)(this.state)&&(0,F.gc)(f,!1)&&(0,F.Lg)(f,this.state,(0,F.ob)(F.pj.getPointAtIndexGlobalCoordinates(f,-1,e)),this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements()),this.store.commit(d,this.state),this.state.isLoading||(this.props.onChange?.(c,this.state,this.files),this.onChangeEmitter.trigger(c,this.state,this.files))}static resetTapTwice(){kh=!1}async addElementsFromMixedContentPaste(a,{isPlainPaste:b,sceneX:c,sceneY:d}){if(!b&&a.some(a=>"imageUrl"===a.type)&&this.isToolSupported("image")){let b=a.filter(a=>"imageUrl"===a.type).map(a=>a.value),e=await Promise.all(b.map(async a=>{try{return{file:await (0,F.Gh)(a)}}catch(b){let a=b.message;return"FETCH_ERROR"===b.cause?a=c8("errors.failedToFetchImage"):"UNSUPPORTED"===b.cause&&(a=c8("errors.unsupportedFileType")),{errorMessage:a}}})),f=d,g=!1,h={};for(let a of e)if(a.file){let b=this.createImageElement({sceneX:c,sceneY:f}),d=await this.insertImageElement(b,a.file);d&&(g||(g=!0,f-=d.height/2),(0,F.Pj)(d,{y:f},!1),f=b.y+b.height+25,h[b.id]=!0)}this.setState({selectedElementIds:(0,F.xk)(h,this.state)});let i=e.find(a=>!!a.errorMessage);i&&i.errorMessage&&this.setState({errorMessage:i.errorMessage})}else{let c=a.filter(a=>"text"===a.type);c.length&&this.addTextFromPaste(c.map(a=>a.value).join(`
105
-
106
- `),b)}}addTextFromPaste(a,b=!1){let{x:c,y:d}=(0,F.lb)({clientX:this.lastViewportPosition.x,clientY:this.lastViewportPosition.y},this.state),e={x:c,y:d,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.state.currentItemStrokeWidth,strokeStyle:this.state.currentItemStrokeStyle,roundness:null,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,text:a,fontSize:this.state.currentItemFontSize,fontFamily:this.state.currentItemFontFamily,textAlign:F.K,verticalAlign:F.L,locked:!1},f=(0,F.cb)({fontSize:e.fontSize,fontFamily:e.fontFamily}),g=(0,F.Rf)(e.fontFamily),[h,,i]=(0,F.dj)(this.state),j=Math.max(Math.min((i-h)*.5,800),200),k=d,l=b?[a]:a.split(`
107
- `),m=l.reduce((a,b,d)=>{let h=(0,F.zc)(b).trim();if(h.length){let b=this.getTopLayerFrameAtSceneCoords({x:c,y:k}),d=(0,F.vc)(h,f,g),i=d.width>j,l=i?(0,F.Ec)(h,f,j):h,m=c-(d=i?(0,F.vc)(l,f,g):d).width/2,n=k-d.height/2,o=(0,F.Xf)({...e,x:m,y:n,text:l,originalText:h,lineHeight:g,autoResize:!i,frameId:b?b.id:null});a.push(o),k+=o.height+10}else l[d-1]?.trim()&&(k+=(0,F.Ac)(e.fontSize,g)+10);return a},[]);0!==m.length&&(this.scene.insertElements(m),this.setState({selectedElementIds:(0,F.xk)(Object.fromEntries(m.map(a=>[a.id,!0])),this.state)}),b||!(m.length>1)||!1!==ks||this.device.editor.isMobile||(this.setToast({message:c8("toast.pasteAsSingleElement",{shortcut:(0,F.kb)("CtrlOrCmd+Shift+V")}),duration:5e3}),ks=!0),this.store.shouldCaptureIncrement())}handleTextWysiwyg(a,{isExistingElement:b=!1}){let c=this.scene.getElementsMapIncludingDeleted(),d=(b,d)=>{this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(e=>e.id===a.id&&(0,F._b)(e)?(0,F.Qj)(e,{originalText:b,isDeleted:d??e.isDeleted,...(0,F.Yf)(e,(0,F.Aj)(e,c),c,b)}):e)])};(({id:a,onChange:b,onSubmit:c,getViewportCoords:d,element:e,canvas:f,excalidrawContainer:g,app:h,autoSelect:i=!0})=>{let j=()=>{let b=h.state,c=F.Oj.getScene(e)?.getElement(a);if(!c)return;let{textAlign:f,verticalAlign:g}=c,i=h.scene.getNonDeletedElementsMap();if(c&&(0,F._b)(c)){let a=c.x,e=c.y,j=(0,F.Aj)(c,h.scene.getNonDeletedElementsMap()),l=c.width,m=c.height,n=c.width,o=c.height;if(j&&c.containerId){let b;if((0,F.dc)(j)){let b=F.pj.getBoundTextElementPosition(j,c,i);a=b.x,e=b.y}if(((a,b)=>{if(!b.style.fontFamily||!b.style.fontSize)return!1;let c=b.style.fontFamily.replace(/"/g,"");return(0,F.bb)({fontFamily:a.fontFamily})!==c||`${a.fontSize}px`!==b.style.fontSize})(c,k)?b=(0,F.rj)(j.id,j.height):(b=F.qj[j.id])||(b=(0,F.rj)(j.id,j.height)),n=(0,F.Hj)(j,c),o=(0,F.Ij)(j,c),!(0,F.dc)(j)&&m>o){let a=(0,F.Gj)(m,j.type);(0,F.Pj)(j,{height:a});return}if(!(0,F.dc)(j)&&j.height>b.height&&m<o){let a=(0,F.Gj)(m,j.type);(0,F.Pj)(j,{height:a})}else{let{y:a}=(0,F.xj)(j,c,i);e=a}}let[p,q]=d(a,e),r=k.selectionStart,s=k.selectionEnd,t=k.value.length;if(r===s&&s!==t){let a=t-s;k.selectionStart=k.value.length-a,k.selectionEnd=k.value.length-a}j?l+=.5:l=Math.min(l,n=(b.width-8-p)/b.zoom.value),m*=1.05;let u=(0,F.cb)(c),v=(b.height-q)/b.zoom.value;Object.assign(k.style,{font:u,lineHeight:c.lineHeight,width:`${l}px`,height:`${m}px`,left:`${p}px`,top:`${q}px`,transform:((a,b,c,d,e,f)=>{let{zoom:g}=d,h=180*c/Math.PI,i=a*(g.value-1)/2,j=b*(g.value-1)/2;return a>e&&1!==g.value&&(i=e*(g.value-1)/2),b>f&&1!==g.value&&(j=f*(g.value-1)/2),`translate(${i}px, ${j}px) scale(${g.value}) rotate(${h}deg)`})(l,m,(0,F.Cj)(c,j),b,n,v),textAlign:f,verticalAlign:g,color:c.strokeColor,opacity:c.opacity/100,filter:"var(--theme-filter)",maxHeight:`${v}px`}),k.scrollTop=0,(0,F.Ab)()&&(k.style.fontFamily=(0,F.bb)(c)),(0,F.Pj)(c,{x:a,y:e})}},k=document.createElement("textarea");k.dir="auto",k.tabIndex=0,k.dataset.type="wysiwyg",k.wrap="off",k.classList.add("excalidraw-wysiwyg");let l="pre",m="normal";((0,F.nc)(e)||!e.autoResize)&&(l="pre-wrap",m="break-word"),Object.assign(k.style,{position:"absolute",display:"inline-block",minHeight:"1em",backfaceVisibility:"hidden",margin:0,padding:0,border:0,outline:0,resize:"none",background:"transparent",overflow:"hidden",zIndex:"var(--zIndex-wysiwyg)",wordBreak:m,whiteSpace:l,overflowWrap:"break-word",boxSizing:"content-box"}),k.value=e.originalText,j(),b&&(k.onpaste=async a=>{let b=await (0,F.mi)(a,!0);if(!b.text)return;let c=(0,F.zc)(b.text);if(!c)return;let d=(0,F.Aj)(e,h.scene.getNonDeletedElementsMap()),f=(0,F.cb)({fontSize:h.state.currentItemFontSize,fontFamily:h.state.currentItemFontFamily});if(d){let a=(0,F.zj)(d,h.scene.getNonDeletedElementsMap()),b=(0,F.Ec)(`${k.value}${c}`,f,(0,F.Hj)(d,a)),e=(0,F.Dc)(b,f);k.style.width=`${e}px`}},k.oninput=()=>{let a=(0,F.zc)(k.value);if(k.value!==a){let b=k.selectionStart;k.value=a,k.selectionStart=b,k.selectionEnd=b}b(k.value)}),k.onkeydown=a=>{if(!a.shiftKey&&ew.keyTest(a))a.preventDefault(),h.actionManager.executeAction(ew),j();else if(!a.shiftKey&&ex.keyTest(a))a.preventDefault(),h.actionManager.executeAction(ex),j();else if(!a.shiftKey&&ey.keyTest(a))a.preventDefault(),h.actionManager.executeAction(ey),j();else if(eo.keyTest(a))h.actionManager.executeAction(eo);else if(ep.keyTest(a))h.actionManager.executeAction(ep);else if(a.key===F.hg.ESCAPE)a.preventDefault(),t=!0,u();else if(a.key===F.hg.ENTER&&a[F.hg.CTRL_OR_CMD]){if(a.preventDefault(),a.isComposing||229===a.keyCode)return;t=!0,u()}else if(a.key===F.hg.TAB||a[F.hg.CTRL_OR_CMD]&&(a.code===F.gg.BRACKET_LEFT||a.code===F.gg.BRACKET_RIGHT)){if(a.preventDefault(),a.isComposing)return;a.shiftKey||a.code===F.gg.BRACKET_LEFT?q():p(),k.dispatchEvent(new Event("input"))}};let n=" ".repeat(4),o=RegExp("^ {1,4}"),p=()=>{let{selectionStart:a,selectionEnd:b}=k,c=r(),d=k.value;c.forEach(a=>{let b=d.slice(0,a),c=d.slice(a);d=`${b}${n}${c}`}),k.value=d,k.selectionStart=a+4,k.selectionEnd=b+4*c.length},q=()=>{let{selectionStart:a,selectionEnd:b}=k,c=r(),d=[],e=k.value;c.forEach(a=>{let b=e.slice(a,a+4).match(o);if(b){let c=e.slice(0,a),f=e.slice(a+b[0].length);e=`${c}${f}`,d.push(a)}}),k.value=e,d.length&&(a>d[d.length-1]?k.selectionStart=Math.max(a-4,d[d.length-1]):k.selectionStart=a,k.selectionEnd=Math.max(k.selectionStart,b-4*d.length))},r=()=>{let{selectionStart:a,selectionEnd:b,value:c}=k,d=c.slice(0,a).match(/[^\n]*$/)[0].length;return a-=d,c.slice(a,b).split(`
108
- `).reduce((b,c,d,e)=>b.concat(d?b[d-1]+e[d-1].length+1:a),[]).reverse()},s=a=>{a.target instanceof HTMLCanvasElement&&(a.preventDefault(),a.stopPropagation())},t=!1,u=()=>{if(B)return;B=!0,v();let a=F.Oj.getScene(e)?.getElement(e.id);if(!a)return;let b=(0,F.Aj)(a,h.scene.getNonDeletedElementsMap());if(b){if(k.value.trim()){let a=(0,F.yj)(b);a&&a===e.id?(0,F.dc)(b)&&(0,F.Rj)(b):(0,F.Pj)(b,{boundElements:(b.boundElements||[]).concat({type:"text",id:e.id})})}else(0,F.Pj)(b,{boundElements:b.boundElements?.filter(a=>!(0,F._b)(a))});(0,F.uj)(a,b,h.scene.getNonDeletedElementsMap())}c({viaKeyboard:t,nextOriginalText:k.value})},v=()=>{k.onblur=null,k.oninput=null,k.onkeydown=null,C&&C.disconnect(),window.removeEventListener("resize",j),window.removeEventListener("wheel",s,!0),window.removeEventListener("pointerdown",y),window.removeEventListener("pointerup",w),window.removeEventListener("blur",u),window.removeEventListener("beforeunload",u),z(),A(),k.remove()},w=a=>{window.removeEventListener("pointerup",w);let b=a?.target,c=b instanceof HTMLElement&&b.classList.contains("properties-trigger");setTimeout(()=>{k.onblur=u,c||k.focus()})},x=()=>{k.onblur=null,window.addEventListener("pointerup",w),window.addEventListener("blur",u)},y=a=>{let b=a?.target;if(a.button===F.A.WHEEL){b instanceof HTMLTextAreaElement&&(a.preventDefault(),h.handleCanvasPanUsingWheelOrSpaceDrag(a)),x();return}let c=b instanceof HTMLElement&&b.classList.contains("properties-trigger");(a.target instanceof HTMLElement||a.target instanceof SVGElement)&&a.target.closest(`.${F.E.SHAPE_ACTIONS_MENU}, .${F.E.ZOOM_ACTIONS}`)&&!(0,F.ab)(a.target)||c?x():a.target instanceof HTMLCanvasElement&&!(0,F.Ab)()&&requestAnimationFrame(()=>{u()})},z=h.scene.onUpdate(()=>{j(),document.activeElement?.closest(".properties-content")||k.focus()}),A=h.onScrollChangeEmitter.on(()=>{j()}),B=!1;i&&k.select(),w();let C=null;f&&"ResizeObserver"in window?(C=new window.ResizeObserver(()=>{j()})).observe(f):window.addEventListener("resize",j),k.onpointerdown=a=>a.stopPropagation(),requestAnimationFrame(()=>{window.addEventListener("pointerdown",y,{capture:!0})}),window.addEventListener("beforeunload",u),g?.querySelector(".excalidraw-textEditorContainer").appendChild(k)})({id:a.id,canvas:this.canvas,getViewportCoords:(a,b)=>{let{x:c,y:d}=(0,F.mb)({sceneX:a,sceneY:b},this.state);return[c-this.state.offsetLeft,d-this.state.offsetTop]},onChange:ju(b=>{d(b,!1),(0,F.qk)(a)&&(0,F.Pg)(a,this.scene.getNonDeletedElementsMap())}),onSubmit:ju(({viaKeyboard:c,nextOriginalText:e})=>{let f=!e.trim();if(d(e,f),!f&&c){let b=a.containerId?a.containerId:a.id;(0,aw.flushSync)(()=>{this.setState(a=>({selectedElementIds:(0,F.xk)({...a.selectedElementIds,[b]:!0},a)}))})}f&&(0,F.Tg)(this.scene.getNonDeletedElements(),[a]),(!f||b)&&this.store.shouldCaptureIncrement(),(0,aw.flushSync)(()=>{this.setState({newElement:null,editingTextElement:null})}),this.state.activeTool.locked&&(0,F.dd)(this.interactiveCanvas,this.state),this.focusContainer()}),element:a,excalidrawContainer:this.excalidrawContainerRef.current,app:this,autoSelect:!this.device.isTouchScreen}),this.deselectElements(),d(a.originalText,!1)}deselectElements(){this.setState({selectedElementIds:(0,F.xk)({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})}getTextElementAtPosition(a,b){let c=this.getElementAtPosition(a,b,{includeBoundTextElement:!0});return c&&(0,F._b)(c)&&!c.isDeleted?c:null}getElementAtPosition(a,b,c){let d=this.getElementsAtPosition(a,b,c?.includeBoundTextElement,c?.includeLockedElements);if(d.length>1){if(c?.preferSelected){for(let a=d.length-1;a>-1;a--)if(this.state.selectedElementIds[d[a].id])return d[a]}let e=d[d.length-1];return(0,F.ng)({x:a,y:b,element:e,shape:(0,F.tg)(e,this.scene.getNonDeletedElementsMap()),threshold:this.getElementHitThreshold()/2,frameNameBound:(0,F.bc)(e)?this.frameNameBoundsCache.get(e):null})?e:d[d.length-2]}return 1===d.length?d[0]:null}getElementsAtPosition(a,b,c=!1,d=!1){let e=[],f=this.scene.getNonDeletedElementsMap();return(c&&d?this.scene.getNonDeletedElements():this.scene.getNonDeletedElements().filter(a=>(d||!a.locked)&&(c||!((0,F._b)(a)&&a.containerId)))).filter(c=>this.hitElement(a,b,c)).filter(c=>{let d=(0,F.Gi)(c,f);return!d||!this.state.frameRendering.enabled||!this.state.frameRendering.clip||(0,F.zi)({x:a,y:b},d,f)}).filter(a=>!(0,F.Yb)(a)||(e.push(a),!1)).concat(e)}getElementHitThreshold(){return F.N/this.state.zoom.value}hitElement(a,b,c,d=!0){if(d&&this.state.selectedElementIds[c.id]&&(0,F._j)([c],this.state)){let d=(0,F.eg)(c,this.scene.getNonDeletedElementsMap(),(0,F.Wb)(c)?0:this.getElementHitThreshold());if((0,F.fg)((0,F.Ua)(a,b),d))return!0}return!!(0,F.qg)(a,b,(0,F.ug)(c,this.scene.getNonDeletedElementsMap()))||(0,F.ng)({x:a,y:b,element:c,shape:(0,F.tg)(c,this.scene.getNonDeletedElementsMap()),threshold:this.getElementHitThreshold(),frameNameBound:(0,F.bc)(c)?this.frameNameBoundsCache.get(c):null})}getTextBindableContainerAtPosition(a,b){let c=this.scene.getNonDeletedElements(),d=this.scene.getSelectedElements(this.state);if(1===d.length)return(0,F.jc)(d[0],!1)?d[0]:null;let e=null;for(let d=c.length-1;d>=0;--d){if(c[d].isDeleted)continue;let[f,g,h,i]=(0,F.aj)(c[d],this.scene.getNonDeletedElementsMap());if((0,F.dc)(c[d])&&(0,F.ng)({x:a,y:b,element:c[d],shape:(0,F.tg)(c[d],this.scene.getNonDeletedElementsMap()),threshold:this.getElementHitThreshold()})||f<a&&a<h&&g<b&&b<i){e=c[d];break}}return(0,F.jc)(e,!1)?e:null}handleHoverSelectedLinearElement(a,b,c){let d=this.scene.getNonDeletedElementsMap(),e=F.pj.getElement(a.elementId,d);if(e)if(this.state.selectedLinearElement){let f=-1,g=null;(0,F.ng)({x:b,y:c,element:e,shape:(0,F.tg)(e,this.scene.getNonDeletedElementsMap())})?(f=F.pj.getPointIndexUnderCursor(e,d,this.state.zoom,b,c),g=F.pj.getSegmentMidpointHitCoords(a,{x:b,y:c},this.state,this.scene.getNonDeletedElementsMap()),((0,F.ec)(e)?0===f||f===e.points.length-1:f>=0)||g?(0,F.bd)(this.interactiveCanvas,F.z.POINTER):this.hitElement(b,c,e)&&(0,F.bd)(this.interactiveCanvas,F.z.MOVE)):!this.hitElement(b,c,e)||(0,F.ec)(e)&&(e.startBinding||e.endBinding)||(0,F.bd)(this.interactiveCanvas,F.z.MOVE),this.state.selectedLinearElement.hoverPointIndex!==f&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,hoverPointIndex:f}}),F.pj.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords,g)||this.setState({selectedLinearElement:{...this.state.selectedLinearElement,segmentMidPointHoveredCoords:g}})}else(0,F.bd)(this.interactiveCanvas,F.z.AUTO)}updateGestureOnPointerDown(a){ku.pointers.set(a.pointerId,{x:a.clientX,y:a.clientY}),2===ku.pointers.size&&(ku.lastCenter=g_(ku.pointers),ku.initialScale=this.state.zoom.value,ku.initialDistance=g0(Array.from(ku.pointers.values())))}initialPointerDownState(a){let b=(0,F.lb)(a,this.state),c=this.scene.getSelectedElements(this.state),[d,e,f,g]=(0,F.bj)(c),h=0===c.findIndex(F.ec);return{origin:b,withCmdOrCtrl:a[F.hg.CTRL_OR_CMD],originInGrid:(0,F.ob)((0,F.oj)(b.x,b.y,a[F.hg.CTRL_OR_CMD]||h?null:this.getEffectiveGridSize())),scrollbars:ho(km,a.clientX-this.state.offsetLeft,a.clientY-this.state.offsetTop),lastCoords:{...b},originalElements:this.scene.getNonDeletedElements().reduce((a,b)=>(a.set(b.id,(0,F.bg)(b)),a),new Map),resize:{handleType:!1,isResizing:!1,offset:{x:0,y:0},arrowDirection:"origin",center:{x:(f+d)/2,y:(g+e)/2}},hit:{element:null,allHitElements:[],wasAddedToSelection:!1,hasBeenDuplicated:!1,hasHitCommonBoundingBoxOfSelectedElements:this.isHittingCommonBoundingBoxOfSelectedElements(b,c)},drag:{hasOccurred:!1,offset:null},eventListeners:{onMove:null,onUp:null,onKeyUp:null,onKeyDown:null},boxSelection:{hasOccurred:!1}}}handleDraggingScrollBar(a,b){if(!(b.scrollbars.isOverEither&&!this.state.multiElement))return!1;kl=!0,b.lastCoords.x=a.clientX,b.lastCoords.y=a.clientY;let c=jv(a=>{a.target instanceof HTMLElement&&this.handlePointerMoveOverScrollbars(a,b)}),d=ju(()=>{kt=null,kl=!1,(0,F.dd)(this.interactiveCanvas,this.state),this.setState({cursorButton:"up"}),this.savePointer(a.clientX,a.clientY,"up"),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),c.flush()});return kt=d,window.addEventListener("pointermove",c),window.addEventListener("pointerup",d),!0}isASelectedElement(a){return null!=a&&this.state.selectedElementIds[a.id]}isHittingCommonBoundingBoxOfSelectedElements(a,b){if(b.length<2)return!1;let c=this.getElementHitThreshold(),[d,e,f,g]=(0,F.bj)(b);return a.x>d-c&&a.x<f+c&&a.y>e-c&&a.y<g+c}getCurrentItemRoundness(a){return"round"===this.state.currentItemRoundness?{type:(0,F.oc)(a)?F.ua.ADAPTIVE_RADIUS:F.ua.PROPORTIONAL_RADIUS}:null}maybeCacheReferenceSnapPoints(a,b,c=!1){(0,F.gj)({event:a,app:this,selectedElements:b})&&(c||!F.ej.getReferenceSnapPoints())&&F.ej.setReferenceSnapPoints((0,F.ij)(this.scene.getNonDeletedElements(),b,this.state,this.scene.getNonDeletedElementsMap()))}maybeCacheVisibleGaps(a,b,c=!1){(0,F.gj)({event:a,app:this,selectedElements:b})&&(c||!F.ej.getVisibleGaps())&&F.ej.setVisibleGaps((0,F.hj)(this.scene.getNonDeletedElements(),b,this.state,this.scene.getNonDeletedElementsMap()))}onKeyDownFromPointerDownHandler(a){return ju(b=>{this.maybeHandleResize(a,b)||this.maybeDragNewGenericElement(a,b)})}onKeyUpFromPointerDownHandler(a){return ju(b=>{b.key===F.hg.ALT&&b.preventDefault(),this.maybeHandleResize(a,b)||this.maybeDragNewGenericElement(a,b)})}onPointerMoveFromPointerDownHandler(a){return jv(b=>{if(this.state.openDialog?.name==="elementLinkSelector")return;let c=(0,F.lb)(b,this.state);if(this.state.selectedLinearElement&&this.state.selectedLinearElement.elbowed&&this.state.selectedLinearElement.pointerDownState.segmentMidpoint.index){let[a,d]=(0,F.oj)(c.x,c.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),e=this.state.selectedLinearElement.pointerDownState.segmentMidpoint.index;if(e<0){let b=F.pj.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:a,y:d},this.state,this.scene.getNonDeletedElementsMap());e=b?F.pj.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,b,this.scene.getNonDeletedElementsMap()):-1}let f=F.pj.moveFixedSegment(this.state.selectedLinearElement,e,a,d,this.scene.getNonDeletedElementsMap());(0,aw.flushSync)(()=>{this.state.selectedLinearElement&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,segmentMidPointHoveredCoords:f.segmentMidPointHoveredCoords,pointerDownState:f.pointerDownState}})});return}let d=this.lastPointerMoveCoords??a.origin;if(this.lastPointerMoveCoords=c,null===a.drag.offset&&(a.drag.offset=(0,F.ob)((0,F.jk)(this.scene.getSelectedElements(this.state),a.origin.x,a.origin.y))),!(b.target instanceof HTMLElement)||this.handlePointerMoveOverScrollbars(b,a))return;if((0,F.Gc)(this.state))return void this.handleEraser(b,a,c);"laser"===this.state.activeTool.type&&this.laserTrails.addPointToPath(c.x,c.y);let[e,f]=(0,F.oj)(c.x,c.y,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize());if(!a.drag.hasOccurred&&("arrow"===this.state.activeTool.type||"line"===this.state.activeTool.type)&&(0,F.Wa)((0,F.Ua)(c.x,c.y),(0,F.Ua)(a.origin.x,a.origin.y))<F.t)return;if(a.resize.isResizing&&(a.lastCoords.x=c.x,a.lastCoords.y=c.y,this.maybeHandleCrop(a,b)||this.maybeHandleResize(a,b)))return!0;let g=this.scene.getNonDeletedElementsMap();if(this.state.selectedLinearElement){let d=this.state.editingLinearElement||this.state.selectedLinearElement;if(F.pj.shouldAddMidpoint(this.state.selectedLinearElement,c,this.state,g)){let a=F.pj.addMidpoint(this.state.selectedLinearElement,c,this,!b[F.hg.CTRL_OR_CMD],g);if(!a)return;(0,aw.flushSync)(()=>{this.state.selectedLinearElement&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,pointerDownState:a.pointerDownState,selectedPointsIndices:a.selectedPointsIndices}}),this.state.editingLinearElement&&this.setState({editingLinearElement:{...this.state.editingLinearElement,pointerDownState:a.pointerDownState,selectedPointsIndices:a.selectedPointsIndices}})});return}if(null!==d.pointerDownState.segmentMidpoint.value&&!d.pointerDownState.segmentMidpoint.added)return;if(F.pj.handlePointDragging(b,this,c.x,c.y,(a,b)=>{this.maybeSuggestBindingsForLinearElementAtCoords(a,b)},d,this.scene)){a.lastCoords.x=c.x,a.lastCoords.y=c.y,a.drag.hasOccurred=!0,this.state.editingLinearElement&&!this.state.editingLinearElement.isDragging&&this.setState({editingLinearElement:{...this.state.editingLinearElement,isDragging:!0}}),this.state.selectedLinearElement.isDragging||this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!0}});return}}let h=a.hit.allHitElements.some(a=>this.isASelectedElement(a)),i=this.state.editingLinearElement&&b.shiftKey&&this.state.editingLinearElement.elementId===a.hit.element?.id;if((h||a.hit.hasHitCommonBoundingBoxOfSelectedElements)&&!i){let e=this.scene.getSelectedElements(this.state);if(e.every(a=>a.locked))return;let f=e.find(a=>(0,F.bc)(a)),h=this.getTopLayerFrameAtSceneCoords(c),i=h&&!f?h:null;if(this.state.frameToHighlight!==i&&(0,aw.flushSync)(()=>{this.setState({frameToHighlight:i})}),a.drag.hasOccurred=!0,e.length>0&&!a.withCmdOrCtrl&&!this.state.editingTextElement&&this.state.activeEmbeddable?.state!=="active"){let f={x:c.x-a.origin.x,y:c.y-a.origin.y},h=[...a.originalElements.values()],i=b.shiftKey;if(i){let a=Math.abs(f.x),b=Math.abs(f.y);i&&a<b&&(f.x=0),i&&a>b&&(f.y=0)}if(this.state.croppingElementId){let b=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(b&&(0,F.Wb)(b)&&null!==b.crop&&a.hit.element===b){let a=b.crop,e=(0,F.Vb)(b)&&this.imageCache.get(b.fileId)?.image;if(e&&!(e instanceof Promise)){let f=(0,F.Sa)((0,F.Oa)(c.x-d.x,c.y-d.y),Math.max(this.state.zoom.value,2)),[h,i,j,k,l,m]=(0,F.aj)(b,g),n=(0,F.Pa)((0,F.Va)((0,F.Ua)(h,i),(0,F.Ua)(l,m),b.angle)),o=(0,F.Pa)((0,F.Va)((0,F.Ua)(j,i),(0,F.Ua)(l,m),b.angle)),p=(0,F.Pa)((0,F.Va)((0,F.Ua)(h,k),(0,F.Ua)(l,m),b.angle)),q=(0,F.Ta)((0,F.Ra)(o,n)),r=(0,F.Ta)((0,F.Ra)(p,n)),s=(0,F.Oa)((0,F.Qa)(f,q),(0,F.Qa)(f,r)),t={...a,x:(0,F.Ia)(a.x-s[0]*Math.sign(b.scale[0]),0,e.naturalWidth-a.width),y:(0,F.Ia)(a.y-s[1]*Math.sign(b.scale[1]),0,e.naturalHeight-a.height)};(0,F.Pj)(b,{crop:t});return}}}this.maybeCacheVisibleGaps(b,e),this.maybeCacheReferenceSnapPoints(b,e);let{snapOffset:j,snapLines:k}=(0,F.jj)(h,f,this,b,this.scene.getNonDeletedElementsMap());if(this.setState({snapLines:k}),this.state.editingFrame||(0,F.ik)(a,e,f,this.scene,j,b[F.hg.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),this.setState({selectedElementsAreBeingDragged:!0,selectionElement:null}),1===e.length&&(0,F.ec)(e[0])||this.setState({suggestedBindings:(0,F.Kg)(e,this.scene.getNonDeletedElementsMap(),this.state.zoom)}),b.altKey&&!a.hit.hasBeenDuplicated){a.hit.hasBeenDuplicated=!0;let c=[],d=[],f=new Map,g=new Map,h=a.hit.element,i=new Set(this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0}).map(a=>a.id)),j=this.scene.getElementsIncludingDeleted();for(let b of j){let e=i.has(b.id)||b.id===h?.id&&a.hit.wasAddedToSelection;if(Math.abs(b.x)>1e7||Math.abs(b.x)>1e7||Math.abs(b.width)>1e7||Math.abs(b.height)>1e7)return void console.error("Alt+dragging element in scene with invalid dimensions",b.x,b.y,b.width,b.height,e);if(e){let e=(0,F.cg)(this.state.editingGroupId,f,b);if(Math.abs(e.x)>1e7||Math.abs(e.x)>1e7||Math.abs(e.width)>1e7||Math.abs(e.height)>1e7)return void console.error("Alt+dragging duplicated element with invalid dimensions",e.x,e.y,e.width,e.height);let h=a.originalElements.get(b.id);if(Math.abs(h.x)>1e7||Math.abs(h.x)>1e7||Math.abs(h.width)>1e7||Math.abs(h.height)>1e7)return void console.error("Alt+dragging duplicated element with invalid dimensions",h.x,h.y,h.width,h.height);(0,F.Pj)(e,{x:h.x,y:h.y}),a.originalElements.set(e.id,e),c.push(e),d.push(b),g.set(b.id,e.id)}else c.push(b)}let k=[...c,...d];k=this.props.onDuplicate?.(k,j)||k,(0,F.Mj)(k,(0,F.xb)(d)),(0,F.vj)(c,d,g),(0,F.Sg)(k,d,g,"duplicatesServeAsOld"),(0,F.wi)(k,d,g),this.scene.replaceAllElements(k),this.maybeCacheVisibleGaps(b,e,!0),this.maybeCacheReferenceSnapPoints(b,e,!0)}return}}if(this.state.selectionElement)a.lastCoords.x=c.x,a.lastCoords.y=c.y,this.maybeDragNewGenericElement(a,b);else{let d=this.state.newElement;if(!d)return;if("freedraw"===d.type){let a=d.points,e=c.x-d.x,f=c.y-d.y,g=a.length>0&&a[a.length-1];if(!(g&&g[0]===e&&g[1]===f)){let c=d.simulatePressure?d.pressures:[...d.pressures,b.pressure];(0,F.Pj)(d,{points:[...a,(0,F.Ua)(e,f)],pressures:c},!1),this.setState({newElement:d})}}else if((0,F.cc)(d)){a.drag.hasOccurred=!0;let g=d.points,h=e-d.x,i=f-d.y;(0,F.mg)(b)&&2===g.length&&({width:h,height:i}=(0,F.Vj)(d.x,d.y,c.x,c.y)),1===g.length?(0,F.Pj)(d,{points:[...g,(0,F.Ua)(h,i)]},!1):(2===g.length||g.length>1&&(0,F.ec)(d))&&(0,F.Pj)(d,{points:[...g.slice(0,-1),(0,F.Ua)(h,i)]},!1,{isDragging:!0}),this.setState({newElement:d}),(0,F.gc)(d,!1)&&this.maybeSuggestBindingsForLinearElementAtCoords(d,[c],this.state.startBoundElement)}else a.lastCoords.x=c.x,a.lastCoords.y=c.y,this.maybeDragNewGenericElement(a,b,!1)}if("selection"===this.state.activeTool.type){a.boxSelection.hasOccurred=!0;let c=this.scene.getNonDeletedElements();if(this.state.editingLinearElement)F.pj.handleBoxSelection(b,this.state,this.setState.bind(this),this.scene.getNonDeletedElementsMap());else{let d=!0;!b.shiftKey&&(0,F.tk)(c,this.state)&&(a.withCmdOrCtrl&&a.hit.element?this.setState(b=>(0,F.Jc)({...b,selectedElementIds:{[a.hit.element.id]:!0}},this.scene.getNonDeletedElements(),b,this)):d=!1);let e=this.state.selectionElement?(0,F.sk)(c,this.state.selectionElement,this.scene.getNonDeletedElementsMap(),!1):[];this.setState(b=>{let c={...d&&b.selectedElementIds,...e.reduce((a,b)=>(a[b.id]=!0,a),{})};return a.hit.element&&(e.length?delete c[a.hit.element.id]:c[a.hit.element.id]=!0),b=d?b:{...b,selectedGroupIds:{},editingGroupId:null},{...(0,F.Jc)({editingGroupId:b.editingGroupId,selectedElementIds:c},this.scene.getNonDeletedElements(),b,this),selectedLinearElement:1===e.length&&(0,F.cc)(e[0])?new F.pj(e[0]):null,showHyperlinkPopup:!!(1===e.length&&(e[0].link||(0,F.Xb)(e[0])))&&"info"}})}}})}handlePointerMoveOverScrollbars(a,b){if(b.scrollbars.isOverHorizontal){let c=a.clientX,d=c-b.lastCoords.x;return this.translateCanvas({scrollX:this.state.scrollX-d/this.state.zoom.value}),b.lastCoords.x=c,!0}if(b.scrollbars.isOverVertical){let c=a.clientY,d=c-b.lastCoords.y;return this.translateCanvas({scrollY:this.state.scrollY-d/this.state.zoom.value}),b.lastCoords.y=c,!0}return!1}onPointerUpFromPointerDownHandler(a){return ju(b=>{this.removePointer(b),a.eventListeners.onMove&&a.eventListeners.onMove.flush();let{newElement:c,resizingElement:d,croppingElementId:e,multiElement:f,activeTool:g,isResizing:h,isRotating:i,isCropping:j}=this.state;this.setState(a=>({isResizing:!1,isRotating:!1,isCropping:!1,resizingElement:null,selectionElement:null,frameToHighlight:null,elementsToHighlight:null,cursorButton:"up",snapLines:(0,F.Ob)(a.snapLines,[]),originSnapOffset:null})),this.lastPointerMoveCoords=null,F.ej.setReferenceSnapPoints(null),F.ej.setVisibleGaps(null),this.savePointer(b.clientX,b.clientY,"up"),this.setState({selectedElementsAreBeingDragged:!1});let k=this.scene.getNonDeletedElementsMap();if(a.drag.hasOccurred&&a.hit?.element?.id){let b=k.get(a.hit.element.id);(0,F.ic)(b)&&b.boundElements?.filter(a=>"arrow"===a.type).map(a=>k.get(a.id)).filter(a=>(0,F.ec)(a)).forEach(a=>{a&&(0,F.Pj)(a,{},!0)})}if(this.state.editingLinearElement)if(a.boxSelection.hasOccurred||a.hit?.element?.id===this.state.editingLinearElement.elementId){let a=F.pj.handlePointerUp(b,this.state.editingLinearElement,this.state,this.scene);a!==this.state.editingLinearElement&&this.setState({editingLinearElement:a,suggestedBindings:[]})}else this.actionManager.executeAction(eC);else if(this.state.selectedLinearElement){if(this.state.selectedLinearElement.elbowed){let a=F.pj.getElement(this.state.selectedLinearElement.elementId,this.scene.getNonDeletedElementsMap());a&&(0,F.Pj)(a,{},!0)}if(a.hit?.element?.id!==this.state.selectedLinearElement.elementId)this.scene.getSelectedElements(this.state).length>1&&this.setState({selectedLinearElement:null});else{let a=F.pj.handlePointerUp(b,this.state.selectedLinearElement,this.state,this.scene),{startBindingElement:c,endBindingElement:d}=a,e=this.scene.getElement(a.elementId);(0,F.gc)(e)&&(0,F.Ig)(e,c,d,k,this.scene),a!==this.state.selectedLinearElement&&this.setState({selectedLinearElement:{...a,selectedPointsIndices:null},suggestedBindings:[]})}}if(this.missingPointerEventCleanupEmitter.clear(),window.removeEventListener("pointermove",a.eventListeners.onMove),window.removeEventListener("pointerup",a.eventListeners.onUp),window.removeEventListener("keydown",a.eventListeners.onKeyDown),window.removeEventListener("keyup",a.eventListeners.onKeyUp),this.state.pendingImageElementId&&this.setState({pendingImageElementId:null}),this.props?.onPointerUp?.(g,a),this.onPointerUpEmitter.trigger(this.state.activeTool,a,b),c?.type==="freedraw"){let a=(0,F.lb)(b,this.state),d=c.points,e=a.x-c.x,f=a.y-c.y;e===d[0][0]&&f===d[0][1]&&(f+=1e-4,e+=1e-4);let g=c.simulatePressure?[]:[...c.pressures,b.pressure];(0,F.Pj)(c,{points:[...d,(0,F.Ua)(e,f)],pressures:g,lastCommittedPoint:(0,F.Ua)(e,f)}),this.actionManager.executeAction(eC);return}if((0,F.Wb)(c)){try{this.initializeImageDimensions(c),this.setState({selectedElementIds:(0,F.xk)({[c.id]:!0},this.state)},()=>{this.actionManager.executeAction(eC)})}catch(a){console.error(a),this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(a=>a.id!==c.id)),this.actionManager.executeAction(eC)}return}if((0,F.cc)(c)){c.points.length>1&&this.store.shouldCaptureIncrement();let d=(0,F.lb)(b,this.state);a.drag.hasOccurred||!c||f?a.drag.hasOccurred&&!f&&((0,F.Fg)(this.state)&&(0,F.gc)(c,!1)&&(0,F.Lg)(c,this.state,d,this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements()),this.setState({suggestedBindings:[],startBoundElement:null}),g.locked?this.setState(a=>({newElement:null})):((0,F.ad)(this.interactiveCanvas),this.setState(a=>({newElement:null,activeTool:(0,F.jb)(this.state,{type:"selection"}),selectedElementIds:(0,F.xk)({...a.selectedElementIds,[c.id]:!0},a),selectedLinearElement:new F.pj(c)}))),this.scene.triggerUpdate()):((0,F.Pj)(c,{points:[...c.points,(0,F.Ua)(d.x-c.x,d.y-c.y)]}),this.setState({multiElement:c,newElement:c}));return}if((0,F._b)(c)){let a=(0,F.xc)((0,F.cb)({fontSize:c.fontSize,fontFamily:c.fontFamily}),c.lineHeight);c.width<a&&(0,F.Pj)(c,{autoResize:!0}),this.resetCursor(),this.handleTextWysiwyg(c,{isExistingElement:!0})}if("selection"!==g.type&&c&&(0,F.Sj)(c))return void this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(a=>a.id!==c.id),appState:{newElement:null},captureUpdate:F.Wg.NEVER});if((0,F.bc)(c)){let a=(0,F.Fi)(this.scene.getElementsIncludingDeleted(),c,this.scene.getNonDeletedElementsMap());this.scene.replaceAllElements((0,F.Ii)(this.scene.getElementsMapIncludingDeleted(),a,c,this.state))}if(c&&((0,F.Pj)(c,(0,F.Wj)(c)),this.scene.triggerUpdate()),a.drag.hasOccurred){let a=(0,F.lb)(b,this.state);if(this.state.selectedLinearElement&&this.state.selectedLinearElement.isDragging){let a=this.scene.getElement(this.state.selectedLinearElement.elementId);if(a?.frameId){let b=(0,F.Gi)(a,k);b&&a&&((0,F.yi)(a,b,this.scene.getNonDeletedElementsMap())||((0,F.Pj)(a,{groupIds:[]}),(0,F.Ji)([a],this.scene.getNonDeletedElementsMap()),this.scene.triggerUpdate()))}}else{let b=this.getTopLayerFrameAtSceneCoords(a),c=this.scene.getSelectedElements(this.state),d=this.scene.getElementsMapIncludingDeleted(),e=a=>{if(a.length>0){for(let b of a){let a=b.groupIds.indexOf(this.state.editingGroupId);(0,F.Pj)(b,{groupIds:b.groupIds.slice(0,a)},!1)}d.forEach(a=>{a.groupIds.length&&(0,F.Qc)(d,a.groupIds[a.groupIds.length-1]).length<2&&(0,F.Pj)(a,{groupIds:[]},!1)}),this.setState({editingGroupId:null})}};if(b&&!this.state.selectedElementIds[b.id]){let a=c.filter(a=>a.frameId!==b.id&&(0,F.Ni)(a,d,this.state));this.state.editingGroupId&&e(a),d=(0,F.Ii)(d,a,b,this.state)}else!b&&this.state.editingGroupId&&e(c.filter(a=>a.frameId&&!(0,F.Ni)(a,d,this.state)));d=(0,F.Mi)(d,this.state,this),this.scene.replaceAllElements(d)}}if(d&&this.store.shouldCaptureIncrement(),d&&(0,F.Sj)(d)&&this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(a=>a.id!==d.id),captureUpdate:F.Wg.NEVER}),a.resize.isResizing){let a=(0,F.Mi)(this.scene.getElementsIncludingDeleted(),this.state,this);for(let b of this.scene.getSelectedElements(this.state).filter(a=>(0,F.bc)(a)))a=(0,F.Li)(a,(0,F.Ei)(this.scene.getElementsIncludingDeleted(),b,this.state,k),b,this);this.scene.replaceAllElements(a)}let l=a.hit.element;this.state.selectedLinearElement?.elementId!==l?.id&&(0,F.cc)(l)&&1===this.scene.getSelectedElements(this.state).length&&this.setState({selectedLinearElement:new F.pj(l)}),e&&(!e||(l||j)&&(!l||l.id===e))||this.finishImageCropping();let m=this.lastPointerDownEvent,n=this.lastPointerUpEvent||this.lastPointerMoveEvent;if((0,F.Gc)(this.state)&&m&&n){if(this.eraserTrail.endPath(),0===(0,F.Wa)((0,F.Ua)(m.clientX,m.clientY),(0,F.Ua)(n.clientX,n.clientY))){let a=(0,F.lb)({clientX:n.clientX,clientY:n.clientY},this.state);this.getElementsAtPosition(a.x,a.y).forEach(a=>this.elementsPendingErasure.add(a.id))}this.eraseElements();return}if(this.elementsPendingErasure.size&&this.restoreReadyToEraseElements(),!l||a.drag.hasOccurred||a.hit.wasAddedToSelection||this.state.editingLinearElement&&a.boxSelection.hasOccurred||(b.shiftKey&&!this.state.editingLinearElement?this.state.selectedElementIds[l.id]?(0,F.Kc)(this.state,l)?this.setState(a=>{let b={...a.selectedElementIds};for(let a of l.groupIds.flatMap(a=>(0,F.Qc)(this.scene.getNonDeletedElements(),a)))delete b[a.id];return{selectedGroupIds:{...a.selectedElementIds,...l.groupIds.map(a=>({[a]:!1})).reduce((a,b)=>({...a,...b}),{})},selectedElementIds:(0,F.xk)(b,a)}}):this.state.selectedLinearElement?.isDragging||this.setState(a=>{let b={...a.selectedElementIds};delete b[l.id];let c=(0,F.vk)(this.scene.getNonDeletedElements(),{selectedElementIds:b});return{...(0,F.Jc)({editingGroupId:a.editingGroupId,selectedElementIds:b},this.scene.getNonDeletedElements(),a,this),selectedLinearElement:1===c.length&&(0,F.cc)(c[0])?new F.pj(c[0]):a.selectedLinearElement}}):l.frameId&&this.state.selectedElementIds[l.frameId]?this.setState(a=>{let b={...a.selectedElementIds,[l.id]:!0};return delete b[l.frameId],(this.scene.getElement(l.frameId)?.groupIds??[]).flatMap(a=>(0,F.Qc)(this.scene.getNonDeletedElements(),a)).forEach(a=>{delete b[a.id]}),{...(0,F.Jc)({editingGroupId:a.editingGroupId,selectedElementIds:b},this.scene.getNonDeletedElements(),a,this),showHyperlinkPopup:!!(l.link||(0,F.Xb)(l))&&"info"}}):this.setState(a=>({selectedElementIds:(0,F.xk)({...a.selectedElementIds,[l.id]:!0},a)})):this.setState(a=>({...(0,F.Jc)({editingGroupId:a.editingGroupId,selectedElementIds:{[l.id]:!0}},this.scene.getNonDeletedElements(),a,this),selectedLinearElement:(0,F.cc)(l)&&a.selectedLinearElement?.elementId!==l.id?new F.pj(l):a.selectedLinearElement}))),!(l&&(0,F.ec)(l))&&!a.drag.hasOccurred&&!this.state.isResizing&&(l&&(0,F.pg)({x:a.origin.x,y:a.origin.y,element:l,shape:(0,F.tg)(l,this.scene.getNonDeletedElementsMap()),threshold:this.getElementHitThreshold(),frameNameBound:(0,F.bc)(l)?this.frameNameBoundsCache.get(l):null},k)||!l&&a.hit.hasHitCommonBoundingBoxOfSelectedElements)){this.state.editingLinearElement?this.setState({editingLinearElement:null}):this.setState({selectedElementIds:(0,F.xk)({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),(0,F.bd)(this.interactiveCanvas,F.z.AUTO);return}if(!g.locked&&"freedraw"!==g.type&&c&&this.setState(a=>({selectedElementIds:(0,F.xk)({...a.selectedElementIds,[c.id]:!0},a),showHyperlinkPopup:(0,F.Xb)(c)&&!c.link?"editor":a.showHyperlinkPopup})),("selection"!==g.type||(0,F.tk)(this.scene.getNonDeletedElements(),this.state)||!(0,F.Hb)(this.state.previousSelectedElementIds,this.state.selectedElementIds))&&this.store.shouldCaptureIncrement(),a.drag.hasOccurred||h||i||j){let a=this.scene.getSelectedElements(this.state).filter(F.cc);(0,F.Jg)(a,this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements(),this.scene,(0,F.Fg)(this.state),this.state.selectedLinearElement?.selectedPointsIndices??[],this.state.zoom)}"laser"===g.type?this.laserTrails.endPath():(g.locked||"freedraw"===g.type?this.setState({newElement:null,suggestedBindings:[]}):((0,F.ad)(this.interactiveCanvas),this.setState({newElement:null,suggestedBindings:[],activeTool:(0,F.jb)(this.state,{type:"selection"})})),l&&this.lastPointerUpEvent&&this.lastPointerDownEvent&&this.lastPointerUpEvent.timeStamp-this.lastPointerDownEvent.timeStamp<300&&ku.pointers.size<=1&&(0,F.Zb)(l)&&this.isIframeLikeElementCenter(l,this.lastPointerUpEvent,a.origin.x,a.origin.y)&&this.handleEmbeddableCenterClick(l))})}clearSelection(a){this.setState(b=>({selectedElementIds:(0,F.xk)({},b),activeEmbeddable:null,selectedGroupIds:{},editingGroupId:b.editingGroupId&&null!=a&&(0,F.Pc)(a,b.editingGroupId)?b.editingGroupId:null})),this.setState({selectedElementIds:(0,F.xk)({},this.state),activeEmbeddable:null,previousSelectedElementIds:this.state.selectedElementIds})}getTextWysiwygSnappedToCenterPosition(a,b,c,d){if(d){let e=d.x+d.width/2,f=d.y+d.height/2,g=(0,F.Bj)(d,c,this.scene.getNonDeletedElementsMap());if(g&&(e=g.x,f=g.y),Math.hypot(a-e,b-f)<F.x){let{x:a,y:b}=(0,F.mb)({sceneX:e,sceneY:f},c);return{viewportX:a,viewportY:b,elementCenterX:e,elementCenterY:f}}}}getCanvasOffsets(){if(this.excalidrawContainerRef?.current){let{left:a,top:b}=this.excalidrawContainerRef.current.getBoundingClientRect();return{offsetLeft:a,offsetTop:b}}return{offsetLeft:0,offsetTop:0}}async updateLanguage(){let a=c2.find(a=>a.code===this.props.langCode)||c1;await c6(a),this.setAppState({})}};(H.a.MODE===F.D.TEST||H.a.DEV)&&(window.h=window.h||{},Object.defineProperties(window.h,{elements:{configurable:!0,get(){return this.app?.scene.getElementsIncludingDeleted()},set(a){return this.app?.scene.replaceAllElements((0,F.Nj)(a))}},scene:{configurable:!0,get(){return this.app?.scene}}}));var kw=()=>(0,e.jsx)("svg",{viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"ExcalidrawLogo-icon",children:(0,e.jsx)("path",{d:"M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",fill:"currentColor"})}),kx=()=>(0,e.jsxs)("svg",{viewBox:"0 0 450 55",xmlns:"http://www.w3.org/2000/svg",fill:"none",className:"ExcalidrawLogo-text",children:[(0,e.jsx)("path",{d:"M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,e.jsx)("path",{d:"M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,e.jsx)("path",{d:"M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z",transform:"translate(-144.023 -51.76)"}),(0,e.jsx)("path",{d:"m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z",fill:"currentColor",transform:"translate(-144.023 -51.76)"})]}),ky=({style:a,size:b="small",withText:c})=>(0,e.jsxs)("div",{className:`ExcalidrawLogo is-${b}`,style:a,children:[(0,e.jsx)(kw,{}),c&&(0,e.jsx)(kx,{})]}),kz=({icon:a,shortcut:b,children:c})=>{let d=kb();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"welcome-screen-menu-item__icon",children:a}),(0,e.jsx)("div",{className:"welcome-screen-menu-item__text",children:c}),b&&!d.editor.isMobile&&(0,e.jsx)("div",{className:"welcome-screen-menu-item__shortcut",children:b})]})};kz.displayName="WelcomeScreenMenuItemContent";var kA=({onSelect:a,children:b,icon:c,shortcut:d,className:f="",...g})=>(0,e.jsx)("button",{...g,type:"button",className:`welcome-screen-menu-item ${f}`,onClick:a,children:(0,e.jsx)(kz,{icon:c,shortcut:d,children:b})});kA.displayName="WelcomeScreenMenuItem";var kB=({children:a,href:b,icon:c,shortcut:d,className:f="",...g})=>(0,e.jsx)("a",{...g,className:`welcome-screen-menu-item ${f}`,href:b,target:"_blank",rel:"noreferrer",children:(0,e.jsx)(kz,{icon:c,shortcut:d,children:a})});kB.displayName="WelcomeScreenMenuItemLink";var kC=({children:a})=>{let{WelcomeScreenCenterTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:(0,e.jsx)("div",{className:"welcome-screen-center",children:a||(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(kD,{}),(0,e.jsx)(kE,{children:c8("welcomeScreen.defaults.center_heading")}),(0,e.jsxs)(kF,{children:[(0,e.jsx)(kH,{}),(0,e.jsx)(kG,{})]})]})})})};kC.displayName="Center";var kD=({children:a})=>(0,e.jsx)("div",{className:"welcome-screen-center__logo excalifont welcome-screen-decor",children:a||(0,e.jsx)(ky,{withText:!0})});kD.displayName="Logo";var kE=({children:a})=>(0,e.jsx)("div",{className:"welcome-screen-center__heading welcome-screen-decor excalifont",children:a});kE.displayName="Heading";var kF=({children:a})=>(0,e.jsx)("div",{className:"welcome-screen-menu",children:a});kF.displayName="Menu";var kG=()=>{let a=kg();return(0,e.jsx)(kA,{onSelect:()=>a.executeAction(eV),shortcut:"?",icon:F.Bd,children:c8("helpDialog.title")})};kG.displayName="MenuItemHelp";var kH=()=>{let a=L.default.useContext(dN),b=kg();return a.viewModeEnabled?null:(0,e.jsx)(kA,{onSelect:()=>b.executeAction(eQ),shortcut:gm("loadScene"),icon:F.Ld,children:c8("buttons.load")})};kH.displayName="MenuItemLoadScene";var kI=({onSelect:a})=>{let{t:b}=da();return(0,e.jsx)(kA,{shortcut:null,onSelect:a,icon:F.fe,children:b("labels.liveCollaboration")})};kI.displayName="MenuItemLiveCollaborationTrigger",kC.Logo=kD,kC.Heading=kE,kC.Menu=kF,kC.MenuItem=kA,kC.MenuItemLink=kB,kC.MenuItemHelp=kG,kC.MenuItemLoadScene=kH,kC.MenuItemLiveCollaborationTrigger=kI;var kJ=({children:a})=>{let{WelcomeScreenMenuHintTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:(0,e.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu",children:[F.ld,(0,e.jsx)("div",{className:"welcome-screen-decor-hint__label",children:a||c8("welcomeScreen.defaults.menuHint")})]})})};kJ.displayName="MenuHint";var kK=({children:a})=>{let{WelcomeScreenToolbarHintTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:(0,e.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar",children:[(0,e.jsx)("div",{className:"welcome-screen-decor-hint__label",children:a||c8("welcomeScreen.defaults.toolbarHint")}),F.nd]})})};kK.displayName="ToolbarHint";var kL=({children:a})=>{let{WelcomeScreenHelpHintTunnel:b}=L.default.useContext(gr);return(0,e.jsx)(b.In,{children:(0,e.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help",children:[(0,e.jsx)("div",{children:a||c8("welcomeScreen.defaults.helpHint")}),F.md]})})};kL.displayName="HelpHint";var kM=a=>(0,e.jsx)(e.Fragment,{children:a.children||(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(kC,{}),(0,e.jsx)(kJ,{}),(0,e.jsx)(kK,{}),(0,e.jsx)(kL,{})]})});kM.displayName="WelcomeScreen",kM.Center=kC,kM.Hints={MenuHint:kJ,ToolbarHint:kK,HelpHint:kL},(0,bO.default)((a,b,c)=>{if(H.a.DEV||H.a.MODE===F.D.TEST||window?.DEBUG_FRACTIONAL_INDICES){let d=(0,F.Nj)(a.map(a=>({...a})));(0,F.Kj)(d,{shouldThrow:H.a.DEV||H.a.MODE===F.D.TEST,includeBoundTextValidation:!0,reconciliationContext:{localElements:b,remoteElements:c}})}},6e4,{leading:!0,trailing:!1}),Array.prototype.at||Object.defineProperty(Array.prototype,"at",{value:function(a){if((a=Math.trunc(a)||0)<0&&(a+=this.length),!(a<0||a>=this.length))return this[a]},writable:!0,enumerable:!1,configurable:!0}),Element.prototype.replaceChildren||(Element.prototype.replaceChildren=function(...a){this.innerHTML="",this.append(...a)}),L.default.memo(b=>{let{onChange:c,initialData:d,excalidrawAPI:f,isCollaborating:g=!1,onPointerUpdate:h,renderTopRightUI:i,langCode:j=c1.code,viewModeEnabled:k,zenModeEnabled:l,gridModeEnabled:m,libraryReturnUrl:n,theme:o,name:p,renderCustomStats:q,onPaste:r,detectScroll:s=!0,handleKeyboardGlobally:t=!1,onLibraryChange:u,autoFocus:v=!1,generateIdForFile:w,onLinkOpen:x,generateLinkForSelection:y,onPointerDown:z,onPointerUp:A,onScrollChange:B,onDuplicate:C,children:D,validateEmbeddable:E,renderEmbeddable:G,aiEnabled:H,showDeprecatedFonts:I}=b,J=b.UIOptions?.canvasActions,K={...b.UIOptions,canvasActions:{...F.ga.canvasActions,...J},tools:{image:b.UIOptions?.tools?.image??!0}};return J?.export&&(K.canvasActions.export.saveFileToDisk=J.export?.saveFileToDisk??F.ga.canvasActions.export.saveFileToDisk),null===K.canvasActions.toggleTheme&&typeof o>"u"&&(K.canvasActions.toggleTheme=!0),(0,L.useEffect)(()=>{(async()=>{await a.A(762213)})();let b=a=>{"number"==typeof a.scale&&1!==a.scale&&a.preventDefault()};return document.addEventListener("touchmove",b,{passive:!1}),()=>{document.removeEventListener("touchmove",b)}},[]),(0,e.jsx)(c$,{store:c_,children:(0,e.jsx)(dd,{langCode:j,theme:o,children:(0,e.jsx)(kv,{onChange:c,initialData:d,excalidrawAPI:f,isCollaborating:g,onPointerUpdate:h,renderTopRightUI:i,langCode:j,viewModeEnabled:k,zenModeEnabled:l,gridModeEnabled:m,libraryReturnUrl:n,theme:o,name:p,renderCustomStats:q,UIOptions:K,onPaste:r,detectScroll:s,handleKeyboardGlobally:t,onLibraryChange:u,autoFocus:v,generateIdForFile:w,onLinkOpen:x,generateLinkForSelection:y,onPointerDown:z,onPointerUp:A,onScrollChange:B,onDuplicate:C,validateEmbeddable:E,renderEmbeddable:G,aiEnabled:!1!==H,showDeprecatedFonts:I,children:D})})})},(a,b)=>{if(a.children!==b.children)return!1;let{initialData:c,UIOptions:d={},...e}=a,{initialData:f,UIOptions:g={},...h}=b,i=Object.keys(d),j=Object.keys(g);return i.length===j.length&&i.every(a=>"canvasActions"===a?Object.keys(d.canvasActions).every(a=>"export"===a&&d?.canvasActions?.export&&g?.canvasActions?.export?d.canvasActions.export.saveFileToDisk===g.canvasActions.export.saveFileToDisk:d?.canvasActions?.[a]===g?.canvasActions?.[a]):d[a]===g[a])&&(0,F.Hb)(e,h)}).displayName="Excalidraw";var kN=a.i(203604),kO=a.i(304692);let kP=(0,D.default)(async()=>{},{loadableGenerated:{modules:[743771]},ssr:!1,loading:()=>(0,e.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Loading canvas…"})});function kQ(a){if(null===a)throw Error("Canvas file could not be loaded.");if(""===a.trim())return{elements:[]};let b=JSON.parse(a);if(!b||"object"!=typeof b||!Array.isArray(b.elements))throw Error("Canvas JSON must contain an elements array.");return b}function kR(a){let b={...a};return delete b.theme,delete b.scrollX,delete b.scrollY,delete b.zoom,delete b.selectedElementIds,delete b.editingElement,delete b.resizingElement,delete b.newElement,delete b.multiElement,delete b.selectionElement,b}function kS(a){let b=JSON.parse((0,F.Jh)(a.elements,a.appState??{},a.files??{},"database"));return b.appState&&(b.appState=kR(b.appState)),a.files&&Object.keys(a.files).length>0&&(b.files=a.files),JSON.stringify(b,null,2)}function kT({content:a,initialSha:b,path:c,title:d,readOnly:f=!1}){let g="u">typeof document&&document.documentElement.classList.contains("dark")?"dark":"light",h=(0,m.useMemo)(()=>{try{let b=kQ(a);return{value:b,normalized:kS(b),error:null}}catch(a){return{value:null,normalized:"",error:a instanceof Error?a.message:"Invalid canvas JSON."}}},[a]),[i,j]=(0,m.useState)(null),k=(0,m.useRef)(null),[l,n]=(0,m.useState)(h.normalized),p=(0,m.useRef)(h.normalized),[q,r]=(0,m.useState)(b),s=(0,m.useRef)(b),[t,u]=(0,m.useState)(null),[v,w]=(0,m.useState)(null),x=(0,m.useRef)(null),y=(0,m.useRef)(!1),z=(0,m.useRef)(!1),A=(0,m.useRef)(()=>{});(0,m.useEffect)(()=>{n(h.normalized),p.current=h.normalized,r(b),s.current=b},[b,h.normalized]);let B=(0,m.useCallback)(async()=>{let a=k.current;if(a){if(y.current){z.current=!0;return}y.current=!0,u("saving"),w(null);try{let b=(0,F.Jh)(a.getSceneElements(),a.getAppState(),a.getFiles(),"database"),d=JSON.parse(b);d.appState&&(d.appState=kR(d.appState));let e=a.getFiles();Object.keys(e).length>0&&(d.files=e);let f=JSON.stringify(d,null,2);if(f===p.current)return void u("saved");let g=await (0,kO.wsFetch)("/api/wiki/content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:c,content:f,baseSha:s.current})});if(g.ok){let a=await g.json();p.current=f,n(f),s.current=a.sha??s.current,r(s.current),u("saved");return}let h=await g.json();if(409===g.status&&"STALE_SHA"===h.error){let b=await (0,kO.wsFetch)(`/api/wiki/content?path=${encodeURIComponent(c)}`);if(!b.ok)throw Error("Could not reload canvas after conflict.");let d=await b.json(),e=kQ(d.content),f=kS(e);a.updateScene({elements:e.elements,appState:kR(e.appState??{})}),e.files&&a.addFiles(Object.values(e.files)),p.current=f,n(f),s.current=b.headers.get("X-Wiki-Sha256"),r(s.current),u("reloaded");return}throw Error(h.error??"Save failed")}catch(a){w(a instanceof Error?a.message:"Save failed"),u("error")}finally{y.current=!1,z.current&&(z.current=!1,x.current=setTimeout(()=>{x.current=null,A.current()},800))}}},[c]);A.current=B;let C=(0,m.useCallback)(()=>{x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{x.current=null,B()},800)},[B]);return(0,m.useEffect)(()=>()=>{x.current&&(clearTimeout(x.current),x.current=null,A.current())},[]),(0,e.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[(0,e.jsx)(kN.ViewerToolbar,{path:c,badge:"CANVAS",children:(0,e.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[(0,e.jsx)(E.PencilRuler,{className:"h-3.5 w-3.5 text-violet-500"}),f?"Read-only":"saving"===t?"Saving…":"saved"===t?"Saved":"reloaded"===t?"Reloaded":"Editable"]})}),h.error?(0,e.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,e.jsx)(E.PencilRuler,{className:"h-10 w-10 text-destructive"}),(0,e.jsx)("p",{className:"font-medium text-destructive",children:"Could not render canvas"}),(0,e.jsx)("p",{className:"max-w-lg text-sm text-muted-foreground",children:h.error}),(0,e.jsx)(o.Button,{variant:"outline",size:"sm",onClick:()=>window.location.reload(),children:"Reload"})]}):(0,e.jsxs)("div",{className:"min-h-0 flex-1 bg-background",children:[(0,e.jsx)(kP,{initialData:h.value,excalidrawAPI:a=>{k.current=a,j(a)},onChange:()=>{!f&&i&&C()},viewModeEnabled:f,theme:g,name:d,autoFocus:!1}),v&&(0,e.jsx)("p",{className:"px-3 py-1 text-xs text-destructive",children:v})]})]})}var kU=a.i(260246);function kV(a){let b=a.lastIndexOf(".");return b<0?"":a.slice(b+1).toLowerCase()}function kW(a){let b=kV(a);return["md","markdown"].includes(b)?"markdown":"excalidraw"===b?"canvas":["csv","tsv"].includes(b)?"csv":["pdf"].includes(b)?"pdf":["html","htm"].includes(b)?"html":["png","jpg","jpeg","gif","webp","svg","avif","ico","bmp"].includes(b)?"image":["mp4","webm","mov","m4v","mp3","wav","ogg","m4a","aac"].includes(b)?"media":["txt","log","ini","env","conf"].includes(b)?"text":["py","js","ts","tsx","jsx","go","rs","java","c","cpp","h","sh","bash","zsh","rb","php","swift","kt","lua","sql","yaml","yml","toml","json","xml","css","scss","mmd","mermaid"].includes(b)?"source":"binary"}function kX({content:a,filename:b,filePath:c,token:d}){switch(kW(b)){case"markdown":return(0,e.jsx)(kY,{content:a});case"canvas":return(0,e.jsx)(kT,{content:a,initialSha:null,path:c,title:b,readOnly:!0});case"image":return(0,e.jsx)(kZ,{filename:b,token:d});case"pdf":return(0,e.jsx)(k$,{filename:b,token:d});case"media":return(0,e.jsx)(k_,{filename:b,token:d});case"html":return(0,e.jsx)(k0,{content:a,filename:b});case"csv":return(0,e.jsx)(k2,{content:a});case"source":case"text":return(0,e.jsx)(k1,{content:a,filename:b});case"binary":return(0,e.jsx)(k3,{filename:b,token:d})}}function kY({content:a}){let[b,c]=(0,m.useState)("");return(0,m.useEffect)(()=>{let b=!1;return(0,kU.markdownToHtml)(a,{sanitize:!0}).then(a=>{b||c(a)}),()=>{b=!0}},[a]),(0,e.jsx)("div",{className:"flex-1 overflow-auto",children:(0,e.jsx)("div",{className:"mx-auto max-w-4xl px-4 py-8 prose prose-neutral dark:prose-invert",children:(0,e.jsx)("div",{dangerouslySetInnerHTML:{__html:b}})})})}function kZ({filename:a,token:b}){let c=(0,n.apiUrl)(`/api/share/${b}/asset`);return(0,e.jsx)("div",{className:"flex-1 flex items-center justify-center p-8 bg-[repeating-conic-gradient(hsl(var(--muted))_0%_25%,transparent_0%_50%)] bg-[length:20px_20px]",children:(0,e.jsx)("img",{src:c,alt:a,className:"max-w-full max-h-[80vh] object-contain rounded-sm"})})}function k$({filename:a,token:b}){let c=(0,n.apiUrl)(`/api/share/${b}/asset`);return(0,e.jsx)("div",{className:"flex-1 flex flex-col min-h-0",children:(0,e.jsx)("iframe",{src:c,title:a,className:"flex-1 w-full border-0",style:{minHeight:"80vh"}})})}function k_({filename:a,token:b}){let c=(0,n.apiUrl)(`/api/share/${b}/asset`),d=["mp4","webm","mov","m4v"].includes(kV(a));return(0,e.jsx)("div",{className:"flex-1 flex items-center justify-center p-8",children:d?(0,e.jsx)("video",{controls:!0,className:"max-w-full max-h-[80vh] rounded-sm",src:c}):(0,e.jsxs)("div",{className:"w-full max-w-md",children:[(0,e.jsx)("audio",{controls:!0,className:"w-full",src:c}),(0,e.jsx)("p",{className:"text-center text-sm text-muted-foreground mt-3",children:a})]})})}function k0({content:a,filename:b}){let[c,d]=(0,m.useState)(!1);return(0,e.jsxs)("div",{className:"flex-1 flex flex-col min-h-0",children:[(0,e.jsx)("div",{className:"flex items-center justify-end gap-2 px-4 py-2 border-b bg-muted/30",children:(0,e.jsx)(o.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>d(a=>!a),children:c?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(C.Ban,{className:"h-3.5 w-3.5"}),"Disable scripts"]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(B.Play,{className:"h-3.5 w-3.5"}),"Enable scripts"]})})}),(0,e.jsx)("iframe",{srcDoc:a,title:b,className:"flex-1 w-full border-0 bg-white",style:{minHeight:"80vh"},sandbox:c?"allow-scripts allow-forms allow-popups allow-top-navigation-by-user-activation":"allow-forms allow-popups allow-top-navigation-by-user-activation"},c?"scripts-on":"scripts-off")]})}function k1({content:a,filename:b}){let c=a.split("\n"),d=c.length,[f,g]=(0,m.useState)(d<=500),h=f?c:c.slice(0,500);return(0,e.jsx)("div",{className:"flex-1 overflow-auto",children:(0,e.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,e.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b bg-muted/30",children:[(0,e.jsx)("span",{className:"text-xs text-muted-foreground",children:b}),(0,e.jsxs)("span",{className:"text-xs text-muted-foreground",children:[d.toLocaleString()," lines"]})]}),(0,e.jsx)("pre",{className:"text-[13px] font-mono leading-relaxed",children:(0,e.jsx)("table",{className:"w-full border-collapse",children:(0,e.jsx)("tbody",{children:h.map((a,b)=>(0,e.jsxs)("tr",{className:"hover:bg-muted/50",children:[(0,e.jsx)("td",{className:"select-none text-right pr-4 pl-4 py-0 text-muted-foreground/50 text-xs w-[1%] whitespace-nowrap align-top",children:b+1}),(0,e.jsx)("td",{className:"pr-4 py-0 whitespace-pre-wrap break-all",children:a||" "})]},b))})})}),!f&&d>500&&(0,e.jsx)("div",{className:"flex justify-center py-4 border-t",children:(0,e.jsxs)(o.Button,{size:"sm",variant:"ghost",onClick:()=>g(!0),children:["Show all ",d.toLocaleString()," lines"]})})]})})}function k2({content:a}){let b=(0,m.useMemo)(()=>a.split("\n").filter(Boolean).map(a=>{let b=[],c="",d=!1;for(let e=0;e<a.length;e++){let f=a[e];'"'===f?d=!d:","!==f&&" "!==f||d?c+=f:(b.push(c.trim()),c="")}return b.push(c.trim()),b}),[a]);if(0===b.length)return null;let c=b[0],d=b.slice(1);return(0,e.jsx)("div",{className:"flex-1 overflow-auto",children:(0,e.jsx)("div",{className:"mx-auto max-w-6xl p-4",children:(0,e.jsxs)("table",{className:"w-full text-sm border-collapse",children:[(0,e.jsx)("thead",{children:(0,e.jsx)("tr",{children:c.map((a,b)=>(0,e.jsx)("th",{className:"text-left px-3 py-2 border-b-2 border-border font-medium bg-muted/50 whitespace-nowrap",children:a},b))})}),(0,e.jsx)("tbody",{children:d.map((a,b)=>(0,e.jsx)("tr",{className:"hover:bg-muted/30",children:a.map((a,b)=>(0,e.jsx)("td",{className:"px-3 py-1.5 border-b border-border/50 whitespace-nowrap",children:a},b))},b))})]})})})}function k3({filename:a,token:b}){let c=(0,n.apiUrl)(`/api/share/${b}/asset`);return(0,e.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 p-8",children:[(0,e.jsx)(j.FileText,{className:"h-12 w-12 text-muted-foreground"}),(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:a}),(0,e.jsx)("a",{href:c,download:a,children:(0,e.jsxs)(o.Button,{size:"sm",variant:"outline",className:"gap-1.5",children:[(0,e.jsx)(A.Download,{className:"h-3.5 w-3.5"}),"Download file"]})})]})}a.s(["default",0,function({params:a}){let[b,c]=(0,m.useState)(null),[d,s]=(0,m.useState)({kind:"loading"}),[t,u]=(0,m.useState)(""),[w,x]=(0,m.useState)(!1),[y,A]=(0,m.useState)(!1),[B,C]=(0,m.useState)(null),D="content"===d.kind?kW(d.filename):"markdown",E=["markdown","source","text","csv","html"].includes(D),F=a=>{C(a),setTimeout(()=>C(null),2e3)},G=async()=>{if("content"===d.kind)try{await navigator.clipboard.writeText(d.content),F("raw")}catch{}},H=(0,m.useCallback)(async()=>{if(b){s({kind:"loading"});try{let a=await fetch((0,n.apiUrl)(`/api/share/${b}`)),c=await a.json();a.ok&&"string"==typeof c.content?s({kind:"content",content:c.content,filename:String(c.filename??"document"),filePath:String(c.filePath??c.filename??"document"),viewCount:"number"==typeof c.viewCount?c.viewCount:0}):401===a.status&&c.protected?s({kind:"password",message:String(c.message??"")}):410===a.status?s({kind:"error",title:"Link unavailable",message:String(c.message??"This share link is no longer available.")}):404===a.status?s({kind:"error",title:"Not found",message:"This share link does not exist."}):s({kind:"error",title:"Error",message:String(c.message??"Something went wrong. Try again later.")})}catch{s({kind:"error",title:"Connection error",message:"Could not reach the server. Check your connection."})}}},[b]);(0,m.useEffect)(()=>{a.then(a=>c(a.token))},[a]),(0,m.useEffect)(()=>{b&&H()},[b,H]);let I=async a=>{if(a.preventDefault(),t.trim()&&b){x(!0),A(!1);try{let a=await fetch((0,n.apiUrl)(`/api/share/${b}`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:t.trim()})}),c=await a.json();a.ok&&"string"==typeof c.content?s({kind:"content",content:c.content,filename:String(c.filename??"document"),filePath:String(c.filePath??c.filename??"document"),viewCount:"number"==typeof c.viewCount?c.viewCount:0}):403===a.status?(A(!0),s({kind:"password",message:"Incorrect password"})):429===a.status?s({kind:"password",message:"Too many attempts. Try again later."}):s({kind:"error",title:"Error",message:String(c.message??"Something went wrong.")})}catch{s({kind:"error",title:"Connection error",message:"Could not reach the server."})}x(!1)}};return(0,e.jsx)(r.ThemeProvider,{children:(0,e.jsxs)("div",{className:"min-h-screen flex flex-col bg-background text-foreground",children:[(0,e.jsx)("header",{className:"border-b border-border bg-muted/50",children:(0,e.jsx)("div",{className:"mx-auto flex max-w-4xl items-center gap-2 px-4 py-2",children:"content"===d.kind?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[(0,e.jsx)("span",{className:"h-2 w-2 rounded-full bg-success shrink-0"}),(0,e.jsx)("span",{className:"text-sm truncate",title:d.filename,children:d.filename})]}),(0,e.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,e.jsxs)(o.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs",onClick:()=>{b&&(navigator.clipboard.writeText(`${window.location.origin}/s/${b}`),F("link"))},title:"Copy share link",children:["link"===B?(0,e.jsx)(l.Check,{className:"h-3.5 w-3.5 text-success"}):(0,e.jsx)(k.Copy,{className:"h-3.5 w-3.5"}),"Link"]}),E&&(0,e.jsxs)(o.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs",onClick:G,title:"Copy raw content",children:["raw"===B?(0,e.jsx)(l.Check,{className:"h-3.5 w-3.5 text-success"}):(0,e.jsx)(j.FileText,{className:"h-3.5 w-3.5"}),"Raw"]}),"markdown"===D&&(0,e.jsx)(v,{}),(0,e.jsx)(z,{}),(0,e.jsxs)("span",{className:"text-xs text-muted-foreground ml-2",children:[d.viewCount," view",1!==d.viewCount?"s":""]})]})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(g.Eye,{className:"h-4 w-4 text-muted-foreground"}),(0,e.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Shared document"})]})})}),"loading"===d.kind&&(0,e.jsx)("div",{className:"flex-1 flex items-center justify-center",children:(0,e.jsx)(i.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})}),"password"===d.kind&&(0,e.jsx)("div",{className:"flex-1 flex items-center justify-center px-4",children:(0,e.jsx)(q.Card,{className:"max-w-sm w-full p-6",children:(0,e.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center",children:[(0,e.jsx)("div",{className:"rounded-full bg-muted p-3",children:(0,e.jsx)(h.Lock,{className:"h-6 w-6 text-muted-foreground"})}),(0,e.jsxs)("div",{className:"space-y-1",children:[(0,e.jsx)("h1",{className:"text-base font-medium",children:"Password required"}),(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:d.message||"This document is password-protected."})]}),(0,e.jsxs)("form",{onSubmit:I,className:"w-full space-y-3",children:[(0,e.jsx)(p.Input,{type:"password",placeholder:"Enter password",value:t,onChange:a=>{u(a.target.value),A(!1)},autoFocus:!0}),y&&(0,e.jsxs)("p",{className:"text-xs text-destructive flex items-center gap-1",children:[(0,e.jsx)(f.AlertCircle,{className:"h-3 w-3"}),"Wrong password. Try again."]}),(0,e.jsx)(o.Button,{type:"submit",className:"w-full",disabled:w||!t.trim(),children:w?(0,e.jsx)(i.Loader2,{className:"h-4 w-4 animate-spin"}):"View document"})]})]})})}),"error"===d.kind&&(0,e.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 px-4 text-center",children:[(0,e.jsx)("div",{className:"rounded-full bg-muted p-3",children:(0,e.jsx)(f.AlertCircle,{className:"h-6 w-6 text-muted-foreground"})}),(0,e.jsxs)("div",{className:"space-y-1",children:[(0,e.jsx)("h1",{className:"text-base font-medium",children:d.title}),(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:d.message})]})]}),"content"===d.kind&&(0,e.jsx)(kX,{content:d.content,filename:d.filename,filePath:d.filePath,token:b}),"content"===d.kind&&(0,e.jsx)("footer",{className:"border-t border-border bg-muted/30",children:(0,e.jsxs)("div",{className:"mx-auto flex max-w-4xl items-center gap-2 px-4 py-2",children:[(0,e.jsx)(j.FileText,{className:"h-3 w-3 text-muted-foreground"}),(0,e.jsx)("span",{className:"text-xs text-muted-foreground",children:d.filename})]})})]})})}],973220)}];
109
-
110
- //# sourceMappingURL=_0sr4wj.._.js.map