@powerhousedao/connect 1.0.4 → 1.0.6-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +1 -0
  3. package/dist/.env +11 -6
  4. package/dist/assets/app-CZFevfPO.js +80396 -0
  5. package/dist/assets/app-CcH3qGge.css +5805 -0
  6. package/dist/assets/app-loader-DGByWxSG.css +5640 -0
  7. package/dist/assets/app-loader-rzulzXOr.js +31632 -0
  8. package/dist/assets/ccip-BKZmtXFN.js +170 -0
  9. package/dist/assets/connect-loader-CvOC68Ih.mp4 +0 -0
  10. package/dist/assets/content-azEaxANU.js +3967 -0
  11. package/dist/assets/home-bg-BEhF9NuW.png +0 -0
  12. package/dist/assets/index-BFEi7qat.js +2560 -0
  13. package/dist/assets/index-C4refwHP.js +46565 -0
  14. package/dist/assets/index-D4MUN7kw.js +12 -0
  15. package/dist/assets/main.BGdXiSUq.js +105 -0
  16. package/dist/assets/powerhouse-rounded-CeKGGUG4.png +0 -0
  17. package/dist/assets/renown-short-hover-BiSLBV7L.png +0 -0
  18. package/dist/assets/rwa-report-Bb0W5-ac.png +0 -0
  19. package/dist/assets/style-Ce3V83BE.css +1658 -0
  20. package/dist/external-packages.js +5 -0
  21. package/dist/hmr.js +4 -0
  22. package/dist/icon.ico +0 -0
  23. package/dist/index.html +48 -10
  24. package/dist/modules/@powerhousedao/reactor-browser/chunk-2ESYSVXG.js +48 -0
  25. package/dist/modules/@powerhousedao/reactor-browser/chunk-2ONJ2PX4.js +50 -0
  26. package/dist/modules/@powerhousedao/reactor-browser/chunk-2X2M6BYG.js +2542 -0
  27. package/dist/modules/@powerhousedao/reactor-browser/chunk-3C54663M.js +178 -0
  28. package/dist/modules/@powerhousedao/reactor-browser/chunk-5QJXNK35.js +113 -0
  29. package/dist/modules/@powerhousedao/reactor-browser/chunk-7OQWVUC5.js +43 -0
  30. package/dist/modules/@powerhousedao/reactor-browser/chunk-C7QRY43M.js +786 -0
  31. package/dist/modules/@powerhousedao/reactor-browser/chunk-CO2RVWYY.js +67 -0
  32. package/dist/modules/@powerhousedao/reactor-browser/chunk-DKDARAJS.js +0 -0
  33. package/dist/modules/@powerhousedao/reactor-browser/chunk-FQF4YAVC.js +11917 -0
  34. package/dist/modules/@powerhousedao/reactor-browser/chunk-GDP7BUIH.js +45 -0
  35. package/dist/modules/@powerhousedao/reactor-browser/chunk-IQTSFTNF.js +48 -0
  36. package/dist/modules/@powerhousedao/reactor-browser/chunk-ISDEPHKP.js +2513 -0
  37. package/dist/modules/@powerhousedao/reactor-browser/chunk-J5TYPY7U.js +36 -0
  38. package/dist/modules/@powerhousedao/reactor-browser/chunk-LH2T6NLN.js +0 -0
  39. package/dist/modules/@powerhousedao/reactor-browser/chunk-LRNZZ3SR.js +14 -0
  40. package/dist/modules/@powerhousedao/reactor-browser/chunk-NHD6VUCD.js +53 -0
  41. package/dist/modules/@powerhousedao/reactor-browser/chunk-OVGOA2P5.js +11 -0
  42. package/dist/modules/@powerhousedao/reactor-browser/chunk-P6NJ6IAQ.js +12 -0
  43. package/dist/modules/@powerhousedao/reactor-browser/chunk-QXHTR6KF.js +0 -0
  44. package/dist/modules/@powerhousedao/reactor-browser/chunk-RGIB4DD4.js +162 -0
  45. package/dist/modules/@powerhousedao/reactor-browser/chunk-SQ5HIKYV.js +14225 -0
  46. package/dist/modules/@powerhousedao/reactor-browser/chunk-U34SEKEB.js +250 -0
  47. package/dist/modules/@powerhousedao/reactor-browser/chunk-U36SV333.js +0 -0
  48. package/dist/modules/@powerhousedao/reactor-browser/chunk-XBTEGV5M.js +17 -0
  49. package/dist/modules/@powerhousedao/reactor-browser/chunk-XV42KZK3.js +82 -0
  50. package/dist/modules/@powerhousedao/reactor-browser/chunk-Y7NTRTMT.js +25 -0
  51. package/dist/modules/@powerhousedao/reactor-browser/chunk-YG67WAIS.js +0 -0
  52. package/dist/modules/@powerhousedao/reactor-browser/chunk-YWKVPJNL.js +52 -0
  53. package/dist/modules/@powerhousedao/reactor-browser/chunk-ZL5IPB6D.js +0 -0
  54. package/dist/modules/@powerhousedao/reactor-browser/context/index.js +16 -0
  55. package/dist/modules/@powerhousedao/reactor-browser/context/read-mode.js +15 -0
  56. package/dist/modules/@powerhousedao/reactor-browser/crypto/browser.js +7 -0
  57. package/dist/modules/@powerhousedao/reactor-browser/crypto/index.js +7 -0
  58. package/dist/modules/@powerhousedao/reactor-browser/document-model.js +10 -0
  59. package/dist/modules/@powerhousedao/reactor-browser/hooks/document-state.js +96 -0
  60. package/dist/modules/@powerhousedao/reactor-browser/hooks/index.js +98 -0
  61. package/dist/modules/@powerhousedao/reactor-browser/hooks/useAddDebouncedOperations.js +11 -0
  62. package/dist/modules/@powerhousedao/reactor-browser/hooks/useConnectCrypto.js +12 -0
  63. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocument.js +7 -0
  64. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDispatch.js +7 -0
  65. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDrives.js +13 -0
  66. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentEditor.js +20 -0
  67. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActions.js +9 -0
  68. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActionsWithUiNodes.js +14 -0
  69. package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveContext.js +9 -0
  70. package/dist/modules/@powerhousedao/reactor-browser/hooks/useUiNodesContext.js +46 -0
  71. package/dist/modules/@powerhousedao/reactor-browser/hooks/useUserPermissions.js +7 -0
  72. package/dist/modules/@powerhousedao/reactor-browser/index.js +125 -0
  73. package/dist/modules/@powerhousedao/reactor-browser/reactor.js +11 -0
  74. package/dist/modules/@powerhousedao/reactor-browser/renown/constants.js +53 -0
  75. package/dist/modules/@powerhousedao/reactor-browser/renown/types.js +1 -0
  76. package/dist/modules/@powerhousedao/reactor-browser/storage/index.js +1 -0
  77. package/dist/modules/@powerhousedao/reactor-browser/storage/types.js +1 -0
  78. package/dist/modules/@powerhousedao/reactor-browser/uiNodes/constants.js +37 -0
  79. package/dist/modules/@powerhousedao/reactor-browser/uiNodes/types.js +1 -0
  80. package/dist/modules/@powerhousedao/reactor-browser/utils/export-document.js +8 -0
  81. package/dist/modules/@powerhousedao/reactor-browser/utils/index.js +9 -0
  82. package/dist/modules/@powerhousedao/reactor-browser/utils/signature.js +10 -0
  83. package/dist/service-worker.js +46 -2
  84. package/dist/swEnv.js +9 -8
  85. package/dist/vite-envs.sh +56 -35
  86. package/nginx.conf +93 -0
  87. package/nginx.sh +10 -0
  88. package/package.json +36 -50
  89. package/dist/assets/ArrowFilledRight-blx8xu7X-D3d8PUWh.js +0 -2
  90. package/dist/assets/ArrowFilledRight-blx8xu7X-D3d8PUWh.js.map +0 -1
  91. package/dist/assets/ArrowLeft-7pYNK4eX-8ZR_YHAJ.js +0 -2
  92. package/dist/assets/ArrowLeft-7pYNK4eX-8ZR_YHAJ.js.map +0 -1
  93. package/dist/assets/ArrowUp-Bbr_dwo_-C5ppCQo4.js +0 -2
  94. package/dist/assets/ArrowUp-Bbr_dwo_-C5ppCQo4.js.map +0 -1
  95. package/dist/assets/BarChart-B0G05Nfd-CHDJ7OaJ.js +0 -2
  96. package/dist/assets/BarChart-B0G05Nfd-CHDJ7OaJ.js.map +0 -1
  97. package/dist/assets/BaseArrowLeft-DBzhFHMt-Dkbf2sWs.js +0 -2
  98. package/dist/assets/BaseArrowLeft-DBzhFHMt-Dkbf2sWs.js.map +0 -1
  99. package/dist/assets/BaseArrowRight-DYQTBWAs-CkkPllYm.js +0 -2
  100. package/dist/assets/BaseArrowRight-DYQTBWAs-CkkPllYm.js.map +0 -1
  101. package/dist/assets/Braces-N-sH2Zyc-3LcexUsR.js +0 -2
  102. package/dist/assets/Braces-N-sH2Zyc-3LcexUsR.js.map +0 -1
  103. package/dist/assets/Branch-CWdBw1_P-CmGdOXsI.js +0 -2
  104. package/dist/assets/Branch-CWdBw1_P-CmGdOXsI.js.map +0 -1
  105. package/dist/assets/BrickGlobe-67zaG6_H-DP0By6z_.js +0 -2
  106. package/dist/assets/BrickGlobe-67zaG6_H-DP0By6z_.js.map +0 -1
  107. package/dist/assets/Briefcase-CedW3KRR-DO5_k15F.js +0 -2
  108. package/dist/assets/Briefcase-CedW3KRR-DO5_k15F.js.map +0 -1
  109. package/dist/assets/Calendar-C-6HV96D-YetudWvP.js +0 -2
  110. package/dist/assets/Calendar-C-6HV96D-YetudWvP.js.map +0 -1
  111. package/dist/assets/Caret-Ep0j0fz2-By3ojfim.js +0 -2
  112. package/dist/assets/Caret-Ep0j0fz2-By3ojfim.js.map +0 -1
  113. package/dist/assets/CaretDown-3X7LFYBf-C43xdKg8.js +0 -2
  114. package/dist/assets/CaretDown-3X7LFYBf-C43xdKg8.js.map +0 -1
  115. package/dist/assets/CaretSort-BkGdLETT-DVOzEEqR.js +0 -2
  116. package/dist/assets/CaretSort-BkGdLETT-DVOzEEqR.js.map +0 -1
  117. package/dist/assets/Check-DV-U4AEq-B582NMZp.js +0 -2
  118. package/dist/assets/Check-DV-U4AEq-B582NMZp.js.map +0 -1
  119. package/dist/assets/CheckCircle-DI5fEgGd-CVF4LDhR.js +0 -2
  120. package/dist/assets/CheckCircle-DI5fEgGd-CVF4LDhR.js.map +0 -1
  121. package/dist/assets/CheckCircleFill-C-F0v5mB-BSW1YMqM.js +0 -2
  122. package/dist/assets/CheckCircleFill-C-F0v5mB-BSW1YMqM.js.map +0 -1
  123. package/dist/assets/Checkmark-BXnfChpo-CyQitGI2.js +0 -2
  124. package/dist/assets/Checkmark-BXnfChpo-CyQitGI2.js.map +0 -1
  125. package/dist/assets/ChevronDown-ouBxrU-k-eUsCPXcB.js +0 -2
  126. package/dist/assets/ChevronDown-ouBxrU-k-eUsCPXcB.js.map +0 -1
  127. package/dist/assets/Circle-n3-Wh4HS-8dOehHQf.js +0 -2
  128. package/dist/assets/Circle-n3-Wh4HS-8dOehHQf.js.map +0 -1
  129. package/dist/assets/CircleInfo-BhZY3C2Q-CZgYK1h2.js +0 -2
  130. package/dist/assets/CircleInfo-BhZY3C2Q-CZgYK1h2.js.map +0 -1
  131. package/dist/assets/ClockFill-Bd0t48q7-CcfHiJtH.js +0 -2
  132. package/dist/assets/ClockFill-Bd0t48q7-CcfHiJtH.js.map +0 -1
  133. package/dist/assets/CloudSlash-B-zJBjaD-CxVyp-Ac.js +0 -2
  134. package/dist/assets/CloudSlash-B-zJBjaD-CxVyp-Ac.js.map +0 -1
  135. package/dist/assets/Collapse-DRDB8Czs-CGcuZQgy.js +0 -2
  136. package/dist/assets/Collapse-DRDB8Czs-CGcuZQgy.js.map +0 -1
  137. package/dist/assets/Connect-Dme-qfKq-CgniLji8.js +0 -2
  138. package/dist/assets/Connect-Dme-qfKq-CgniLji8.js.map +0 -1
  139. package/dist/assets/Discord-CAS0Cj7s-CcsBWpnf.js +0 -2
  140. package/dist/assets/Discord-CAS0Cj7s-CcsBWpnf.js.map +0 -1
  141. package/dist/assets/Drive-GMcgBcIY-CzahDx9j.js +0 -2
  142. package/dist/assets/Drive-GMcgBcIY-CzahDx9j.js.map +0 -1
  143. package/dist/assets/Ellipsis-XK8AwMEC-BuVBeYhB.js +0 -2
  144. package/dist/assets/Ellipsis-XK8AwMEC-BuVBeYhB.js.map +0 -1
  145. package/dist/assets/Error-BmIZ2ZUy-CphzuMLn.js +0 -2
  146. package/dist/assets/Error-BmIZ2ZUy-CphzuMLn.js.map +0 -1
  147. package/dist/assets/Exclamation-CVsNS_QS-DLccamql.js +0 -2
  148. package/dist/assets/Exclamation-CVsNS_QS-DLccamql.js.map +0 -1
  149. package/dist/assets/FilesEarmark-CyrCQy8E-Bhut4E02.js +0 -2
  150. package/dist/assets/FilesEarmark-CyrCQy8E-Bhut4E02.js.map +0 -1
  151. package/dist/assets/FolderClose-DG_qHisc-CH6NoBuu.js +0 -2
  152. package/dist/assets/FolderClose-DG_qHisc-CH6NoBuu.js.map +0 -1
  153. package/dist/assets/FolderOpen-kDoWFkJO-Cciutkdg.js +0 -2
  154. package/dist/assets/FolderOpen-kDoWFkJO-Cciutkdg.js.map +0 -1
  155. package/dist/assets/FolderPlus-CSBSl9lZ-CifD0ek9.js +0 -2
  156. package/dist/assets/FolderPlus-CSBSl9lZ-CifD0ek9.js.map +0 -1
  157. package/dist/assets/Forum-DZ-CkLFh-BwabccAX.js +0 -2
  158. package/dist/assets/Forum-DZ-CkLFh-BwabccAX.js.map +0 -1
  159. package/dist/assets/Gear-cUlHJ4q6-B9R2l_9_.js +0 -2
  160. package/dist/assets/Gear-cUlHJ4q6-B9R2l_9_.js.map +0 -1
  161. package/dist/assets/Github-0PLiINY0-CjkZIHCO.js +0 -2
  162. package/dist/assets/Github-0PLiINY0-CjkZIHCO.js.map +0 -1
  163. package/dist/assets/Globe-CIYqVkpa-CL530H46.js +0 -2
  164. package/dist/assets/Globe-CIYqVkpa-CL530H46.js.map +0 -1
  165. package/dist/assets/GlobeWww-DN4yKujh-Ci7aa5CE.js +0 -2
  166. package/dist/assets/GlobeWww-DN4yKujh-Ci7aa5CE.js.map +0 -1
  167. package/dist/assets/Hdd-Dn_LdJIh-CJ6x9Bve.js +0 -2
  168. package/dist/assets/Hdd-Dn_LdJIh-CJ6x9Bve.js.map +0 -1
  169. package/dist/assets/History-BP4SmaS_-P4WBKyqX.js +0 -2
  170. package/dist/assets/History-BP4SmaS_-P4WBKyqX.js.map +0 -1
  171. package/dist/assets/InfoSquare-C98JaLiz-yPcGR71f.js +0 -2
  172. package/dist/assets/InfoSquare-C98JaLiz-yPcGR71f.js.map +0 -1
  173. package/dist/assets/Link-BF7aZjVu-CXIVQOz6.js +0 -2
  174. package/dist/assets/Link-BF7aZjVu-CXIVQOz6.js.map +0 -1
  175. package/dist/assets/Linkedin-DJwIkS6q-Dkb5Tp_Z.js +0 -2
  176. package/dist/assets/Linkedin-DJwIkS6q-Dkb5Tp_Z.js.map +0 -1
  177. package/dist/assets/Lock-PyaFHdNS-D_qxRTye.js +0 -2
  178. package/dist/assets/Lock-PyaFHdNS-D_qxRTye.js.map +0 -1
  179. package/dist/assets/M-DozhhPMY-DBQw97P_.js +0 -2
  180. package/dist/assets/M-DozhhPMY-DBQw97P_.js.map +0 -1
  181. package/dist/assets/Pencil-D7lvxXIP-D830iveq.js +0 -2
  182. package/dist/assets/Pencil-D7lvxXIP-D830iveq.js.map +0 -1
  183. package/dist/assets/People-CUB8LYKf-CyJmMqcw.js +0 -2
  184. package/dist/assets/People-CUB8LYKf-CyJmMqcw.js.map +0 -1
  185. package/dist/assets/Person-DuL4PQzm-ttQR0nPy.js +0 -2
  186. package/dist/assets/Person-DuL4PQzm-ttQR0nPy.js.map +0 -1
  187. package/dist/assets/Plus-DPFWGJM4-BztpK8li.js +0 -2
  188. package/dist/assets/Plus-DPFWGJM4-BztpK8li.js.map +0 -1
  189. package/dist/assets/PlusCircle-BEnWRjHa-w5zztKGx.js +0 -2
  190. package/dist/assets/PlusCircle-BEnWRjHa-w5zztKGx.js.map +0 -1
  191. package/dist/assets/PowerhouseLogoSmall-CmO95IAS-CDGLkst3.js +0 -2
  192. package/dist/assets/PowerhouseLogoSmall-CmO95IAS-CDGLkst3.js.map +0 -1
  193. package/dist/assets/Project-BlXuclr0-EsBam9d0.js +0 -2
  194. package/dist/assets/Project-BlXuclr0-EsBam9d0.js.map +0 -1
  195. package/dist/assets/RedoArrow-BJeEsiph-BbidqIFP.js +0 -2
  196. package/dist/assets/RedoArrow-BJeEsiph-BbidqIFP.js.map +0 -1
  197. package/dist/assets/Renown-6m7hx37h-CItksi2j.js +0 -2
  198. package/dist/assets/Renown-6m7hx37h-CItksi2j.js.map +0 -1
  199. package/dist/assets/RenownHover-CQ0TZHZv-cYQgnwQW.js +0 -2
  200. package/dist/assets/RenownHover-CQ0TZHZv-cYQgnwQW.js.map +0 -1
  201. package/dist/assets/Ring-DKv0gnwT-CDHLz87h.js +0 -2
  202. package/dist/assets/Ring-DKv0gnwT-CDHLz87h.js.map +0 -1
  203. package/dist/assets/Save-BBxj68pn-BkUvn89C.js +0 -2
  204. package/dist/assets/Save-BBxj68pn-BkUvn89C.js.map +0 -1
  205. package/dist/assets/Search-YUJuRBLe-CecGUkZA.js +0 -2
  206. package/dist/assets/Search-YUJuRBLe-CecGUkZA.js.map +0 -1
  207. package/dist/assets/Server-Bfkkjui1-lBan_3Dm.js +0 -2
  208. package/dist/assets/Server-Bfkkjui1-lBan_3Dm.js.map +0 -1
  209. package/dist/assets/Settings-mbbylBS5-Cca-sV-_.js +0 -2
  210. package/dist/assets/Settings-mbbylBS5-Cca-sV-_.js.map +0 -1
  211. package/dist/assets/Synced-DKJXzPiw-Cui8pDsS.js +0 -2
  212. package/dist/assets/Synced-DKJXzPiw-Cui8pDsS.js.map +0 -1
  213. package/dist/assets/Syncing-aT9WSMFf-2VhhyCcX.js +0 -2
  214. package/dist/assets/Syncing-aT9WSMFf-2VhhyCcX.js.map +0 -1
  215. package/dist/assets/Trash-CgSbHk-P-DIYkVMER.js +0 -2
  216. package/dist/assets/Trash-CgSbHk-P-DIYkVMER.js.map +0 -1
  217. package/dist/assets/TrashFill-DN50ercb-Oqx67xXN.js +0 -2
  218. package/dist/assets/TrashFill-DN50ercb-Oqx67xXN.js.map +0 -1
  219. package/dist/assets/VariantArrowLeft-CnuX59_e-6Zt_Q3tm.js +0 -2
  220. package/dist/assets/VariantArrowLeft-CnuX59_e-6Zt_Q3tm.js.map +0 -1
  221. package/dist/assets/VerticalDots-C8QYf7et-CCxZfvjq.js +0 -2
  222. package/dist/assets/VerticalDots-C8QYf7et-CCxZfvjq.js.map +0 -1
  223. package/dist/assets/WarningFill-WowAvi5P-D5XCckM6.js +0 -2
  224. package/dist/assets/WarningFill-WowAvi5P-D5XCckM6.js.map +0 -1
  225. package/dist/assets/XTwitter-k3Pt8itk-mvLk8TKx.js +0 -2
  226. package/dist/assets/XTwitter-k3Pt8itk-mvLk8TKx.js.map +0 -1
  227. package/dist/assets/Xmark-8qnJCs2Y-CZ3t0Fap.js +0 -2
  228. package/dist/assets/Xmark-8qnJCs2Y-CZ3t0Fap.js.map +0 -1
  229. package/dist/assets/XmarkLight-GHzDR5_F-CloMvuzt.js +0 -2
  230. package/dist/assets/XmarkLight-GHzDR5_F-CloMvuzt.js.map +0 -1
  231. package/dist/assets/Youtube-i8V0IXUU-Bkiwoayp.js +0 -2
  232. package/dist/assets/Youtube-i8V0IXUU-Bkiwoayp.js.map +0 -1
  233. package/dist/assets/app-BdM_bCqD.js +0 -842
  234. package/dist/assets/app-BdM_bCqD.js.map +0 -1
  235. package/dist/assets/app-loader-B7xllAoS.js +0 -3
  236. package/dist/assets/app-loader-B7xllAoS.js.map +0 -1
  237. package/dist/assets/app-loader-D5wPX62N.css +0 -1
  238. package/dist/assets/browser-CwKAjz_f.js +0 -43
  239. package/dist/assets/browser-CwKAjz_f.js.map +0 -1
  240. package/dist/assets/browser-Dmr6AWWk.js +0 -2
  241. package/dist/assets/browser-Dmr6AWWk.js.map +0 -1
  242. package/dist/assets/ccip-BoVyVgwR.js +0 -2
  243. package/dist/assets/ccip-BoVyVgwR.js.map +0 -1
  244. package/dist/assets/content-BmCNR4Pw.js +0 -6
  245. package/dist/assets/content-BmCNR4Pw.js.map +0 -1
  246. package/dist/assets/editor-Cma-7Z7k.js +0 -2
  247. package/dist/assets/editor-Cma-7Z7k.js.map +0 -1
  248. package/dist/assets/editor-IMwm8pim.js +0 -2
  249. package/dist/assets/editor-IMwm8pim.js.map +0 -1
  250. package/dist/assets/editor-vgD9wEAH.js +0 -2
  251. package/dist/assets/editor-vgD9wEAH.js.map +0 -1
  252. package/dist/assets/editors-DQC0rqOg.js +0 -347
  253. package/dist/assets/editors-DQC0rqOg.js.map +0 -1
  254. package/dist/assets/index-BP2fj1j6.js +0 -16
  255. package/dist/assets/index-BP2fj1j6.js.map +0 -1
  256. package/dist/assets/index-SwNHx8hV.js +0 -3
  257. package/dist/assets/index-SwNHx8hV.js.map +0 -1
  258. package/dist/assets/index-T6Et30Eh-CdVwpIBO.js +0 -12
  259. package/dist/assets/index-T6Et30Eh-CdVwpIBO.js.map +0 -1
  260. package/dist/assets/main.DQ-aV7Qq.js +0 -2
  261. package/dist/assets/main.DQ-aV7Qq.js.map +0 -1
  262. package/dist/assets/root-BKJF0Yl6.js +0 -12
  263. package/dist/assets/root-BKJF0Yl6.js.map +0 -1
  264. package/dist/assets/router-Hd499Vrp.js +0 -12
  265. package/dist/assets/router-Hd499Vrp.js.map +0 -1
  266. package/dist/assets/useUiNodes-Ch-W4vsB.js +0 -107
  267. package/dist/assets/useUiNodes-Ch-W4vsB.js.map +0 -1
  268. package/dist/service-worker.js.map +0 -1
  269. package/dist/studio/cli.js +0 -6
  270. package/dist/studio/helpers.d.ts +0 -2
  271. package/dist/studio/index.d.ts +0 -20
  272. package/dist/studio/index.js +0 -580
  273. package/dist/studio/server.d.ts +0 -7
  274. package/dist/studio/vite-plugin.d.ts +0 -12
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["sortUiNodesByName","a","b","twJoin","index","argument","resolvedValue","string","toValue","mix","k","CLASS_PART_SEPARATOR","createClassUtils","config","classMap","createClassMap","conflictingClassGroups","_config$conflictingCl","conflictingClassGroupModifiers","getClassGroupId","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","_a","_ref","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","prefix","prefixedClassGroupEntries","getPrefixedClassGroupEntries","_ref2","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","_ref3","key","path","currentClassPartObject","pathPart","func","classGroupEntries","_ref4","prefixedClassGroup","_ref5","value","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","createSplitModifiers","separator","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","modifiers","bracketDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","isArbitraryVariant","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","splitModifiers","classGroupsInConflict","originalClassName","_splitModifiers","variantModifier","modifierId","parsed","classId","group","createTailwindMerge","_len","createConfig","_key","cacheGet","cacheSet","functionToCall","initTailwindMerge","firstCreateConfig","restCreateConfig","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","result","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","tshirtUnitRegex","lengthUnitRegex","shadowRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","isArbitrarySize","isNever","isArbitraryPosition","isArbitraryUrl","isUrl","isArbitraryNumber","isPercent","isInteger","isIntegerOnly","isArbitraryValue","isAny","isTshirtSize","isArbitraryShadow","isShadow","label","testValue","getDefaultConfig","colors","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmpty","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumber","getNumberAndArbitrary","twMerge","Button","props","jsx","_extends","n","e","reservedModifierKeywords","mappedKeys","mapKey","isHotkeyModifier","parseKeysHookInput","keys","splitKey","parseHotkey","hotkey","combinationKey","description","singleCharKeys","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","isReadonlyArray","isHotkeyPressed","hotkeyArray","maybePreventDefault","preventDefault","isHotkeyEnabled","enabled","isKeyboardEventTriggeredByInput","ev","isHotkeyEnabledOnTag","event","enabledOnTags","target","composed","targetTagName","isCustomElement","tag","_targetTagName","element","isScopeActive","activeScopes","scopes","scope","isHotkeyMatchingKeyboardEvent","ignoreModifiers","alt","meta","mod","shift","ctrl","pressedKeyUppercase","code","ctrlKey","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","createContext","useBoundHotkeysProxy","useContext","deepEqual","x","y","isEqual","HotkeysContext","useHotkeysContext","useDeepEqualMemo","ref","useRef","stopPropagation","useSafeLayoutEffect","useLayoutEffect","useEffect","useHotkeys","callback","options","dependencies","_useState","useState","setRef","hasTriggeredRef","_options","_keys","_deps","memoisedCB","useCallback","cbRef","memoisedOptions","_useHotkeysContext","enabledScopes","proxy","listener","isKeyUp","_e$target","rootNode","_hotkey$keys","handleKeyDown","handleKeyUp","domNode","useUndoRedoShortcuts","undo","redo","canRedo","canUndo","isMac","undoShortcut","redoShortcut","LOCAL_DOCUMENT_EDITORS","LOAD_EXTERNAL_PROJECTS","loadEditors","baseEditorsModules","__vitePreload","baseEditors","externalEditors","loadPackages","module","acc","val","localEditors","editorsPromise","editorsAtom","atom","unwrappedEditorsAtom","unwrap","useUnwrappedEditors","useAtomValue","useEditorsAsync","getEditor","documentType","editors","preferredEditorId","preferredEditor","useGetEditor","defaultDocumentModelEditor","useDefaultDocumentModelEditor","usePreloadEditor","editor","EditorLoader","showLoading","setShowLoading","customEditorLoader","defaultProps","Fragment","DefaultEditorLoader","EditorError","message","DocumentEditor","selectedNode","fileNodeDocument","selectedParentNode","initialDocument","setSelectedNode","onChange","onExport","onAddOperation","onOpenSwitchboardLink","showRevisionHistory","setShowRevisionHistory","themeAtom","user","useUser","connectDid","useConnectDid","sign","useConnectCrypto","getDocumentModel","useGetDocumentModel","documentModel","useMemo","document","_dispatch","error","useDocumentDispatch","context","userPermissions","useUserPermissions","isLoadingDocument","isLoadingEditor","dispatch","action","onErrorCallback","operation","state","prevState","signOperation","op","logger","addActionContext","actions","onClose","FILE","EditorComponent","disableExternalControls","documentToolbarEnabled","showSwitchboardLink","jsxs","DocumentToolbar","RevisionHistory","Suspense","ContentSection","title","children","divProps","memo","getDeps","fn","opts","deps","_b","_c","_d","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","notUndefined","msg","approxEqual","debounce","targetWindow","ms","timeoutId","args","defaultKeyExtractor","defaultRangeExtractor","range","start","end","arr","i","observeElementRect","instance","cb","handler","rect","width","height","observer","entries","entry","box","addEventListenerOptions","supportsScrollend","observeElementOffset","offset","fallback","createHandler","isScrolling","horizontal","isRtl","endHandler","measureElement","elementScroll","adjustments","behavior","toOffset","Virtualizer","_ro","get","opts2","sync","d","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","count","paddingStart","scrollMargin","getItemKey","itemSizeCache","item","min","furthestMeasurement","measuredSize","size","lane","outerSize","scrollOffset","calculateRange","rangeExtractor","overscan","node","attributeName","indexStr","prevNode","itemSize","delta","indexes","virtualItems","len","findNearestBinarySearch","align","scrollSizeProp","maxOffset","centerOffset","initialAlign","offsetAndAlign","latestOffset","low","high","getCurrentValue","middle","currentValue","startIndex","endIndex","useIsomorphicLayoutEffect","React","useVirtualizerBase","rerender","resolvedOptions","instance2","flushSync","useVirtualizer","useWindowSize","windowSize","setWindowSize","windowSizeHandler","GAP","ITEM_WIDTH","ITEM_HEIGHT","USED_SPACE","FileContentView","parentRef","useTranslation","fileNodes","availableWidth","columnCount","rowCount","rowVirtualizer","columnVirtualizer","getItemIndex","rowIndex","columnIndex","getItem","renderItem","fileNode","createElement","FileItem","virtualRow","virtualColumn","FolderView","t","isDropTarget","dropProps","useDrop","folderNodes","FOLDER","folderNode","FolderItem","Footer","showModal","useModal","setShowCookieBanner","useCookieBanner","DesignSystemFooter","FooterLink","Trans","openUrl","Icon","defaultFilterItems","SearchBar","ConnectSearchBar","buildPathname","selectedNodePath","driveNode","DRIVE","driveNodeComponent","makeDriveNodeUrlComponent","nodePathComponents","component","getSelectedNodeFromPathname","driveNodes","driveIdFromPathname","nodeNamesFromPathname","driveId","nodeNames","nodeName","nextNode","useNodeNavigation","navigate","useNavigate","location","useLocation","search","pathname","params","useParams","useUiNodesContext","selectedNodeFromPathname","selectedNodePathname","validateDocument","errors","specs","initialStateErrors","scopeKey","documentModelUtils","err","schemaStateErrors","isGlobalScope","modulesErrors","getDocumentModelName","name","Content","connectConfig","useConnectConfig","uiNodes","useUiNodes","selectedDriveNode","isRemoteDrive","isAllowedToCreateDocuments","selectedDocument","documentModels","openSwitchboardLink","setSelectedDocument","addOperationToSelectedDocument","addFile","renameNode","preloadEditor","requestIC","cancelIC","id","file","handleAddOperationToSelectedDocument","createDocument","exportDocument","validationErrors","closeModal","exportFile","Breadcrumbs","doc"],"ignoreList":[1,2,3,4,5,6,7,8,9,10,11,13,19,20,21],"sources":["../../src/utils/tree-items.ts","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/tw-join.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/class-utils.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/lru-cache.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/modifier-utils.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/config-utils.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/merge-classlist.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/create-tailwind-merge.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/from-theme.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/validators.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/default-config.mjs","../../../../node_modules/.pnpm/tailwind-merge@1.14.0/node_modules/tailwind-merge/dist/lib/tw-merge.mjs","../../src/components/button.tsx","../../../../node_modules/.pnpm/react-hotkeys-hook@4.6.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-hotkeys-hook/dist/react-hotkeys-hook.esm.js","../../src/hooks/useUndoRedoShortcuts.ts","../../src/store/editor.ts","../../src/components/editor-loader.tsx","../../src/components/editors.tsx","../../src/components/content/section.tsx","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.11.2/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.11.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../src/hooks/useWindowSize.ts","../../src/components/file-content-view.tsx","../../src/components/folder-view.tsx","../../src/components/footer.tsx","../../src/components/search-bar.tsx","../../src/hooks/useNodeNavigation.ts","../../src/utils/validate-document.ts","../../src/pages/content.tsx"],"sourcesContent":["import { UiNode } from '@powerhousedao/design-system';\n\nexport const sortUiNodesByName = (a: UiNode, b: UiNode) =>\n a.name.localeCompare(b.name);\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n var index = 0;\n var argument;\n var resolvedValue;\n var string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nfunction toValue(mix) {\n if (typeof mix === 'string') {\n return mix;\n }\n var resolvedValue;\n var string = '';\n for (var k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\n\nexport { twJoin };\n//# sourceMappingURL=tw-join.mjs.map\n","var CLASS_PART_SEPARATOR = '-';\nfunction createClassUtils(config) {\n var classMap = createClassMap(config);\n var conflictingClassGroups = config.conflictingClassGroups,\n _config$conflictingCl = config.conflictingClassGroupModifiers,\n conflictingClassGroupModifiers = _config$conflictingCl === void 0 ? {} : _config$conflictingCl;\n function getClassGroupId(className) {\n var classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n }\n function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) {\n var conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [].concat(conflicts, conflictingClassGroupModifiers[classGroupId]);\n }\n return conflicts;\n }\n return {\n getClassGroupId: getClassGroupId,\n getConflictingClassGroupIds: getConflictingClassGroupIds\n };\n}\nfunction getGroupRecursive(classParts, classPartObject) {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n var currentClassPart = classParts[0];\n var nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n var classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n var classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(function (_ref) {\n var validator = _ref.validator;\n return validator(classRest);\n })?.classGroupId;\n}\nvar arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nfunction getGroupIdForArbitraryProperty(className) {\n if (arbitraryPropertyRegex.test(className)) {\n var arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n var property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n}\n/**\n * Exported for testing only\n */\nfunction createClassMap(config) {\n var theme = config.theme,\n prefix = config.prefix;\n var classMap = {\n nextPart: new Map(),\n validators: []\n };\n var prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);\n prefixedClassGroupEntries.forEach(function (_ref2) {\n var classGroupId = _ref2[0],\n classGroup = _ref2[1];\n processClassesRecursively(classGroup, classMap, classGroupId, theme);\n });\n return classMap;\n}\nfunction processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {\n classGroup.forEach(function (classDefinition) {\n if (typeof classDefinition === 'string') {\n var classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId: classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(function (_ref3) {\n var key = _ref3[0],\n classGroup = _ref3[1];\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n}\nfunction getPart(classPartObject, path) {\n var currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(function (pathPart) {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n}\nfunction isThemeGetter(func) {\n return func.isThemeGetter;\n}\nfunction getPrefixedClassGroupEntries(classGroupEntries, prefix) {\n if (!prefix) {\n return classGroupEntries;\n }\n return classGroupEntries.map(function (_ref4) {\n var classGroupId = _ref4[0],\n classGroup = _ref4[1];\n var prefixedClassGroup = classGroup.map(function (classDefinition) {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition;\n }\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(Object.entries(classDefinition).map(function (_ref5) {\n var key = _ref5[0],\n value = _ref5[1];\n return [prefix + key, value];\n }));\n }\n return classDefinition;\n });\n return [classGroupId, prefixedClassGroup];\n });\n}\n\nexport { createClassMap, createClassUtils };\n//# sourceMappingURL=class-utils.mjs.map\n","// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nfunction createLruCache(maxCacheSize) {\n if (maxCacheSize < 1) {\n return {\n get: function get() {\n return undefined;\n },\n set: function set() {}\n };\n }\n var cacheSize = 0;\n var cache = new Map();\n var previousCache = new Map();\n function update(key, value) {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n }\n return {\n get: function get(key) {\n var value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set: function set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n}\n\nexport { createLruCache };\n//# sourceMappingURL=lru-cache.mjs.map\n","var IMPORTANT_MODIFIER = '!';\nfunction createSplitModifiers(config) {\n var separator = config.separator || ':';\n var isSeparatorSingleCharacter = separator.length === 1;\n var firstSeparatorCharacter = separator[0];\n var separatorLength = separator.length;\n // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n return function splitModifiers(className) {\n var modifiers = [];\n var bracketDepth = 0;\n var modifierStart = 0;\n var postfixModifierPosition;\n for (var index = 0; index < className.length; index++) {\n var currentCharacter = className[index];\n if (bracketDepth === 0) {\n if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + separatorLength;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n }\n }\n var baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n var hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);\n var baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;\n var maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers: modifiers,\n hasImportantModifier: hasImportantModifier,\n baseClassName: baseClassName,\n maybePostfixModifierPosition: maybePostfixModifierPosition\n };\n };\n}\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nfunction sortModifiers(modifiers) {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n var sortedModifiers = [];\n var unsortedModifiers = [];\n modifiers.forEach(function (modifier) {\n var isArbitraryVariant = modifier[0] === '[';\n if (isArbitraryVariant) {\n sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort().concat([modifier]));\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push.apply(sortedModifiers, unsortedModifiers.sort());\n return sortedModifiers;\n}\n\nexport { IMPORTANT_MODIFIER, createSplitModifiers, sortModifiers };\n//# sourceMappingURL=modifier-utils.mjs.map\n","import { createClassUtils } from './class-utils.mjs';\nimport { createLruCache } from './lru-cache.mjs';\nimport { createSplitModifiers } from './modifier-utils.mjs';\n\nfunction createConfigUtils(config) {\n return {\n cache: createLruCache(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config)\n };\n}\n\nexport { createConfigUtils };\n//# sourceMappingURL=config-utils.mjs.map\n","import { sortModifiers, IMPORTANT_MODIFIER } from './modifier-utils.mjs';\n\nvar SPLIT_CLASSES_REGEX = /\\s+/;\nfunction mergeClassList(classList, configUtils) {\n var splitModifiers = configUtils.splitModifiers,\n getClassGroupId = configUtils.getClassGroupId,\n getConflictingClassGroupIds = configUtils.getConflictingClassGroupIds;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n var classGroupsInConflict = new Set();\n return classList.trim().split(SPLIT_CLASSES_REGEX).map(function (originalClassName) {\n var _splitModifiers = splitModifiers(originalClassName),\n modifiers = _splitModifiers.modifiers,\n hasImportantModifier = _splitModifiers.hasImportantModifier,\n baseClassName = _splitModifiers.baseClassName,\n maybePostfixModifierPosition = _splitModifiers.maybePostfixModifierPosition;\n var classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n var hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n if (!classGroupId) {\n if (!maybePostfixModifierPosition) {\n return {\n isTailwindClass: false,\n originalClassName: originalClassName\n };\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n return {\n isTailwindClass: false,\n originalClassName: originalClassName\n };\n }\n hasPostfixModifier = false;\n }\n var variantModifier = sortModifiers(modifiers).join(':');\n var modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n return {\n isTailwindClass: true,\n modifierId: modifierId,\n classGroupId: classGroupId,\n originalClassName: originalClassName,\n hasPostfixModifier: hasPostfixModifier\n };\n }).reverse()\n // Last class in conflict wins, so we need to filter conflicting classes in reverse order.\n .filter(function (parsed) {\n if (!parsed.isTailwindClass) {\n return true;\n }\n var modifierId = parsed.modifierId,\n classGroupId = parsed.classGroupId,\n hasPostfixModifier = parsed.hasPostfixModifier;\n var classId = modifierId + classGroupId;\n if (classGroupsInConflict.has(classId)) {\n return false;\n }\n classGroupsInConflict.add(classId);\n getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach(function (group) {\n return classGroupsInConflict.add(modifierId + group);\n });\n return true;\n }).reverse().map(function (parsed) {\n return parsed.originalClassName;\n }).join(' ');\n}\n\nexport { mergeClassList };\n//# sourceMappingURL=merge-classlist.mjs.map\n","import { createConfigUtils } from './config-utils.mjs';\nimport { mergeClassList } from './merge-classlist.mjs';\nimport { twJoin } from './tw-join.mjs';\n\nfunction createTailwindMerge() {\n for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) {\n createConfig[_key] = arguments[_key];\n }\n var configUtils;\n var cacheGet;\n var cacheSet;\n var functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n var firstCreateConfig = createConfig[0],\n restCreateConfig = createConfig.slice(1);\n var config = restCreateConfig.reduce(function (previousConfig, createConfigCurrent) {\n return createConfigCurrent(previousConfig);\n }, firstCreateConfig());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n var cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n var result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\n\nexport { createTailwindMerge };\n//# sourceMappingURL=create-tailwind-merge.mjs.map\n","function fromTheme(key) {\n var themeGetter = function themeGetter(theme) {\n return theme[key] || [];\n };\n themeGetter.isThemeGetter = true;\n return themeGetter;\n}\n\nexport { fromTheme };\n//# sourceMappingURL=from-theme.mjs.map\n","var arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i;\nvar fractionRegex = /^\\d+\\/\\d+$/;\nvar stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);\nvar tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nvar lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\n// Shadow always begins with x and y offset separated by underscore\nvar shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nfunction isLength(value) {\n return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value) || isArbitraryLength(value);\n}\nfunction isArbitraryLength(value) {\n return getIsArbitraryValue(value, 'length', isLengthOnly);\n}\nfunction isArbitrarySize(value) {\n return getIsArbitraryValue(value, 'size', isNever);\n}\nfunction isArbitraryPosition(value) {\n return getIsArbitraryValue(value, 'position', isNever);\n}\nfunction isArbitraryUrl(value) {\n return getIsArbitraryValue(value, 'url', isUrl);\n}\nfunction isArbitraryNumber(value) {\n return getIsArbitraryValue(value, 'number', isNumber);\n}\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nvar isArbitraryWeight = isArbitraryNumber;\nfunction isNumber(value) {\n return !Number.isNaN(Number(value));\n}\nfunction isPercent(value) {\n return value.endsWith('%') && isNumber(value.slice(0, -1));\n}\nfunction isInteger(value) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly);\n}\nfunction isArbitraryValue(value) {\n return arbitraryValueRegex.test(value);\n}\nfunction isAny() {\n return true;\n}\nfunction isTshirtSize(value) {\n return tshirtUnitRegex.test(value);\n}\nfunction isArbitraryShadow(value) {\n return getIsArbitraryValue(value, '', isShadow);\n}\nfunction getIsArbitraryValue(value, label, testValue) {\n var result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return result[1] === label;\n }\n return testValue(result[2]);\n }\n return false;\n}\nfunction isLengthOnly(value) {\n return lengthUnitRegex.test(value);\n}\nfunction isNever() {\n return false;\n}\nfunction isUrl(value) {\n return value.startsWith('url(');\n}\nfunction isIntegerOnly(value) {\n return Number.isInteger(Number(value));\n}\nfunction isShadow(value) {\n return shadowRegex.test(value);\n}\n\nexport { isAny, isArbitraryLength, isArbitraryNumber, isArbitraryPosition, isArbitraryShadow, isArbitrarySize, isArbitraryUrl, isArbitraryValue, isArbitraryWeight, isInteger, isLength, isNumber, isPercent, isTshirtSize };\n//# sourceMappingURL=validators.mjs.map\n","import { fromTheme } from './from-theme.mjs';\nimport { isAny, isLength, isTshirtSize, isArbitraryValue, isPercent, isArbitraryLength, isInteger, isArbitraryNumber, isNumber, isArbitraryPosition, isArbitrarySize, isArbitraryUrl, isArbitraryShadow } from './validators.mjs';\n\nfunction getDefaultConfig() {\n var colors = fromTheme('colors');\n var spacing = fromTheme('spacing');\n var blur = fromTheme('blur');\n var brightness = fromTheme('brightness');\n var borderColor = fromTheme('borderColor');\n var borderRadius = fromTheme('borderRadius');\n var borderSpacing = fromTheme('borderSpacing');\n var borderWidth = fromTheme('borderWidth');\n var contrast = fromTheme('contrast');\n var grayscale = fromTheme('grayscale');\n var hueRotate = fromTheme('hueRotate');\n var invert = fromTheme('invert');\n var gap = fromTheme('gap');\n var gradientColorStops = fromTheme('gradientColorStops');\n var gradientColorStopPositions = fromTheme('gradientColorStopPositions');\n var inset = fromTheme('inset');\n var margin = fromTheme('margin');\n var opacity = fromTheme('opacity');\n var padding = fromTheme('padding');\n var saturate = fromTheme('saturate');\n var scale = fromTheme('scale');\n var sepia = fromTheme('sepia');\n var skew = fromTheme('skew');\n var space = fromTheme('space');\n var translate = fromTheme('translate');\n var getOverscroll = function getOverscroll() {\n return ['auto', 'contain', 'none'];\n };\n var getOverflow = function getOverflow() {\n return ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n };\n var getSpacingWithAutoAndArbitrary = function getSpacingWithAutoAndArbitrary() {\n return ['auto', isArbitraryValue, spacing];\n };\n var getSpacingWithArbitrary = function getSpacingWithArbitrary() {\n return [isArbitraryValue, spacing];\n };\n var getLengthWithEmpty = function getLengthWithEmpty() {\n return ['', isLength];\n };\n var getNumberWithAutoAndArbitrary = function getNumberWithAutoAndArbitrary() {\n return ['auto', isNumber, isArbitraryValue];\n };\n var getPositions = function getPositions() {\n return ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n };\n var getLineStyles = function getLineStyles() {\n return ['solid', 'dashed', 'dotted', 'double', 'none'];\n };\n var getBlendModes = function getBlendModes() {\n return ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity', 'plus-lighter'];\n };\n var getAlign = function getAlign() {\n return ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];\n };\n var getZeroAndEmpty = function getZeroAndEmpty() {\n return ['', '0', isArbitraryValue];\n };\n var getBreaks = function getBreaks() {\n return ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n };\n var getNumber = function getNumber() {\n return [isNumber, isArbitraryNumber];\n };\n var getNumberAndArbitrary = function getNumberAndArbitrary() {\n return [isNumber, isArbitraryValue];\n };\n return {\n cacheSize: 500,\n theme: {\n colors: [isAny],\n spacing: [isLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumber(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmpty(),\n contrast: getNumber(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumber(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumber(),\n scale: getNumber(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary()\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', 'video', isArbitraryValue]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isTshirtSize]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': getBreaks()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': getBreaks()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n \"float\": [{\n \"float\": ['right', 'left', 'none']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [].concat(getPositions(), [isArbitraryValue])\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: getOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': getOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': getOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: getOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': getOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': getOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: [inset]\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': [inset]\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': [inset]\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: [inset]\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: [inset]\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: [inset]\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: [inset]\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: [inset]\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: [inset]\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: ['auto', isInteger]\n }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: getSpacingWithAutoAndArbitrary()\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['wrap', 'wrap-reverse', 'nowrap']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: getZeroAndEmpty()\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: getZeroAndEmpty()\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: ['first', 'last', 'none', isInteger]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': [isAny]\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: ['auto', {\n span: ['full', isInteger]\n }, isArbitraryValue]\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': [isAny]\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: ['auto', {\n span: [isInteger]\n }, isArbitraryValue]\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': getNumberWithAutoAndArbitrary()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: [gap]\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': [gap]\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': [gap]\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: ['normal'].concat(getAlign())\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': ['start', 'end', 'center', 'stretch']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal'].concat(getAlign(), ['baseline'])\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': [].concat(getAlign(), ['baseline'])\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', 'start', 'end', 'center', 'stretch']\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: [padding]\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: [padding]\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: [padding]\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: [padding]\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: [padding]\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: [padding]\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: [padding]\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: [padding]\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: [padding]\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: [margin]\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: [margin]\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: [margin]\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: [margin]\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: [margin]\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: [margin]\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: [margin]\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: [margin]\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: [margin]\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{\n 'space-x': [space]\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{\n 'space-y': [space]\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: ['auto', 'min', 'max', 'fit', isArbitraryValue, spacing]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': ['min', 'max', 'fit', isArbitraryValue, isLength]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': ['0', 'none', 'full', 'min', 'max', 'fit', 'prose', {\n screen: [isTshirtSize]\n }, isTshirtSize, isArbitraryValue]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['min', 'max', 'fit', isArbitraryValue, isLength]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit']\n }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', isTshirtSize, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isAny]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': ['none', isNumber, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isArbitraryValue, isLength]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryValue]\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['none', 'disc', 'decimal', isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: [colors]\n }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{\n 'placeholder-opacity': [opacity]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: [colors]\n }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{\n 'text-opacity': [opacity]\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [].concat(getLineStyles(), ['wavy'])\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: ['auto', 'from-font', isLength]\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': ['auto', isArbitraryValue, isLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: [colors]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: getSpacingWithArbitrary()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n \"break\": [{\n \"break\": ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryValue]\n }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{\n 'bg-opacity': [opacity]\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [].concat(getPositions(), [isArbitraryPosition])\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'round', 'space']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isArbitraryUrl]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: [colors]\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: [gradientColorStopPositions]\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: [gradientColorStops]\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: [gradientColorStops]\n }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: [borderRadius]\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': [borderRadius]\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': [borderRadius]\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': [borderRadius]\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': [borderRadius]\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': [borderRadius]\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': [borderRadius]\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': [borderRadius]\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': [borderRadius]\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': [borderRadius]\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': [borderRadius]\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': [borderRadius]\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': [borderRadius]\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': [borderRadius]\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': [borderRadius]\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: [borderWidth]\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': [borderWidth]\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': [borderWidth]\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': [borderWidth]\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': [borderWidth]\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': [borderWidth]\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': [borderWidth]\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': [borderWidth]\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': [borderWidth]\n }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{\n 'border-opacity': [opacity]\n }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [].concat(getLineStyles(), ['hidden'])\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{\n 'divide-x': [borderWidth]\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{\n 'divide-y': [borderWidth]\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{\n 'divide-opacity': [opacity]\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{\n divide: getLineStyles()\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: [borderColor]\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': [borderColor]\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': [borderColor]\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': [borderColor]\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': [borderColor]\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': [borderColor]\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': [borderColor]\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: [borderColor]\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [''].concat(getLineStyles())\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isArbitraryValue, isLength]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: [isLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [colors]\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{\n ring: getLengthWithEmpty()\n }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{\n ring: [colors]\n }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{\n 'ring-opacity': [opacity]\n }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{\n 'ring-offset': [isLength]\n }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{\n 'ring-offset': [colors]\n }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{\n shadow: [isAny]\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [opacity]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': getBlendModes()\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': getBlendModes()\n }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: ['', 'none']\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: [blur]\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [brightness]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [contrast]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: [grayscale]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [hueRotate]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: [invert]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [saturate]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: [sepia]\n }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': ['', 'none']\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': [blur]\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [brightness]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [contrast]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': [grayscale]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [hueRotate]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': [invert]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [opacity]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [saturate]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': [sepia]\n }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': [borderSpacing]\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': [borderSpacing]\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': [borderSpacing]\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: getNumberAndArbitrary()\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: getNumberAndArbitrary()\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]\n }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: ['', 'gpu', 'none']\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: [scale]\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': [scale]\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': [scale]\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: [isInteger, isArbitraryValue]\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': [translate]\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': [translate]\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': [skew]\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': [skew]\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]\n }],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: ['auto', colors]\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: ['appearance-none'],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: [colors]\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['none', 'auto']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', 'y', 'x', '']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': getSpacingWithArbitrary()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'pinch-zoom', 'manipulation', {\n pan: ['x', 'left', 'right', 'y', 'up', 'down']\n }]\n }],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]\n }],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: [colors, 'none']\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: [colors, 'none']\n }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only']\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n }\n };\n}\n\nexport { getDefaultConfig };\n//# sourceMappingURL=default-config.mjs.map\n","import { createTailwindMerge } from './create-tailwind-merge.mjs';\nimport { getDefaultConfig } from './default-config.mjs';\n\nvar twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\n\nexport { twMerge };\n//# sourceMappingURL=tw-merge.mjs.map\n","import { twMerge } from 'tailwind-merge';\n\nconst Button: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = ({\n className,\n ...props\n}) => {\n return (\n <button\n className={twMerge(\n 'rounded-md bg-gray-500/20 px-4 py-1.5 text-gray-500 shadow-button hover:bg-slate-100 hover:shadow-none',\n className,\n )}\n {...props}\n />\n );\n};\n\nexport default Button;\n","import { useContext, createContext, useState, useCallback, useRef, useLayoutEffect, useEffect } from 'react';\nimport { jsx } from 'react/jsx-runtime';\n\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\nvar reservedModifierKeywords = ['shift', 'alt', 'meta', 'mod', 'ctrl'];\nvar mappedKeys = {\n esc: 'escape',\n \"return\": 'enter',\n '.': 'period',\n ',': 'comma',\n '-': 'slash',\n ' ': 'space',\n '`': 'backquote',\n '#': 'backslash',\n '+': 'bracketright',\n ShiftLeft: 'shift',\n ShiftRight: 'shift',\n AltLeft: 'alt',\n AltRight: 'alt',\n MetaLeft: 'meta',\n MetaRight: 'meta',\n OSLeft: 'meta',\n OSRight: 'meta',\n ControlLeft: 'ctrl',\n ControlRight: 'ctrl'\n};\nfunction mapKey(key) {\n return (key && mappedKeys[key] || key || '').trim().toLowerCase().replace(/key|digit|numpad|arrow/, '');\n}\nfunction isHotkeyModifier(key) {\n return reservedModifierKeywords.includes(key);\n}\nfunction parseKeysHookInput(keys, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n return keys.split(splitKey);\n}\nfunction parseHotkey(hotkey, combinationKey, description) {\n if (combinationKey === void 0) {\n combinationKey = '+';\n }\n var keys = hotkey.toLocaleLowerCase().split(combinationKey).map(function (k) {\n return mapKey(k);\n });\n var modifiers = {\n alt: keys.includes('alt'),\n ctrl: keys.includes('ctrl') || keys.includes('control'),\n shift: keys.includes('shift'),\n meta: keys.includes('meta'),\n mod: keys.includes('mod')\n };\n var singleCharKeys = keys.filter(function (k) {\n return !reservedModifierKeywords.includes(k);\n });\n return _extends({}, modifiers, {\n keys: singleCharKeys,\n description: description,\n hotkey: hotkey\n });\n}\n\n(function () {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n document.addEventListener('keyup', function (e) {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)]);\n });\n }\n if (typeof window !== 'undefined') {\n window.addEventListener('blur', function () {\n currentlyPressedKeys.clear();\n });\n }\n})();\nvar currentlyPressedKeys = /*#__PURE__*/new Set();\n// https://github.com/microsoft/TypeScript/issues/17002\nfunction isReadonlyArray(value) {\n return Array.isArray(value);\n}\nfunction isHotkeyPressed(key, splitKey) {\n if (splitKey === void 0) {\n splitKey = ',';\n }\n var hotkeyArray = isReadonlyArray(key) ? key : key.split(splitKey);\n return hotkeyArray.every(function (hotkey) {\n return currentlyPressedKeys.has(hotkey.trim().toLowerCase());\n });\n}\nfunction pushToCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (currentlyPressedKeys.has('meta')) {\n currentlyPressedKeys.forEach(function (key) {\n return !isHotkeyModifier(key) && currentlyPressedKeys[\"delete\"](key.toLowerCase());\n });\n }\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys.add(hotkey.toLowerCase());\n });\n}\nfunction removeFromCurrentlyPressedKeys(key) {\n var hotkeyArray = Array.isArray(key) ? key : [key];\n /*\r\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\r\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\r\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\r\n */\n if (key === 'meta') {\n currentlyPressedKeys.clear();\n } else {\n hotkeyArray.forEach(function (hotkey) {\n return currentlyPressedKeys[\"delete\"](hotkey.toLowerCase());\n });\n }\n}\n\nfunction maybePreventDefault(e, hotkey, preventDefault) {\n if (typeof preventDefault === 'function' && preventDefault(e, hotkey) || preventDefault === true) {\n e.preventDefault();\n }\n}\nfunction isHotkeyEnabled(e, hotkey, enabled) {\n if (typeof enabled === 'function') {\n return enabled(e, hotkey);\n }\n return enabled === true || enabled === undefined;\n}\nfunction isKeyboardEventTriggeredByInput(ev) {\n return isHotkeyEnabledOnTag(ev, ['input', 'textarea', 'select']);\n}\nfunction isHotkeyEnabledOnTag(event, enabledOnTags) {\n if (enabledOnTags === void 0) {\n enabledOnTags = false;\n }\n var target = event.target,\n composed = event.composed;\n var targetTagName = null;\n if (isCustomElement(target) && composed) {\n targetTagName = event.composedPath()[0] && event.composedPath()[0].tagName;\n } else {\n targetTagName = target && target.tagName;\n }\n if (isReadonlyArray(enabledOnTags)) {\n return Boolean(targetTagName && enabledOnTags && enabledOnTags.some(function (tag) {\n var _targetTagName;\n return tag.toLowerCase() === ((_targetTagName = targetTagName) == null ? void 0 : _targetTagName.toLowerCase());\n }));\n }\n return Boolean(targetTagName && enabledOnTags && enabledOnTags);\n}\nfunction isCustomElement(element) {\n // We just do a basic check w/o any complex RegEx or validation against the list of legacy names containing a hyphen,\n // as none of them is likely to be an event target, and it won't hurt anyway if we miss.\n // see: https://html.spec.whatwg.org/multipage/custom-elements.html#prod-potentialcustomelementname\n return !!element.tagName && !element.tagName.startsWith(\"-\") && element.tagName.includes(\"-\");\n}\nfunction isScopeActive(activeScopes, scopes) {\n if (activeScopes.length === 0 && scopes) {\n console.warn('A hotkey has the \"scopes\" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>');\n return true;\n }\n if (!scopes) {\n return true;\n }\n return activeScopes.some(function (scope) {\n return scopes.includes(scope);\n }) || activeScopes.includes('*');\n}\nvar isHotkeyMatchingKeyboardEvent = function isHotkeyMatchingKeyboardEvent(e, hotkey, ignoreModifiers) {\n if (ignoreModifiers === void 0) {\n ignoreModifiers = false;\n }\n var alt = hotkey.alt,\n meta = hotkey.meta,\n mod = hotkey.mod,\n shift = hotkey.shift,\n ctrl = hotkey.ctrl,\n keys = hotkey.keys;\n var pressedKeyUppercase = e.key,\n code = e.code,\n ctrlKey = e.ctrlKey,\n metaKey = e.metaKey,\n shiftKey = e.shiftKey,\n altKey = e.altKey;\n var keyCode = mapKey(code);\n var pressedKey = pressedKeyUppercase.toLowerCase();\n if (!(keys != null && keys.includes(keyCode)) && !(keys != null && keys.includes(pressedKey)) && !['ctrl', 'control', 'unknown', 'meta', 'alt', 'shift', 'os'].includes(keyCode)) {\n return false;\n }\n if (!ignoreModifiers) {\n // We check the pressed keys for compatibility with the keyup event. In keyup events the modifier flags are not set.\n if (alt === !altKey && pressedKey !== 'alt') {\n return false;\n }\n if (shift === !shiftKey && pressedKey !== 'shift') {\n return false;\n }\n // Mod is a special key name that is checking for meta on macOS and ctrl on other platforms\n if (mod) {\n if (!metaKey && !ctrlKey) {\n return false;\n }\n } else {\n if (meta === !metaKey && pressedKey !== 'meta' && pressedKey !== 'os') {\n return false;\n }\n if (ctrl === !ctrlKey && pressedKey !== 'ctrl' && pressedKey !== 'control') {\n return false;\n }\n }\n }\n // All modifiers are correct, now check the key\n // If the key is set, we check for the key\n if (keys && keys.length === 1 && (keys.includes(pressedKey) || keys.includes(keyCode))) {\n return true;\n } else if (keys) {\n // Check if all keys are present in pressedDownKeys set\n return isHotkeyPressed(keys);\n } else if (!keys) {\n // If the key is not set, we only listen for modifiers, that check went alright, so we return true\n return true;\n }\n // There is nothing that matches.\n return false;\n};\n\nvar BoundHotkeysProxyProvider = /*#__PURE__*/createContext(undefined);\nvar useBoundHotkeysProxy = function useBoundHotkeysProxy() {\n return useContext(BoundHotkeysProxyProvider);\n};\nfunction BoundHotkeysProxyProviderProvider(_ref) {\n var addHotkey = _ref.addHotkey,\n removeHotkey = _ref.removeHotkey,\n children = _ref.children;\n return /*#__PURE__*/jsx(BoundHotkeysProxyProvider.Provider, {\n value: {\n addHotkey: addHotkey,\n removeHotkey: removeHotkey\n },\n children: children\n });\n}\n\nfunction deepEqual(x, y) {\n //@ts-ignore\n return x && y && typeof x === 'object' && typeof y === 'object' ? Object.keys(x).length === Object.keys(y).length &&\n //@ts-ignore\n Object.keys(x).reduce(function (isEqual, key) {\n return isEqual && deepEqual(x[key], y[key]);\n }, true) : x === y;\n}\n\nvar HotkeysContext = /*#__PURE__*/createContext({\n hotkeys: [],\n enabledScopes: [],\n toggleScope: function toggleScope() {},\n enableScope: function enableScope() {},\n disableScope: function disableScope() {}\n});\nvar useHotkeysContext = function useHotkeysContext() {\n return useContext(HotkeysContext);\n};\nvar HotkeysProvider = function HotkeysProvider(_ref) {\n var _ref$initiallyActiveS = _ref.initiallyActiveScopes,\n initiallyActiveScopes = _ref$initiallyActiveS === void 0 ? ['*'] : _ref$initiallyActiveS,\n children = _ref.children;\n var _useState = useState((initiallyActiveScopes == null ? void 0 : initiallyActiveScopes.length) > 0 ? initiallyActiveScopes : ['*']),\n internalActiveScopes = _useState[0],\n setInternalActiveScopes = _useState[1];\n var _useState2 = useState([]),\n boundHotkeys = _useState2[0],\n setBoundHotkeys = _useState2[1];\n var enableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n });\n }, []);\n var disableScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n });\n }, []);\n var toggleScope = useCallback(function (scope) {\n setInternalActiveScopes(function (prev) {\n if (prev.includes(scope)) {\n if (prev.filter(function (s) {\n return s !== scope;\n }).length === 0) {\n return ['*'];\n } else {\n return prev.filter(function (s) {\n return s !== scope;\n });\n }\n } else {\n if (prev.includes('*')) {\n return [scope];\n }\n return Array.from(new Set([].concat(prev, [scope])));\n }\n });\n }, []);\n var addBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return [].concat(prev, [hotkey]);\n });\n }, []);\n var removeBoundHotkey = useCallback(function (hotkey) {\n setBoundHotkeys(function (prev) {\n return prev.filter(function (h) {\n return !deepEqual(h, hotkey);\n });\n });\n }, []);\n return /*#__PURE__*/jsx(HotkeysContext.Provider, {\n value: {\n enabledScopes: internalActiveScopes,\n hotkeys: boundHotkeys,\n enableScope: enableScope,\n disableScope: disableScope,\n toggleScope: toggleScope\n },\n children: /*#__PURE__*/jsx(BoundHotkeysProxyProviderProvider, {\n addHotkey: addBoundHotkey,\n removeHotkey: removeBoundHotkey,\n children: children\n })\n });\n};\n\nfunction useDeepEqualMemo(value) {\n var ref = useRef(undefined);\n if (!deepEqual(ref.current, value)) {\n ref.current = value;\n }\n return ref.current;\n}\n\nvar stopPropagation = function stopPropagation(e) {\n e.stopPropagation();\n e.preventDefault();\n e.stopImmediatePropagation();\n};\nvar useSafeLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction useHotkeys(keys, callback, options, dependencies) {\n var _useState = useState(null),\n ref = _useState[0],\n setRef = _useState[1];\n var hasTriggeredRef = useRef(false);\n var _options = !(options instanceof Array) ? options : !(dependencies instanceof Array) ? dependencies : undefined;\n var _keys = isReadonlyArray(keys) ? keys.join(_options == null ? void 0 : _options.splitKey) : keys;\n var _deps = options instanceof Array ? options : dependencies instanceof Array ? dependencies : undefined;\n var memoisedCB = useCallback(callback, _deps != null ? _deps : []);\n var cbRef = useRef(memoisedCB);\n if (_deps) {\n cbRef.current = memoisedCB;\n } else {\n cbRef.current = callback;\n }\n var memoisedOptions = useDeepEqualMemo(_options);\n var _useHotkeysContext = useHotkeysContext(),\n enabledScopes = _useHotkeysContext.enabledScopes;\n var proxy = useBoundHotkeysProxy();\n useSafeLayoutEffect(function () {\n if ((memoisedOptions == null ? void 0 : memoisedOptions.enabled) === false || !isScopeActive(enabledScopes, memoisedOptions == null ? void 0 : memoisedOptions.scopes)) {\n return;\n }\n var listener = function listener(e, isKeyUp) {\n var _e$target;\n if (isKeyUp === void 0) {\n isKeyUp = false;\n }\n if (isKeyboardEventTriggeredByInput(e) && !isHotkeyEnabledOnTag(e, memoisedOptions == null ? void 0 : memoisedOptions.enableOnFormTags)) {\n return;\n }\n // TODO: SINCE THE EVENT IS NOW ATTACHED TO THE REF, THE ACTIVE ELEMENT CAN NEVER BE INSIDE THE REF. THE HOTKEY ONLY TRIGGERS IF THE\n // REF IS THE ACTIVE ELEMENT. THIS IS A PROBLEM SINCE FOCUSED SUB COMPONENTS WON'T TRIGGER THE HOTKEY.\n if (ref !== null) {\n var rootNode = ref.getRootNode();\n if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement !== ref && !ref.contains(rootNode.activeElement)) {\n stopPropagation(e);\n return;\n }\n }\n if ((_e$target = e.target) != null && _e$target.isContentEditable && !(memoisedOptions != null && memoisedOptions.enableOnContentEditable)) {\n return;\n }\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n var _hotkey$keys;\n var hotkey = parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey);\n if (isHotkeyMatchingKeyboardEvent(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.ignoreModifiers) || (_hotkey$keys = hotkey.keys) != null && _hotkey$keys.includes('*')) {\n if (memoisedOptions != null && memoisedOptions.ignoreEventWhen != null && memoisedOptions.ignoreEventWhen(e)) {\n return;\n }\n if (isKeyUp && hasTriggeredRef.current) {\n return;\n }\n maybePreventDefault(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.preventDefault);\n if (!isHotkeyEnabled(e, hotkey, memoisedOptions == null ? void 0 : memoisedOptions.enabled)) {\n stopPropagation(e);\n return;\n }\n // Execute the user callback for that hotkey\n cbRef.current(e, hotkey);\n if (!isKeyUp) {\n hasTriggeredRef.current = true;\n }\n }\n });\n };\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n pushToCurrentlyPressedKeys(mapKey(event.code));\n if ((memoisedOptions == null ? void 0 : memoisedOptions.keydown) === undefined && (memoisedOptions == null ? void 0 : memoisedOptions.keyup) !== true || memoisedOptions != null && memoisedOptions.keydown) {\n listener(event);\n }\n };\n var handleKeyUp = function handleKeyUp(event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n removeFromCurrentlyPressedKeys(mapKey(event.code));\n hasTriggeredRef.current = false;\n if (memoisedOptions != null && memoisedOptions.keyup) {\n listener(event, true);\n }\n };\n var domNode = ref || (_options == null ? void 0 : _options.document) || document;\n // @ts-ignore\n domNode.addEventListener('keyup', handleKeyUp);\n // @ts-ignore\n domNode.addEventListener('keydown', handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.addHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n return function () {\n // @ts-ignore\n domNode.removeEventListener('keyup', handleKeyUp);\n // @ts-ignore\n domNode.removeEventListener('keydown', handleKeyDown);\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions == null ? void 0 : memoisedOptions.splitKey).forEach(function (key) {\n return proxy.removeHotkey(parseHotkey(key, memoisedOptions == null ? void 0 : memoisedOptions.combinationKey, memoisedOptions == null ? void 0 : memoisedOptions.description));\n });\n }\n };\n }, [ref, _keys, memoisedOptions, enabledScopes]);\n return setRef;\n}\n\nfunction useRecordHotkeys() {\n var _useState = useState(new Set()),\n keys = _useState[0],\n setKeys = _useState[1];\n var _useState2 = useState(false),\n isRecording = _useState2[0],\n setIsRecording = _useState2[1];\n var handler = useCallback(function (event) {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n setKeys(function (prev) {\n var newKeys = new Set(prev);\n newKeys.add(mapKey(event.code));\n return newKeys;\n });\n }, []);\n var stop = useCallback(function () {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', handler);\n setIsRecording(false);\n }\n }, [handler]);\n var start = useCallback(function () {\n setKeys(new Set());\n if (typeof document !== 'undefined') {\n stop();\n document.addEventListener('keydown', handler);\n setIsRecording(true);\n }\n }, [handler, stop]);\n var resetKeys = useCallback(function () {\n setKeys(new Set());\n }, []);\n return [keys, {\n start: start,\n stop: stop,\n resetKeys: resetKeys,\n isRecording: isRecording\n }];\n}\n\nexport { HotkeysProvider, isHotkeyPressed, useHotkeys, useHotkeysContext, useRecordHotkeys };\n//# sourceMappingURL=react-hotkeys-hook.esm.js.map\n","import { useHotkeys } from 'react-hotkeys-hook';\n\nexport interface UseUndoRedoShortcutsProps {\n undo: () => void;\n redo: () => void;\n canUndo: boolean;\n canRedo: boolean;\n}\n\nexport const useUndoRedoShortcuts = (props: UseUndoRedoShortcutsProps) => {\n const { undo, redo, canRedo, canUndo } = props;\n const { isMac } = window.electronAPI?.platformInfo || {};\n\n let undoShortcut = 'ctrl+z';\n let redoShortcut = 'ctrl+y';\n\n if (isMac) {\n undoShortcut = 'mod+z';\n redoShortcut = 'mod+shift+z';\n }\n\n // set handler for undo\n useHotkeys(\n undoShortcut,\n event => {\n event.preventDefault();\n if (canUndo) {\n undo();\n }\n },\n {},\n [canUndo, undo],\n );\n\n // set handler for redo\n useHotkeys(\n redoShortcut,\n event => {\n event.preventDefault();\n if (canRedo) {\n redo();\n }\n },\n {},\n [canRedo, redo],\n );\n};\n","import type { ExtendedEditor } from 'document-model-libs';\nimport { atom, useAtomValue } from 'jotai';\nimport { unwrap } from 'jotai/utils';\nimport { useDefaultDocumentModelEditor } from 'src/hooks/useDefaultDocumentModelEditor';\nimport { ExternalProjectModule, loadPackages } from './document-model';\n\nexport const LOCAL_DOCUMENT_EDITORS = import.meta.env.LOCAL_DOCUMENT_EDITORS;\nconst LOAD_EXTERNAL_PROJECTS = import.meta.env.LOAD_EXTERNAL_PROJECTS;\n\nasync function loadEditors() {\n const baseEditorsModules = (await import(\n 'document-model-libs/editors'\n )) as Record<string, ExtendedEditor>;\n let baseEditors = Object.values(baseEditorsModules);\n\n if (LOAD_EXTERNAL_PROJECTS === 'true') {\n const externalEditors = (await loadPackages())\n .filter(module => !!module.documentModels)\n .map(module => (module as Required<ExternalProjectModule>).editors)\n .reduce((acc, val) => acc.concat(val), []);\n\n baseEditors = baseEditors.concat(externalEditors);\n }\n\n if (!LOCAL_DOCUMENT_EDITORS) {\n return baseEditors;\n }\n\n try {\n const localEditors = (await import(\n 'LOCAL_DOCUMENT_EDITORS'\n )) as unknown as Record<string, ExtendedEditor>;\n console.log('Loaded local document editors:', localEditors);\n\n return Object.values(localEditors).concat(baseEditors);\n } catch (e) {\n console.error('Error loading local document models', e);\n return baseEditors;\n }\n}\n\nconst editorsPromise = loadEditors();\n\nconst editorsAtom = atom<Promise<ExtendedEditor[]>>(editorsPromise);\nconst unwrappedEditorsAtom = unwrap(editorsAtom);\n\n// suspends the UI while editors are loading\nexport const useEditors = () => {\n return useAtomValue(editorsAtom);\n};\n\n// will return undefined until editors are initialized. Does not block rendering.\nexport const useUnwrappedEditors = () => {\n return useAtomValue(unwrappedEditorsAtom);\n};\n\nexport const useEditorsAsync = () => editorsPromise;\n\nconst getEditor = (\n documentType: string,\n editors: ExtendedEditor[],\n preferredEditorId?: string,\n) => {\n const preferredEditor = editors.find(\n e =>\n e.config?.id === preferredEditorId &&\n e.documentTypes.includes(documentType),\n );\n\n if (preferredEditor) return preferredEditor;\n\n const editor =\n editors.find(e => e.documentTypes.includes(documentType)) ||\n editors.find(e => e.documentTypes.includes('*'));\n\n return editor || null;\n};\n\nexport const useEditor = (documentType: string) => {\n const editors = useUnwrappedEditors();\n if (!editors) {\n return undefined;\n }\n return getEditor(documentType, editors);\n};\n\nexport const useGetEditor = () => {\n const editors = useUnwrappedEditors();\n const [defaultDocumentModelEditor] = useDefaultDocumentModelEditor();\n\n return (documentType: string) =>\n editors\n ? getEditor(documentType, editors, defaultDocumentModelEditor.value)\n : undefined;\n};\n\nexport const usePreloadEditor = () => {\n const editorsPromise = useEditorsAsync();\n return async (documentType: string) => {\n const editors = await editorsPromise;\n const editor = getEditor(documentType, editors);\n if (editor && 'preload' in editor.Component) {\n await (\n editor.Component as { preload: () => Promise<void> }\n ).preload();\n }\n };\n};\n","import { DefaultEditorLoader } from '@powerhousedao/design-system';\nimport { ComponentProps, ReactNode, useEffect, useState } from 'react';\n\ntype Props = ComponentProps<typeof DefaultEditorLoader> & {\n loadingTimeout?: number;\n customEditorLoader?: ReactNode;\n};\nexport function EditorLoader(props: Props) {\n const [showLoading, setShowLoading] = useState(false);\n\n // only shows the loader after some time has passed\n useEffect(() => {\n setTimeout(() => {\n setShowLoading(true);\n }, props.loadingTimeout ?? 200);\n }, [props]);\n\n if (!showLoading) return null;\n\n const { customEditorLoader, ...defaultProps } = props;\n\n if (customEditorLoader) return <>{customEditorLoader}</>;\n\n return <DefaultEditorLoader {...defaultProps} />;\n}\n","import {\n DocumentToolbar,\n FILE,\n RevisionHistory,\n} from '@powerhousedao/design-system';\nimport {\n Action,\n ActionErrorCallback,\n BaseAction,\n Document,\n EditorContext,\n Operation,\n actions,\n} from 'document-model/document';\nimport { useAtomValue } from 'jotai';\nimport { Suspense, useEffect, useMemo, useState } from 'react';\nimport { useConnectCrypto, useConnectDid } from 'src/hooks/useConnectCrypto';\nimport { TUiNodes } from 'src/hooks/useUiNodes';\nimport { useUndoRedoShortcuts } from 'src/hooks/useUndoRedoShortcuts';\nimport { useUserPermissions } from 'src/hooks/useUserPermissions';\nimport { logger } from 'src/services/logger';\nimport { useGetDocumentModel } from 'src/store/document-model';\nimport { useGetEditor } from 'src/store/editor';\nimport { themeAtom } from 'src/store/theme';\nimport { useUser } from 'src/store/user';\nimport {\n DocumentDispatchCallback,\n useDocumentDispatch,\n} from 'src/utils/document-model';\nimport { addActionContext, signOperation } from 'src/utils/signature';\nimport Button from './button';\nimport { EditorLoader } from './editor-loader';\n\nexport type EditorProps<\n T = unknown,\n A extends Action = Action,\n LocalState = unknown,\n> = TUiNodes & {\n document: Document<T, A, LocalState> | undefined;\n onExport: () => void;\n onAddOperation: (operation: Operation) => Promise<void>;\n onOpenSwitchboardLink?: () => Promise<void>;\n onChange?: (document: Document<T, A, LocalState>) => void;\n};\n\nfunction EditorError({ message }: { message: string }) {\n return (\n <div className=\"flex size-full items-center justify-center\">\n <h3 className=\"text-lg font-semibold\">{message}</h3>\n </div>\n );\n}\n\nexport function DocumentEditor(props: EditorProps) {\n const {\n selectedNode,\n fileNodeDocument,\n selectedParentNode,\n document: initialDocument,\n setSelectedNode,\n onChange,\n onExport,\n onAddOperation,\n onOpenSwitchboardLink,\n } = props;\n const [showRevisionHistory, setShowRevisionHistory] = useState(false);\n const theme = useAtomValue(themeAtom);\n const user = useUser() || undefined;\n const connectDid = useConnectDid();\n const { sign } = useConnectCrypto();\n const getDocumentModel = useGetDocumentModel();\n const getEditor = useGetEditor();\n\n const documentType = fileNodeDocument?.documentType;\n const documentModel = useMemo(\n () => (documentType ? getDocumentModel(documentType) : undefined),\n [documentType, getDocumentModel],\n );\n\n const editor = useMemo(\n () => (documentType ? getEditor(documentType) : undefined),\n [documentType, getEditor],\n );\n\n const [document, _dispatch, error] = useDocumentDispatch(\n documentModel?.reducer,\n initialDocument,\n );\n const context: EditorContext = useMemo(\n () => ({ theme, user }),\n [theme, user],\n );\n const userPermissions = useUserPermissions();\n\n const isLoadingDocument =\n fileNodeDocument?.status === 'LOADING' || !document;\n const isLoadingEditor =\n editor === undefined ||\n (!!document &&\n editor &&\n !editor.documentTypes.includes(document.documentType) &&\n !editor.documentTypes.includes('*'));\n\n const canUndo =\n !!document &&\n (document.revision.global > 0 || document.revision.local > 0);\n const canRedo = !!document?.clipboard.length;\n useUndoRedoShortcuts({ undo, redo, canUndo, canRedo });\n\n function dispatch(\n action: BaseAction | Action,\n onErrorCallback?: ActionErrorCallback,\n ) {\n const callback: DocumentDispatchCallback<unknown, Action, unknown> = (\n operation,\n state,\n ) => {\n if (!selectedNode) return;\n\n const { prevState } = state;\n\n signOperation(\n operation,\n sign,\n selectedNode.id,\n prevState,\n documentModel?.reducer,\n user,\n )\n .then(op => {\n window.documentEditorDebugTools?.pushOperation(operation);\n return onAddOperation(op);\n })\n .catch(logger.error);\n };\n\n _dispatch(\n addActionContext(action, connectDid, user),\n callback,\n onErrorCallback,\n );\n }\n\n useEffect(() => {\n return () => {\n window.documentEditorDebugTools?.clear();\n };\n }, []);\n\n useEffect(() => {\n if (!document) return;\n window.documentEditorDebugTools?.setDocument(document);\n onChange?.(document);\n }, [document]);\n\n function undo() {\n dispatch(actions.undo());\n }\n\n function redo() {\n dispatch(actions.redo());\n }\n\n function onClose() {\n setSelectedNode(selectedParentNode);\n }\n\n if (fileNodeDocument?.status === 'ERROR') {\n return <EditorError message={'Error loading document'} />;\n }\n\n if (isLoadingDocument || isLoadingEditor) {\n const message = isLoadingDocument\n ? 'Loading document'\n : 'Loading editor';\n return <EditorLoader message={message} />;\n }\n\n if (selectedNode?.kind !== FILE) {\n return null;\n }\n\n if (!documentModel) {\n return (\n <EditorError\n message={`Document of type '${documentType}' is not supported`}\n />\n );\n }\n\n if (editor === null) {\n return (\n <EditorError\n message={`No editor available for document of type '${documentType}'`}\n />\n );\n }\n\n const EditorComponent = editor.Component;\n const {\n disableExternalControls,\n documentToolbarEnabled,\n showSwitchboardLink,\n } = editor.config || {};\n\n return (\n <div className=\"relative h-full\" id=\"document-editor-context\">\n {documentToolbarEnabled &&\n disableExternalControls &&\n !showRevisionHistory && (\n <DocumentToolbar\n onClose={onClose}\n onExport={onExport}\n onShowRevisionHistory={() =>\n setShowRevisionHistory(true)\n }\n title={document.name}\n {...(showSwitchboardLink && {\n onSwitchboardLinkClick: onOpenSwitchboardLink,\n })}\n />\n )}\n {!disableExternalControls && (\n <div className=\"mb-4 flex justify-end gap-10\">\n <Button onClick={onExport}>Export</Button>\n <div className=\"flex gap-4\">\n <Button onClick={undo} disabled={!canUndo}>\n Undo\n </Button>\n <Button onClick={redo} disabled={!canRedo}>\n Redo\n </Button>\n </div>\n <div className=\"flex gap-4\">\n <Button onClick={onClose}>Close</Button>\n </div>\n </div>\n )}\n {showRevisionHistory ? (\n <RevisionHistory\n documentTitle={document.name}\n documentId={selectedNode.id}\n globalOperations={document.operations.global}\n localOperations={document.operations.local}\n onClose={() => setShowRevisionHistory(false)}\n />\n ) : (\n <Suspense fallback={<EditorLoader />}>\n <EditorComponent\n error={error}\n context={context}\n document={document}\n documentNodeName={selectedNode.name}\n dispatch={dispatch}\n onClose={onClose}\n onExport={onExport}\n canUndo={canUndo}\n canRedo={canRedo}\n undo={undo}\n redo={redo}\n onSwitchboardLinkClick={onOpenSwitchboardLink}\n onShowRevisionHistory={() =>\n setShowRevisionHistory(true)\n }\n isAllowedToCreateDocuments={\n userPermissions?.isAllowedToCreateDocuments ?? false\n }\n isAllowedToEditDocuments={\n userPermissions?.isAllowedToEditDocuments ?? false\n }\n />\n </Suspense>\n )}\n </div>\n );\n}\n","import { DivProps } from '@powerhousedao/design-system';\nimport React from 'react';\n\nexport interface ContentSection extends DivProps {\n title?: string;\n}\n\nexport const ContentSection: React.FC<ContentSection> = ({\n title,\n children,\n ...divProps\n}) => {\n return (\n <div {...divProps}>\n {title && (\n <div className=\"mb-4 text-base font-semibold text-gray-600\">\n {title}\n </div>\n )}\n <div className=\"flex flex-wrap gap-2\">{children}</div>\n </div>\n );\n};\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n return () => {\n var _a, _b, _c, _d;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n (_d = opts == null ? void 0 : opts.onChange) == null ? void 0 : _d.call(opts, result);\n return result;\n };\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(element.getBoundingClientRect());\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(element.getBoundingClientRect());\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"scroll\", handler);\n element.removeEventListener(\"scrollend\", endHandler);\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"scroll\", handler);\n element.removeEventListener(\"scrollend\", endHandler);\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return Math.round(\n element.getBoundingClientRect()[instance.options.horizontal ? \"width\" : \"height\"]\n );\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollToIndexTimeoutId = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n this._measureElement(entry.target, entry);\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: true,\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n this.maybeNotify();\n })\n );\n }\n };\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled) => {\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n return [];\n }\n if (this.measurementsCache.length === 0) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n const measurements = this.measurementsCache.slice(0, min);\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n const lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [this.getMeasurements(), this.getSize(), this.getScrollOffset()],\n (measurements, outerSize, scrollOffset) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getIndexes = memo(\n () => [\n this.options.rangeExtractor,\n this.calculateRange(),\n this.options.overscan,\n this.options.count\n ],\n (rangeExtractor, range, overscan, count) => {\n return range === null ? [] : rangeExtractor({\n startIndex: range.startIndex,\n endIndex: range.endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this._measureElement = (node, entry) => {\n const index = this.indexFromElement(node);\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const key = item.key;\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n this.resizeItem = (index, size) => {\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key);\n }\n });\n return;\n }\n this._measureElement(node, void 0);\n };\n this.getVirtualItems = memo(\n () => [this.getIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getOffsetForAlignment = (toOffset, align) => {\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (toOffset >= scrollOffset + size) {\n align = \"end\";\n }\n }\n if (align === \"end\") {\n toOffset -= size;\n }\n const scrollSizeProp = this.options.horizontal ? \"scrollWidth\" : \"scrollHeight\";\n const scrollSize = this.scrollElement ? \"document\" in this.scrollElement ? this.scrollElement.document.documentElement[scrollSizeProp] : this.scrollElement[scrollSizeProp] : 0;\n const maxOffset = scrollSize - size;\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const item = this.measurementsCache[index];\n if (!item) {\n return void 0;\n }\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n const centerOffset = item.start - this.options.scrollPaddingStart + (item.size - size) / 2;\n switch (align) {\n case \"center\":\n return [this.getOffsetForAlignment(centerOffset, align), align];\n case \"end\":\n return [\n this.getOffsetForAlignment(\n item.end + this.options.scrollPaddingEnd,\n align\n ),\n align\n ];\n default:\n return [\n this.getOffsetForAlignment(\n item.start - this.options.scrollPaddingStart,\n align\n ),\n align\n ];\n }\n };\n this.isDynamicMode = () => this.elementsCache.size > 0;\n this.cancelScrollToIndex = () => {\n if (this.scrollToIndexTimeoutId !== null && this.targetWindow) {\n this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId);\n this.scrollToIndexTimeoutId = null;\n }\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n this.cancelScrollToIndex();\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: void 0,\n behavior\n });\n };\n this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n this.cancelScrollToIndex();\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n const offsetAndAlign = this.getOffsetForIndex(index, initialAlign);\n if (!offsetAndAlign) return;\n const [offset, align] = offsetAndAlign;\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n if (behavior !== \"smooth\" && this.isDynamicMode() && this.targetWindow) {\n this.scrollToIndexTimeoutId = this.targetWindow.setTimeout(() => {\n this.scrollToIndexTimeoutId = null;\n const elementInDOM = this.elementsCache.has(\n this.options.getItemKey(index)\n );\n if (elementInDOM) {\n const [latestOffset] = notUndefined(\n this.getOffsetForIndex(index, align)\n );\n if (!approxEqual(latestOffset, this.getScrollOffset())) {\n this.scrollToIndex(index, { align, behavior });\n }\n } else {\n this.scrollToIndex(index, { align, behavior });\n }\n });\n }\n };\n this.scrollBy = (delta, { behavior } = {}) => {\n this.cancelScrollToIndex();\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getScrollOffset() + delta, {\n adjustments: void 0,\n behavior\n });\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else {\n end = this.options.lanes === 1 ? ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0 : Math.max(\n ...measurements.slice(-this.options.lanes).map((m) => m.end)\n );\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset\n}) {\n const count = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n const startIndex = findNearestBinarySearch(0, count, getOffset, scrollOffset);\n let endIndex = startIndex;\n while (endIndex < count && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { observeElementRect, observeElementOffset, elementScroll, observeWindowRect, observeWindowOffset, windowScroll, Virtualizer } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase(options) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import { useEffect, useState } from 'react';\n\nexport const useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n\n useEffect(() => {\n const windowSizeHandler = () => {\n setWindowSize({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n });\n };\n\n window.addEventListener('resize', windowSizeHandler);\n\n return () => {\n window.removeEventListener('resize', windowSizeHandler);\n };\n }, []);\n\n return windowSize;\n};\n","import { FileItem, UiFileNode } from '@powerhousedao/design-system';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TUiNodes } from 'src/hooks/useUiNodes';\nimport { useWindowSize } from 'src/hooks/useWindowSize';\n\ntype Props = TUiNodes & {\n fileNodes: UiFileNode[];\n};\n\nconst GAP = 8;\nconst ITEM_WIDTH = 256;\nconst ITEM_HEIGHT = 48;\n\nconst USED_SPACE = 420;\n\nexport function FileContentView(props: Props) {\n const parentRef = useRef(null);\n const { t } = useTranslation();\n const windowSize = useWindowSize();\n const { fileNodes } = props;\n const availableWidth = windowSize.innerWidth - USED_SPACE;\n\n const columnCount = Math.floor(availableWidth / (ITEM_WIDTH + GAP)) || 1;\n const rowCount = Math.ceil(fileNodes.length / columnCount);\n\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: index => {\n if (index > 0) {\n return ITEM_HEIGHT + GAP;\n }\n return ITEM_HEIGHT;\n },\n overscan: 5,\n });\n\n const columnVirtualizer = useVirtualizer({\n horizontal: true,\n count: columnCount,\n getScrollElement: () => parentRef.current,\n estimateSize: index => {\n if (index > 0) {\n return ITEM_WIDTH + GAP;\n }\n return ITEM_WIDTH;\n },\n overscan: 5,\n });\n\n const getItemIndex = (rowIndex: number, columnIndex: number) =>\n rowIndex * columnCount + columnIndex;\n\n const getItem = (\n rowIndex: number,\n columnIndex: number,\n ): UiFileNode | null => {\n const index = getItemIndex(rowIndex, columnIndex);\n return fileNodes[index] || null;\n };\n\n if (fileNodes.length === 0) {\n return (\n <div className=\"mb-8 text-sm text-gray-400\">\n {t('folderView.sections.documents.empty')}\n </div>\n );\n }\n\n const renderItem = (rowIndex: number, columnIndex: number) => {\n const fileNode = getItem(rowIndex, columnIndex);\n\n if (!fileNode) {\n return null;\n }\n\n return (\n <div\n style={{\n marginLeft: columnIndex === 0 ? 0 : GAP,\n }}\n >\n <FileItem {...props} key={fileNode.id} uiNode={fileNode} />\n </div>\n );\n };\n\n return (\n <div\n ref={parentRef}\n style={{\n height: `400px`,\n width: `100%`,\n overflow: 'auto',\n }}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: `${columnVirtualizer.getTotalSize()}px`,\n position: 'relative',\n }}\n >\n {rowVirtualizer.getVirtualItems().map(virtualRow => (\n <React.Fragment key={virtualRow.key}>\n {columnVirtualizer\n .getVirtualItems()\n .map(virtualColumn => (\n <div\n key={virtualColumn.key}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n marginTop:\n virtualRow.index === 0 ? 0 : GAP,\n width: `${virtualColumn.size}px`,\n height: `${virtualRow.size}px`,\n transform: `translateX(${virtualColumn.start}px) translateY(${virtualRow.start}px)`,\n }}\n >\n {renderItem(\n virtualRow.index,\n virtualColumn.index,\n )}\n </div>\n ))}\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n}\n\nexport default FileContentView;\n","import {\n FILE,\n FOLDER,\n FolderItem,\n useDrop,\n} from '@powerhousedao/design-system';\nimport { useTranslation } from 'react-i18next';\nimport { TUiNodes } from 'src/hooks/useUiNodes';\nimport { sortUiNodesByName } from 'src/utils';\nimport { twMerge } from 'tailwind-merge';\nimport { ContentSection } from './content';\nimport FileContentView from './file-content-view';\n\nexport function FolderView(props: TUiNodes) {\n const { t } = useTranslation();\n const { selectedParentNode } = props;\n const { isDropTarget, dropProps } = useDrop({\n ...props,\n uiNode: selectedParentNode,\n });\n\n const folderNodes =\n selectedParentNode?.children\n .filter(node => node.kind === FOLDER)\n .sort(sortUiNodesByName) ?? [];\n\n const fileNodes =\n selectedParentNode?.children\n .filter(node => node.kind === FILE)\n .sort(sortUiNodesByName) ?? [];\n\n return (\n <div\n {...dropProps}\n className={twMerge(\n 'rounded-md border-2 border-transparent p-2',\n isDropTarget && 'border-dashed border-blue-100',\n )}\n >\n <ContentSection\n title={t('folderView.sections.folders.title')}\n className=\"mb-4\"\n >\n {folderNodes.length > 0 ? (\n folderNodes.map(folderNode => (\n <FolderItem\n {...props}\n key={folderNode.id}\n uiNode={folderNode}\n />\n ))\n ) : (\n <div className=\"mb-8 text-sm text-gray-400\">\n {t('folderView.sections.folders.empty')}\n </div>\n )}\n </ContentSection>\n <ContentSection title={t('folderView.sections.documents.title')}>\n <div\n className={twMerge(\n 'w-full',\n fileNodes.length > 0 ? 'min-h-[400px]' : 'min-h-14',\n )}\n >\n <FileContentView {...props} fileNodes={fileNodes} />\n </div>\n </ContentSection>\n </div>\n );\n}\n\nexport default FolderView;\n","import {\n Footer as DesignSystemFooter,\n FooterLink,\n Icon,\n} from '@powerhousedao/design-system';\nimport { Trans } from 'react-i18next';\nimport { useCookieBanner } from 'src/hooks/useCookieBanner';\nimport { openUrl } from 'src/utils/openUrl';\nimport { useModal } from './modal';\n\nexport const Footer = () => {\n const { showModal } = useModal();\n const [, setShowCookieBanner] = useCookieBanner();\n\n return (\n <DesignSystemFooter>\n <FooterLink\n onClick={() => {\n setShowCookieBanner(true);\n }}\n >\n <Trans i18nKey=\"footer.cookiePolicy\" />\n </FooterLink>\n <FooterLink onClick={() => showModal('disclaimerModal', {})}>\n <Trans i18nKey=\"footer.disclaimer\" />\n </FooterLink>\n <FooterLink\n id=\"ph-logo-link\"\n onClick={() => openUrl('https://www.powerhouse.inc/')}\n >\n <Trans\n i18nKey=\"footer.builtWith\"\n components={{\n icon: (\n <Icon\n name=\"PowerhouseLogoSmall\"\n size={16}\n className=\"mx-1\"\n />\n ),\n }}\n />\n </FooterLink>\n </DesignSystemFooter>\n );\n};\n","import {\n ConnectSearchBar,\n ConnectSearchBarProps,\n Icon,\n} from '@powerhousedao/design-system';\nimport { useTranslation } from 'react-i18next';\n\nconst defaultFilterItems: ConnectSearchBarProps['filterItems'] = [\n {\n id: 'project',\n label: '.project',\n icon: <Icon name=\"Project\" color=\"#FF6A55\" size={16} />,\n },\n {\n id: 'budget',\n label: '.budget',\n icon: <Icon name=\"BarChart\" color=\"#8E55EA\" size={16} />,\n },\n {\n id: 'profile',\n label: '.profile',\n icon: <Icon name=\"Person\" color=\"#3E90F0\" size={16} />,\n },\n {\n id: 'legal',\n label: '.legal',\n icon: <Icon name=\"Briefcase\" color=\"#4BAB71\" size={16} />,\n },\n {\n id: 'atlas',\n label: '.Atlas',\n icon: <Icon name=\"Globe\" color=\"#FF8A00\" size={16} />,\n },\n];\n\nexport const SearchBar = () => {\n const { t } = useTranslation();\n\n return (\n <ConnectSearchBar\n className=\"max-w-searchbar-width m-4 shrink-0 bg-gray-100\"\n placeholder={t('searchbar.placeholder')}\n filterLabel={t('searchbar.filterLabel')}\n filterItems={defaultFilterItems}\n />\n );\n};\n","import {\n DRIVE,\n FILE,\n UiDriveNode,\n UiNode,\n useUiNodesContext,\n} from '@powerhousedao/design-system';\nimport { useEffect } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\ntype RouteParams = {\n driveId?: string;\n '*'?: string;\n};\n\nfunction buildPathname(selectedNodePath: UiNode[]) {\n const driveNode = selectedNodePath[0];\n if (!driveNode) {\n return;\n }\n if (driveNode.kind !== DRIVE) {\n throw new Error(\n 'Node path is invalid, first node is not a drive node.',\n );\n }\n const driveNodeComponent = makeDriveNodeUrlComponent(driveNode);\n const nodePathComponents = selectedNodePath\n .slice(1)\n .map(node => encodeURIComponent(node.slug || node.name));\n const pathname = [driveNodeComponent, ...nodePathComponents].join('/');\n return pathname;\n}\n\nfunction makeDriveNodeUrlComponent(driveNode: UiDriveNode) {\n const component = driveNode.slug || driveNode.name || driveNode.id;\n\n return `/d/${encodeURIComponent(component)}`;\n}\n\nfunction getSelectedNodeFromPathname(\n driveNodes: (UiDriveNode | null)[],\n driveIdFromPathname: string | undefined,\n nodeNamesFromPathname: string | undefined,\n) {\n if (!driveIdFromPathname) {\n return driveNodes[0];\n }\n\n const driveId = decodeURIComponent(driveIdFromPathname);\n const driveNode = driveNodes.find(\n node =>\n node?.id === driveId ||\n node?.slug === driveId ||\n node?.name === driveId,\n );\n\n if (!driveNode) return driveNodes[0];\n if (!nodeNamesFromPathname) return driveNode;\n\n const nodeNames = nodeNamesFromPathname\n .split('/')\n .filter(Boolean)\n .map(decodeURIComponent);\n\n let selectedNode: UiNode = driveNode;\n\n for (const nodeName of nodeNames) {\n if (selectedNode.kind === FILE) break;\n\n const nextNode: UiNode | undefined = selectedNode.children.find(\n node => node.slug === nodeName || node.name === nodeName,\n );\n\n if (!nextNode) {\n console.error('Node not found:', nodeName);\n break;\n }\n\n selectedNode = nextNode;\n }\n\n return selectedNode;\n}\n\nexport const useNodeNavigation = () => {\n const navigate = useNavigate();\n const location = useLocation();\n const { search, pathname } = location;\n const params = useParams<RouteParams>();\n const { driveNodes, selectedNode, selectedNodePath, setSelectedNode } =\n useUiNodesContext();\n const driveIdFromPathname = params.driveId;\n const nodeNamesFromPathname = params['*'];\n const selectedNodeFromPathname = getSelectedNodeFromPathname(\n driveNodes,\n driveIdFromPathname,\n nodeNamesFromPathname,\n );\n const selectedNodePathname = buildPathname(selectedNodePath);\n\n // when selectedNodePathname changes, navigate to the new path\n useEffect(() => {\n if (!selectedNodePathname || selectedNodePathname === pathname) return;\n\n navigate({ pathname: selectedNodePathname, search });\n }, [search, navigate, selectedNodePathname]);\n\n // on first load, set the selected node from the pathname\n // defaults to setting the first drive node if no drive node is found\n useEffect(() => {\n if (selectedNode || !selectedNodeFromPathname) return;\n\n setSelectedNode(selectedNodeFromPathname);\n }, [selectedNode, selectedNodeFromPathname, setSelectedNode]);\n\n // respond to changes in the url (browser back and forward buttons)\n // update the selected node accordingly\n useEffect(() => {\n const selectedNodeFromPathname = getSelectedNodeFromPathname(\n driveNodes,\n driveIdFromPathname,\n nodeNamesFromPathname,\n );\n\n if (!selectedNodeFromPathname) return;\n\n setSelectedNode(selectedNodeFromPathname);\n }, [\n driveNodes,\n driveIdFromPathname,\n nodeNamesFromPathname,\n setSelectedNode,\n ]);\n};\n","import { Document, ValidationError } from 'document-model/document';\nimport {\n DocumentModel as DocumentModelClass,\n utils as documentModelUtils,\n} from 'document-model/document-model';\n\nexport const validateDocument = (document: Document) => {\n const errors: ValidationError[] = [];\n\n if (document.documentType !== 'powerhouse/document-model') {\n return errors;\n }\n\n const doc = document as unknown as DocumentModelClass;\n const specs = doc.state.global.specifications[0];\n\n // validate initial state errors\n const initialStateErrors = Object.keys(specs.state).reduce<\n ValidationError[]\n >((acc, scopeKey) => {\n const scope = scopeKey as keyof typeof specs.state;\n\n return [\n ...acc,\n ...documentModelUtils\n .validateInitialState(\n specs.state[scope].initialValue,\n scope !== 'global',\n )\n .map(err => ({\n ...err,\n message: `${err.message}. Scope: ${scope}`,\n details: { ...err.details, scope },\n })),\n ];\n }, []);\n\n // validate schema state errors\n const schemaStateErrors = Object.keys(specs.state).reduce<\n ValidationError[]\n >((acc, scopeKey) => {\n const scope = scopeKey as keyof typeof specs.state;\n const isGlobalScope = scope === 'global';\n\n return [\n ...acc,\n ...documentModelUtils\n .validateStateSchemaName(\n specs.state[scope].schema,\n // @ts-expect-error - Document model should know that name can be defined in global state\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n document.name || document.state.global?.name || '',\n !isGlobalScope ? scope : '',\n !isGlobalScope,\n )\n .map(err => ({\n ...err,\n message: `${err.message}. Scope: ${scope}`,\n details: { ...err.details, scope },\n })),\n ];\n }, []);\n\n // modules validation\n const modulesErrors = documentModelUtils.validateModules(specs.modules);\n\n return [...initialStateErrors, ...schemaStateErrors, ...modulesErrors];\n};\n","import { Breadcrumbs, FILE } from '@powerhousedao/design-system';\nimport { Document, DocumentModel, Operation } from 'document-model/document';\nimport { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Button from 'src/components/button';\nimport { DocumentEditor } from 'src/components/editors';\nimport FolderView from 'src/components/folder-view';\nimport { Footer } from 'src/components/footer';\nimport { useModal } from 'src/components/modal';\nimport { SearchBar } from 'src/components/search-bar';\nimport { useConnectConfig } from 'src/hooks/useConnectConfig';\nimport { useNodeNavigation } from 'src/hooks/useNodeNavigation';\nimport { useUiNodes } from 'src/hooks/useUiNodes';\nimport { usePreloadEditor } from 'src/store/editor';\nimport { exportFile } from 'src/utils';\nimport { validateDocument } from 'src/utils/validate-document';\n\nconst getDocumentModelName = (name: string) => {\n if (name === 'RealWorldAssets') {\n return 'RWA Portfolio';\n }\n\n return name;\n};\n\nexport default function Content() {\n const [connectConfig] = useConnectConfig();\n const { t } = useTranslation();\n const uiNodes = useUiNodes();\n const {\n selectedNode,\n selectedDriveNode,\n selectedParentNode,\n isRemoteDrive,\n isAllowedToCreateDocuments,\n fileNodeDocument,\n selectedDocument,\n documentModels,\n setSelectedNode,\n openSwitchboardLink,\n setSelectedDocument,\n addOperationToSelectedDocument,\n addFile,\n renameNode,\n getDocumentModel,\n } = useUiNodes();\n const { showModal } = useModal();\n const preloadEditor = usePreloadEditor();\n useNodeNavigation();\n\n // preload document editors\n useEffect(() => {\n if (!documentModels) return;\n // waits 1 second to preload editors\n const requestIC = window.requestIdleCallback ?? setTimeout;\n const cancelIC = window.cancelIdleCallback ?? clearTimeout;\n\n const id = requestIC(async () => {\n for (const documentModel of documentModels) {\n await preloadEditor(documentModel.documentModel.id);\n }\n });\n return () => cancelIC(id);\n }, [documentModels, preloadEditor]);\n\n useEffect(() => {\n return window.electronAPI?.handleFileOpen(async file => {\n if (!selectedDriveNode || selectedNode?.kind !== FILE) {\n return;\n }\n\n await addFile(\n file.content,\n selectedDriveNode.id,\n file.name,\n selectedNode.parentFolder,\n );\n });\n }, [selectedDriveNode, selectedNode, addFile]);\n\n async function handleAddOperationToSelectedDocument(operation: Operation) {\n if (!selectedDocument) {\n throw new Error('No document selected');\n }\n if (!addOperationToSelectedDocument) {\n throw new Error('No add operation function defined');\n }\n await addOperationToSelectedDocument(operation);\n }\n\n function createDocument(documentModel: DocumentModel) {\n if (!selectedDriveNode) return;\n\n showModal('createDocument', {\n documentModel,\n selectedParentNode,\n setSelectedNode,\n });\n }\n\n function exportDocument(document: Document) {\n const validationErrors = validateDocument(document);\n\n if (validationErrors.length) {\n showModal('confirmationModal', {\n title: t('modals.exportDocumentWithErrors.title'),\n body: (\n <div>\n <p>{t('modals.exportDocumentWithErrors.body')}</p>\n <ul className=\"mt-4 flex list-disc flex-col items-start px-4 text-xs\">\n {validationErrors.map((error, index) => (\n <li key={index}>{error.message}</li>\n ))}\n </ul>\n </div>\n ),\n cancelLabel: t('common.cancel'),\n continueLabel: t('common.export'),\n onCancel(closeModal) {\n closeModal();\n },\n onContinue(closeModal) {\n closeModal();\n return exportFile(document, getDocumentModel);\n },\n });\n } else {\n return exportFile(document, getDocumentModel);\n }\n }\n\n const onOpenSwitchboardLink = async () => {\n await openSwitchboardLink(selectedNode);\n };\n\n const onDocumentChangeHandler = (document: Document) => {\n setSelectedDocument(document);\n\n if (\n !!selectedNode &&\n document.name !== '' &&\n selectedNode.name !== document.name\n ) {\n return renameNode(\n selectedNode.driveId,\n selectedNode.id,\n document.name,\n );\n }\n };\n\n return (\n <div\n className=\"flex h-full flex-col overflow-auto bg-gray-100 p-6 pb-3\"\n id=\"content-view\"\n >\n {fileNodeDocument ? (\n <div className=\"flex-1 rounded-2xl bg-gray-50 p-4\">\n <DocumentEditor\n {...uiNodes}\n document={selectedDocument}\n onChange={onDocumentChangeHandler}\n onExport={() =>\n selectedDocument && exportDocument(selectedDocument)\n }\n onAddOperation={handleAddOperationToSelectedDocument}\n {...(isRemoteDrive && { onOpenSwitchboardLink })}\n />\n </div>\n ) : (\n <div className=\"grow overflow-auto rounded-2xl bg-gray-50 p-2\">\n <Breadcrumbs {...uiNodes} />\n {connectConfig.content.showSearchBar && <SearchBar />}\n <div className=\"px-4\">\n <div className=\"mb-5\">\n <FolderView {...uiNodes} />\n </div>\n {isAllowedToCreateDocuments && (\n <>\n <h3 className=\"mb-3 mt-4 text-xl font-bold text-gray-600\">\n New document\n </h3>\n <div className=\"flex w-full flex-wrap gap-4\">\n {documentModels?.map(doc => (\n <Button\n key={doc.documentModel.id}\n aria-details={\n doc.documentModel.description\n }\n className=\"bg-gray-200 text-slate-800\"\n onClick={() => createDocument(doc)}\n >\n <span className=\"text-sm\">\n {getDocumentModelName(\n doc.documentModel.name,\n )}\n </span>\n </Button>\n ))}\n </div>\n </>\n )}\n </div>\n </div>\n )}\n <div className=\"flex w-full flex-row justify-end pr-3 pt-3\">\n <Footer />\n </div>\n </div>\n );\n}\n"],"file":"assets/content-BmCNR4Pw.js"}