@powerhousedao/connect 1.0.0 → 1.0.8
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.
- package/dist/.env +13 -3
- package/dist/assets/app-Bw1Ba-jV.js +79356 -0
- package/dist/assets/app-D3TxLTK-.css +5634 -0
- package/dist/assets/app-loader-CjrEwupY.css +5481 -0
- package/dist/assets/app-loader-KTD3Q6e9.js +31333 -0
- package/dist/assets/ccip-D3HujWHr.js +170 -0
- package/dist/assets/connect-loader-CvOC68Ih.mp4 +0 -0
- package/dist/assets/content-D3TuBhK9.js +3937 -0
- package/dist/assets/home-bg-BEhF9NuW.png +0 -0
- package/dist/assets/index-DpasqVlD.js +12 -0
- package/dist/assets/index-DsNVpRhT.js +46414 -0
- package/dist/assets/index-yFk8X8m1.js +2560 -0
- package/dist/assets/main.CzEw2R-H.js +105 -0
- package/dist/assets/powerhouse-rounded-CeKGGUG4.png +0 -0
- package/dist/assets/renown-short-hover-BiSLBV7L.png +0 -0
- package/dist/assets/rwa-report-Bb0W5-ac.png +0 -0
- package/dist/assets/style-D4JhTt_m.css +1663 -0
- package/dist/hmr.js +1 -0
- package/dist/icon.ico +0 -0
- package/dist/index.html +49 -8
- package/dist/modules/@powerhousedao/reactor-browser/chunk-2ESYSVXG.js +48 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-2X2M6BYG.js +2542 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-45DCPCA7.js +67 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-4LZZ55AN.js +82 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-6AXML2S3.js +113 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-7OQWVUC5.js +43 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-DKDARAJS.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-F3RCGUF6.js +53 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-FQF4YAVC.js +11917 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-FW7N6EJH.js +786 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-G6LMXRY5.js +50 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-GDP7BUIH.js +45 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-IQTSFTNF.js +48 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-J5TYPY7U.js +36 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-LH2T6NLN.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-LRNZZ3SR.js +14 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-M2UUQ5LH.js +250 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-OVGOA2P5.js +11 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-P46ZMPJ3.js +178 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-P6NJ6IAQ.js +12 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-POMUCSTC.js +2459 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-QXHTR6KF.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-RGIB4DD4.js +162 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-U36SV333.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-XBTEGV5M.js +17 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-Y7NTRTMT.js +25 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-YG67WAIS.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-YOX3ZAET.js +13978 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-YWKVPJNL.js +52 -0
- package/dist/modules/@powerhousedao/reactor-browser/chunk-ZL5IPB6D.js +0 -0
- package/dist/modules/@powerhousedao/reactor-browser/context/index.js +16 -0
- package/dist/modules/@powerhousedao/reactor-browser/context/read-mode.js +15 -0
- package/dist/modules/@powerhousedao/reactor-browser/crypto/browser.js +7 -0
- package/dist/modules/@powerhousedao/reactor-browser/crypto/index.js +7 -0
- package/dist/modules/@powerhousedao/reactor-browser/document-model.js +10 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/document-state.js +96 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/index.js +98 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useAddDebouncedOperations.js +11 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useConnectCrypto.js +12 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocument.js +7 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDispatch.js +7 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentDrives.js +13 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDocumentEditor.js +20 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActions.js +9 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveActionsWithUiNodes.js +14 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useDriveContext.js +9 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useUiNodesContext.js +46 -0
- package/dist/modules/@powerhousedao/reactor-browser/hooks/useUserPermissions.js +7 -0
- package/dist/modules/@powerhousedao/reactor-browser/index.js +125 -0
- package/dist/modules/@powerhousedao/reactor-browser/reactor.js +11 -0
- package/dist/modules/@powerhousedao/reactor-browser/renown/constants.js +53 -0
- package/dist/modules/@powerhousedao/reactor-browser/renown/types.js +1 -0
- package/dist/modules/@powerhousedao/reactor-browser/storage/index.js +1 -0
- package/dist/modules/@powerhousedao/reactor-browser/storage/types.js +1 -0
- package/dist/modules/@powerhousedao/reactor-browser/uiNodes/constants.js +37 -0
- package/dist/modules/@powerhousedao/reactor-browser/uiNodes/types.js +1 -0
- package/dist/modules/@powerhousedao/reactor-browser/utils/export-document.js +8 -0
- package/dist/modules/@powerhousedao/reactor-browser/utils/index.js +9 -0
- package/dist/modules/@powerhousedao/reactor-browser/utils/signature.js +10 -0
- package/dist/service-worker.js +46 -2
- package/dist/swEnv.js +10 -6
- package/dist/vite-envs.sh +69 -21
- package/nginx.conf +93 -0
- package/nginx.sh +10 -0
- package/package.json +35 -52
- package/dist/assets/ArrowFilledRight-BXP1j8Cl.js +0 -2
- package/dist/assets/ArrowFilledRight-BXP1j8Cl.js.map +0 -1
- package/dist/assets/ArrowFilledRight-blx8xu7X-D3d8PUWh.js +0 -2
- package/dist/assets/ArrowFilledRight-blx8xu7X-D3d8PUWh.js.map +0 -1
- package/dist/assets/ArrowLeft-7pYNK4eX-8ZR_YHAJ.js +0 -2
- package/dist/assets/ArrowLeft-7pYNK4eX-8ZR_YHAJ.js.map +0 -1
- package/dist/assets/ArrowLeft-8ZR_YHAJ.js +0 -2
- package/dist/assets/ArrowLeft-8ZR_YHAJ.js.map +0 -1
- package/dist/assets/ArrowUp-Bbr_dwo_-C5ppCQo4.js +0 -2
- package/dist/assets/ArrowUp-Bbr_dwo_-C5ppCQo4.js.map +0 -1
- package/dist/assets/ArrowUp-E2jS6Wzt.js +0 -2
- package/dist/assets/ArrowUp-E2jS6Wzt.js.map +0 -1
- package/dist/assets/BarChart-B0G05Nfd-CHDJ7OaJ.js +0 -2
- package/dist/assets/BarChart-B0G05Nfd-CHDJ7OaJ.js.map +0 -1
- package/dist/assets/BarChart-C-E6t7dt.js +0 -2
- package/dist/assets/BarChart-C-E6t7dt.js.map +0 -1
- package/dist/assets/BaseArrowLeft-DBzhFHMt-Dkbf2sWs.js +0 -2
- package/dist/assets/BaseArrowLeft-DBzhFHMt-Dkbf2sWs.js.map +0 -1
- package/dist/assets/BaseArrowLeft-DtHrkTW4.js +0 -2
- package/dist/assets/BaseArrowLeft-DtHrkTW4.js.map +0 -1
- package/dist/assets/BaseArrowRight-BIwzFHnh.js +0 -2
- package/dist/assets/BaseArrowRight-BIwzFHnh.js.map +0 -1
- package/dist/assets/BaseArrowRight-DYQTBWAs-CkkPllYm.js +0 -2
- package/dist/assets/BaseArrowRight-DYQTBWAs-CkkPllYm.js.map +0 -1
- package/dist/assets/Braces-3LcexUsR.js +0 -2
- package/dist/assets/Braces-3LcexUsR.js.map +0 -1
- package/dist/assets/Braces-N-sH2Zyc-3LcexUsR.js +0 -2
- package/dist/assets/Braces-N-sH2Zyc-3LcexUsR.js.map +0 -1
- package/dist/assets/Branch-CWdBw1_P-CmGdOXsI.js +0 -2
- package/dist/assets/Branch-CWdBw1_P-CmGdOXsI.js.map +0 -1
- package/dist/assets/Branch-D0CssEh3.js +0 -2
- package/dist/assets/Branch-D0CssEh3.js.map +0 -1
- package/dist/assets/BrickGlobe-67zaG6_H-DP0By6z_.js +0 -2
- package/dist/assets/BrickGlobe-67zaG6_H-DP0By6z_.js.map +0 -1
- package/dist/assets/BrickGlobe-CdHw7ZVP.js +0 -2
- package/dist/assets/BrickGlobe-CdHw7ZVP.js.map +0 -1
- package/dist/assets/Briefcase-CV2bgnSj.js +0 -2
- package/dist/assets/Briefcase-CV2bgnSj.js.map +0 -1
- package/dist/assets/Briefcase-CedW3KRR-DO5_k15F.js +0 -2
- package/dist/assets/Briefcase-CedW3KRR-DO5_k15F.js.map +0 -1
- package/dist/assets/Calendar-C-6HV96D-YetudWvP.js +0 -2
- package/dist/assets/Calendar-C-6HV96D-YetudWvP.js.map +0 -1
- package/dist/assets/Calendar-DuXN-sPt.js +0 -2
- package/dist/assets/Calendar-DuXN-sPt.js.map +0 -1
- package/dist/assets/CalendarTime-Bhjzlgn_-BVlYgNLL.js +0 -2
- package/dist/assets/CalendarTime-Bhjzlgn_-BVlYgNLL.js.map +0 -1
- package/dist/assets/CalendarTime-BowYBiVM.js +0 -2
- package/dist/assets/CalendarTime-BowYBiVM.js.map +0 -1
- package/dist/assets/Caret-Ep0j0fz2-By3ojfim.js +0 -2
- package/dist/assets/Caret-Ep0j0fz2-By3ojfim.js.map +0 -1
- package/dist/assets/Caret-r16V7Hcs.js +0 -2
- package/dist/assets/Caret-r16V7Hcs.js.map +0 -1
- package/dist/assets/CaretDown-3X7LFYBf-C43xdKg8.js +0 -2
- package/dist/assets/CaretDown-3X7LFYBf-C43xdKg8.js.map +0 -1
- package/dist/assets/CaretDown-DljrBfIz.js +0 -2
- package/dist/assets/CaretDown-DljrBfIz.js.map +0 -1
- package/dist/assets/CaretLeft-B_Lzd_Rn.js +0 -2
- package/dist/assets/CaretLeft-B_Lzd_Rn.js.map +0 -1
- package/dist/assets/CaretLeft-Df3E-68c-wke5zKLt.js +0 -2
- package/dist/assets/CaretLeft-Df3E-68c-wke5zKLt.js.map +0 -1
- package/dist/assets/CaretRight-Bbz5nCpg.js +0 -2
- package/dist/assets/CaretRight-Bbz5nCpg.js.map +0 -1
- package/dist/assets/CaretRight-DSVWUSka-Cx0Mkcqa.js +0 -2
- package/dist/assets/CaretRight-DSVWUSka-Cx0Mkcqa.js.map +0 -1
- package/dist/assets/CaretSort-BkGdLETT-DVOzEEqR.js +0 -2
- package/dist/assets/CaretSort-BkGdLETT-DVOzEEqR.js.map +0 -1
- package/dist/assets/CaretSort-DSgBum1h.js +0 -2
- package/dist/assets/CaretSort-DSgBum1h.js.map +0 -1
- package/dist/assets/Check-CbV9BYHY.js +0 -2
- package/dist/assets/Check-CbV9BYHY.js.map +0 -1
- package/dist/assets/Check-DV-U4AEq-B582NMZp.js +0 -2
- package/dist/assets/Check-DV-U4AEq-B582NMZp.js.map +0 -1
- package/dist/assets/CheckCircle-CX2jIKoF.js +0 -2
- package/dist/assets/CheckCircle-CX2jIKoF.js.map +0 -1
- package/dist/assets/CheckCircle-DI5fEgGd-CVF4LDhR.js +0 -2
- package/dist/assets/CheckCircle-DI5fEgGd-CVF4LDhR.js.map +0 -1
- package/dist/assets/CheckCircleFill-C-F0v5mB-BSW1YMqM.js +0 -2
- package/dist/assets/CheckCircleFill-C-F0v5mB-BSW1YMqM.js.map +0 -1
- package/dist/assets/CheckCircleFill-DLK12sW5.js +0 -2
- package/dist/assets/CheckCircleFill-DLK12sW5.js.map +0 -1
- package/dist/assets/Checkmark-BXnfChpo-CyQitGI2.js +0 -2
- package/dist/assets/Checkmark-BXnfChpo-CyQitGI2.js.map +0 -1
- package/dist/assets/Checkmark-DBvUEZAd.js +0 -2
- package/dist/assets/Checkmark-DBvUEZAd.js.map +0 -1
- package/dist/assets/ChevronDown-eUsCPXcB.js +0 -2
- package/dist/assets/ChevronDown-eUsCPXcB.js.map +0 -1
- package/dist/assets/ChevronDown-ouBxrU-k-eUsCPXcB.js +0 -2
- package/dist/assets/ChevronDown-ouBxrU-k-eUsCPXcB.js.map +0 -1
- package/dist/assets/Circle-8dOehHQf.js +0 -2
- package/dist/assets/Circle-8dOehHQf.js.map +0 -1
- package/dist/assets/Circle-n3-Wh4HS-8dOehHQf.js +0 -2
- package/dist/assets/Circle-n3-Wh4HS-8dOehHQf.js.map +0 -1
- package/dist/assets/CircleInfo-BhZY3C2Q-CZgYK1h2.js +0 -2
- package/dist/assets/CircleInfo-BhZY3C2Q-CZgYK1h2.js.map +0 -1
- package/dist/assets/CircleInfo-D0ktZDko.js +0 -2
- package/dist/assets/CircleInfo-D0ktZDko.js.map +0 -1
- package/dist/assets/Clock-CudavWaE.js +0 -2
- package/dist/assets/Clock-CudavWaE.js.map +0 -1
- package/dist/assets/Clock-DF-XMxha-CudavWaE.js +0 -2
- package/dist/assets/Clock-DF-XMxha-CudavWaE.js.map +0 -1
- package/dist/assets/ClockFill-Bd0t48q7-CcfHiJtH.js +0 -2
- package/dist/assets/ClockFill-Bd0t48q7-CcfHiJtH.js.map +0 -1
- package/dist/assets/ClockFill-yWs52y_e.js +0 -2
- package/dist/assets/ClockFill-yWs52y_e.js.map +0 -1
- package/dist/assets/CloudSlash-B-zJBjaD-CxVyp-Ac.js +0 -2
- package/dist/assets/CloudSlash-B-zJBjaD-CxVyp-Ac.js.map +0 -1
- package/dist/assets/CloudSlash-D18Hl3VW.js +0 -2
- package/dist/assets/CloudSlash-D18Hl3VW.js.map +0 -1
- package/dist/assets/Collapse-BOxZH5-e.js +0 -2
- package/dist/assets/Collapse-BOxZH5-e.js.map +0 -1
- package/dist/assets/Collapse-DRDB8Czs-CGcuZQgy.js +0 -2
- package/dist/assets/Collapse-DRDB8Czs-CGcuZQgy.js.map +0 -1
- package/dist/assets/Connect-Dme-qfKq-CgniLji8.js +0 -2
- package/dist/assets/Connect-Dme-qfKq-CgniLji8.js.map +0 -1
- package/dist/assets/Connect-laqJZT3s.js +0 -2
- package/dist/assets/Connect-laqJZT3s.js.map +0 -1
- package/dist/assets/Copy-CkOtWZ6m.js +0 -2
- package/dist/assets/Copy-CkOtWZ6m.js.map +0 -1
- package/dist/assets/Copy-ms9-7m7Y-CkOtWZ6m.js +0 -2
- package/dist/assets/Copy-ms9-7m7Y-CkOtWZ6m.js.map +0 -1
- package/dist/assets/CrossCircle-B6ZawoOx-z5-kkOo3.js +0 -2
- package/dist/assets/CrossCircle-B6ZawoOx-z5-kkOo3.js.map +0 -1
- package/dist/assets/CrossCircle-Bp9diEe9.js +0 -2
- package/dist/assets/CrossCircle-Bp9diEe9.js.map +0 -1
- package/dist/assets/Danger-CLu7nxgz.js +0 -2
- package/dist/assets/Danger-CLu7nxgz.js.map +0 -1
- package/dist/assets/Danger-KM8BZjue-CLu7nxgz.js +0 -2
- package/dist/assets/Danger-KM8BZjue-CLu7nxgz.js.map +0 -1
- package/dist/assets/Discord-CAS0Cj7s-CcsBWpnf.js +0 -2
- package/dist/assets/Discord-CAS0Cj7s-CcsBWpnf.js.map +0 -1
- package/dist/assets/Discord-CcPWRT8g.js +0 -2
- package/dist/assets/Discord-CcPWRT8g.js.map +0 -1
- package/dist/assets/Drive-CzahDx9j.js +0 -2
- package/dist/assets/Drive-CzahDx9j.js.map +0 -1
- package/dist/assets/Drive-GMcgBcIY-CzahDx9j.js +0 -2
- package/dist/assets/Drive-GMcgBcIY-CzahDx9j.js.map +0 -1
- package/dist/assets/Edit-D9GlgGu8.js +0 -2
- package/dist/assets/Edit-D9GlgGu8.js.map +0 -1
- package/dist/assets/Edit-Dr-ZiMSE-D9GlgGu8.js +0 -2
- package/dist/assets/Edit-Dr-ZiMSE-D9GlgGu8.js.map +0 -1
- package/dist/assets/Ellipsis-DWNUJYUI.js +0 -2
- package/dist/assets/Ellipsis-DWNUJYUI.js.map +0 -1
- package/dist/assets/Ellipsis-XK8AwMEC-BuVBeYhB.js +0 -2
- package/dist/assets/Ellipsis-XK8AwMEC-BuVBeYhB.js.map +0 -1
- package/dist/assets/Error-BmIZ2ZUy-CphzuMLn.js +0 -2
- package/dist/assets/Error-BmIZ2ZUy-CphzuMLn.js.map +0 -1
- package/dist/assets/Error-FBAhqFT5.js +0 -2
- package/dist/assets/Error-FBAhqFT5.js.map +0 -1
- package/dist/assets/Exclamation-BGFGsVRw.js +0 -2
- package/dist/assets/Exclamation-BGFGsVRw.js.map +0 -1
- package/dist/assets/Exclamation-CVsNS_QS-DLccamql.js +0 -2
- package/dist/assets/Exclamation-CVsNS_QS-DLccamql.js.map +0 -1
- package/dist/assets/File-Ba7ClyaL-BU1g1wjO.js +0 -2
- package/dist/assets/File-Ba7ClyaL-BU1g1wjO.js.map +0 -1
- package/dist/assets/File-DWKl25DR.js +0 -2
- package/dist/assets/File-DWKl25DR.js.map +0 -1
- package/dist/assets/FilesEarmark-BTL53WSf.js +0 -2
- package/dist/assets/FilesEarmark-BTL53WSf.js.map +0 -1
- package/dist/assets/FilesEarmark-CyrCQy8E-Bhut4E02.js +0 -2
- package/dist/assets/FilesEarmark-CyrCQy8E-Bhut4E02.js.map +0 -1
- package/dist/assets/FolderClose-BVMKeKvW.js +0 -2
- package/dist/assets/FolderClose-BVMKeKvW.js.map +0 -1
- package/dist/assets/FolderClose-DG_qHisc-CH6NoBuu.js +0 -2
- package/dist/assets/FolderClose-DG_qHisc-CH6NoBuu.js.map +0 -1
- package/dist/assets/FolderOpen-DT55_X9N.js +0 -2
- package/dist/assets/FolderOpen-DT55_X9N.js.map +0 -1
- package/dist/assets/FolderOpen-kDoWFkJO-Cciutkdg.js +0 -2
- package/dist/assets/FolderOpen-kDoWFkJO-Cciutkdg.js.map +0 -1
- package/dist/assets/FolderPlus-C2G5PVs-.js +0 -2
- package/dist/assets/FolderPlus-C2G5PVs-.js.map +0 -1
- package/dist/assets/FolderPlus-CSBSl9lZ-CifD0ek9.js +0 -2
- package/dist/assets/FolderPlus-CSBSl9lZ-CifD0ek9.js.map +0 -1
- package/dist/assets/Forum-Cfgyizyn.js +0 -2
- package/dist/assets/Forum-Cfgyizyn.js.map +0 -1
- package/dist/assets/Forum-DZ-CkLFh-BwabccAX.js +0 -2
- package/dist/assets/Forum-DZ-CkLFh-BwabccAX.js.map +0 -1
- package/dist/assets/Gear-CoQ9O06k.js +0 -2
- package/dist/assets/Gear-CoQ9O06k.js.map +0 -1
- package/dist/assets/Gear-cUlHJ4q6-B9R2l_9_.js +0 -2
- package/dist/assets/Gear-cUlHJ4q6-B9R2l_9_.js.map +0 -1
- package/dist/assets/Github-0PLiINY0-CjkZIHCO.js +0 -2
- package/dist/assets/Github-0PLiINY0-CjkZIHCO.js.map +0 -1
- package/dist/assets/Github-CjkZIHCO.js +0 -2
- package/dist/assets/Github-CjkZIHCO.js.map +0 -1
- package/dist/assets/Globe-CIYqVkpa-CL530H46.js +0 -2
- package/dist/assets/Globe-CIYqVkpa-CL530H46.js.map +0 -1
- package/dist/assets/Globe-Dy2otZRk.js +0 -2
- package/dist/assets/Globe-Dy2otZRk.js.map +0 -1
- package/dist/assets/GlobeWww-Ci7aa5CE.js +0 -2
- package/dist/assets/GlobeWww-Ci7aa5CE.js.map +0 -1
- package/dist/assets/GlobeWww-DN4yKujh-Ci7aa5CE.js +0 -2
- package/dist/assets/GlobeWww-DN4yKujh-Ci7aa5CE.js.map +0 -1
- package/dist/assets/Hdd-CP-hFB7d.js +0 -2
- package/dist/assets/Hdd-CP-hFB7d.js.map +0 -1
- package/dist/assets/Hdd-Dn_LdJIh-CJ6x9Bve.js +0 -2
- package/dist/assets/Hdd-Dn_LdJIh-CJ6x9Bve.js.map +0 -1
- package/dist/assets/History-BP4SmaS_-P4WBKyqX.js +0 -2
- package/dist/assets/History-BP4SmaS_-P4WBKyqX.js.map +0 -1
- package/dist/assets/History-CmOiP5qa.js +0 -2
- package/dist/assets/History-CmOiP5qa.js.map +0 -1
- package/dist/assets/InfoSquare-C98JaLiz-yPcGR71f.js +0 -2
- package/dist/assets/InfoSquare-C98JaLiz-yPcGR71f.js.map +0 -1
- package/dist/assets/InfoSquare-DbYZrwmg.js +0 -2
- package/dist/assets/InfoSquare-DbYZrwmg.js.map +0 -1
- package/dist/assets/Link-BF7aZjVu-CXIVQOz6.js +0 -2
- package/dist/assets/Link-BF7aZjVu-CXIVQOz6.js.map +0 -1
- package/dist/assets/Link-CXIVQOz6.js +0 -2
- package/dist/assets/Link-CXIVQOz6.js.map +0 -1
- package/dist/assets/Linkedin-DJwIkS6q-Dkb5Tp_Z.js +0 -2
- package/dist/assets/Linkedin-DJwIkS6q-Dkb5Tp_Z.js.map +0 -1
- package/dist/assets/Linkedin-exhl1yGN.js +0 -2
- package/dist/assets/Linkedin-exhl1yGN.js.map +0 -1
- package/dist/assets/Lock-DWdDRi_O.js +0 -2
- package/dist/assets/Lock-DWdDRi_O.js.map +0 -1
- package/dist/assets/Lock-PyaFHdNS-D_qxRTye.js +0 -2
- package/dist/assets/Lock-PyaFHdNS-D_qxRTye.js.map +0 -1
- package/dist/assets/M-ByQIo8bX.js +0 -2
- package/dist/assets/M-ByQIo8bX.js.map +0 -1
- package/dist/assets/M-DozhhPMY-DBQw97P_.js +0 -2
- package/dist/assets/M-DozhhPMY-DBQw97P_.js.map +0 -1
- package/dist/assets/PackageManager-B-MUWliB-bW01ZQSP.js +0 -2
- package/dist/assets/PackageManager-B-MUWliB-bW01ZQSP.js.map +0 -1
- package/dist/assets/PackageManager-D6Ia8zHs.js +0 -2
- package/dist/assets/PackageManager-D6Ia8zHs.js.map +0 -1
- package/dist/assets/Pencil-D7lvxXIP-D830iveq.js +0 -2
- package/dist/assets/Pencil-D7lvxXIP-D830iveq.js.map +0 -1
- package/dist/assets/Pencil-D830iveq.js +0 -2
- package/dist/assets/Pencil-D830iveq.js.map +0 -1
- package/dist/assets/People-B1tewG8c.js +0 -2
- package/dist/assets/People-B1tewG8c.js.map +0 -1
- package/dist/assets/People-CUB8LYKf-CyJmMqcw.js +0 -2
- package/dist/assets/People-CUB8LYKf-CyJmMqcw.js.map +0 -1
- package/dist/assets/Person-BPRmm67U.js +0 -2
- package/dist/assets/Person-BPRmm67U.js.map +0 -1
- package/dist/assets/Person-DuL4PQzm-ttQR0nPy.js +0 -2
- package/dist/assets/Person-DuL4PQzm-ttQR0nPy.js.map +0 -1
- package/dist/assets/Pin-D53eCMAz.js +0 -2
- package/dist/assets/Pin-D53eCMAz.js.map +0 -1
- package/dist/assets/Pin-DF70btCU-D53eCMAz.js +0 -2
- package/dist/assets/Pin-DF70btCU-D53eCMAz.js.map +0 -1
- package/dist/assets/PinFilled-CMXfFW67.js +0 -2
- package/dist/assets/PinFilled-CMXfFW67.js.map +0 -1
- package/dist/assets/PinFilled-vImzS0do-CMXfFW67.js +0 -2
- package/dist/assets/PinFilled-vImzS0do-CMXfFW67.js.map +0 -1
- package/dist/assets/Plus-DPFWGJM4-BztpK8li.js +0 -2
- package/dist/assets/Plus-DPFWGJM4-BztpK8li.js.map +0 -1
- package/dist/assets/Plus-XUIm1wNw.js +0 -2
- package/dist/assets/Plus-XUIm1wNw.js.map +0 -1
- package/dist/assets/PlusCircle-BEnWRjHa-w5zztKGx.js +0 -2
- package/dist/assets/PlusCircle-BEnWRjHa-w5zztKGx.js.map +0 -1
- package/dist/assets/PlusCircle-D1IRYULb.js +0 -2
- package/dist/assets/PlusCircle-D1IRYULb.js.map +0 -1
- package/dist/assets/PowerhouseLogoSmall-CmO95IAS-CDGLkst3.js +0 -2
- package/dist/assets/PowerhouseLogoSmall-CmO95IAS-CDGLkst3.js.map +0 -1
- package/dist/assets/PowerhouseLogoSmall-DF1uUwIC.js +0 -2
- package/dist/assets/PowerhouseLogoSmall-DF1uUwIC.js.map +0 -1
- package/dist/assets/Project-BlXuclr0-EsBam9d0.js +0 -2
- package/dist/assets/Project-BlXuclr0-EsBam9d0.js.map +0 -1
- package/dist/assets/Project-EsBam9d0.js +0 -2
- package/dist/assets/Project-EsBam9d0.js.map +0 -1
- package/dist/assets/QuestionSquare-B6O9Le7r-CDaw1i6L.js +0 -2
- package/dist/assets/QuestionSquare-B6O9Le7r-CDaw1i6L.js.map +0 -1
- package/dist/assets/QuestionSquare-CDaw1i6L.js +0 -2
- package/dist/assets/QuestionSquare-CDaw1i6L.js.map +0 -1
- package/dist/assets/RedoArrow-BJeEsiph-BbidqIFP.js +0 -2
- package/dist/assets/RedoArrow-BJeEsiph-BbidqIFP.js.map +0 -1
- package/dist/assets/RedoArrow-DM-fqhEP.js +0 -2
- package/dist/assets/RedoArrow-DM-fqhEP.js.map +0 -1
- package/dist/assets/Reload-6C2CYgrl-DPZbA7yl.js +0 -2
- package/dist/assets/Reload-6C2CYgrl-DPZbA7yl.js.map +0 -1
- package/dist/assets/Reload-DPZbA7yl.js +0 -2
- package/dist/assets/Reload-DPZbA7yl.js.map +0 -1
- package/dist/assets/Renown-6m7hx37h-CItksi2j.js +0 -2
- package/dist/assets/Renown-6m7hx37h-CItksi2j.js.map +0 -1
- package/dist/assets/Renown-CItksi2j.js +0 -2
- package/dist/assets/Renown-CItksi2j.js.map +0 -1
- package/dist/assets/RenownHover-CQ0TZHZv-cYQgnwQW.js +0 -2
- package/dist/assets/RenownHover-CQ0TZHZv-cYQgnwQW.js.map +0 -1
- package/dist/assets/RenownHover-cYQgnwQW.js +0 -2
- package/dist/assets/RenownHover-cYQgnwQW.js.map +0 -1
- package/dist/assets/Ring-BivnmVc5.js +0 -2
- package/dist/assets/Ring-BivnmVc5.js.map +0 -1
- package/dist/assets/Ring-DKv0gnwT-CDHLz87h.js +0 -2
- package/dist/assets/Ring-DKv0gnwT-CDHLz87h.js.map +0 -1
- package/dist/assets/Save-BBxj68pn-BkUvn89C.js +0 -2
- package/dist/assets/Save-BBxj68pn-BkUvn89C.js.map +0 -1
- package/dist/assets/Save-BWCZPY82.js +0 -2
- package/dist/assets/Save-BWCZPY82.js.map +0 -1
- package/dist/assets/Search-BiEcSbcf.js +0 -2
- package/dist/assets/Search-BiEcSbcf.js.map +0 -1
- package/dist/assets/Search-YUJuRBLe-CecGUkZA.js +0 -2
- package/dist/assets/Search-YUJuRBLe-CecGUkZA.js.map +0 -1
- package/dist/assets/Server-Bfkkjui1-lBan_3Dm.js +0 -2
- package/dist/assets/Server-Bfkkjui1-lBan_3Dm.js.map +0 -1
- package/dist/assets/Server-cAzmNxsS.js +0 -2
- package/dist/assets/Server-cAzmNxsS.js.map +0 -1
- package/dist/assets/Settings-Cca-sV-_.js +0 -2
- package/dist/assets/Settings-Cca-sV-_.js.map +0 -1
- package/dist/assets/Settings-mbbylBS5-Cca-sV-_.js +0 -2
- package/dist/assets/Settings-mbbylBS5-Cca-sV-_.js.map +0 -1
- package/dist/assets/Synced-CjieGKOk.js +0 -2
- package/dist/assets/Synced-CjieGKOk.js.map +0 -1
- package/dist/assets/Synced-DKJXzPiw-Cui8pDsS.js +0 -2
- package/dist/assets/Synced-DKJXzPiw-Cui8pDsS.js.map +0 -1
- package/dist/assets/Syncing-KnDBLSYe.js +0 -2
- package/dist/assets/Syncing-KnDBLSYe.js.map +0 -1
- package/dist/assets/Syncing-aT9WSMFf-2VhhyCcX.js +0 -2
- package/dist/assets/Syncing-aT9WSMFf-2VhhyCcX.js.map +0 -1
- package/dist/assets/Trash-CgSbHk-P-DIYkVMER.js +0 -2
- package/dist/assets/Trash-CgSbHk-P-DIYkVMER.js.map +0 -1
- package/dist/assets/Trash-DIHOD5wQ.js +0 -2
- package/dist/assets/Trash-DIHOD5wQ.js.map +0 -1
- package/dist/assets/TrashFill-CG3humXp.js +0 -2
- package/dist/assets/TrashFill-CG3humXp.js.map +0 -1
- package/dist/assets/TrashFill-DN50ercb-Oqx67xXN.js +0 -2
- package/dist/assets/TrashFill-DN50ercb-Oqx67xXN.js.map +0 -1
- package/dist/assets/TreeViewSlash-BywCsx5o-CUTTXZi-.js +0 -2
- package/dist/assets/TreeViewSlash-BywCsx5o-CUTTXZi-.js.map +0 -1
- package/dist/assets/TreeViewSlash-CKJADIpa.js +0 -2
- package/dist/assets/TreeViewSlash-CKJADIpa.js.map +0 -1
- package/dist/assets/TriangleDown-Boh-WZzH.js +0 -2
- package/dist/assets/TriangleDown-Boh-WZzH.js.map +0 -1
- package/dist/assets/TriangleDown-eCXwUfu8-F-V79AL3.js +0 -2
- package/dist/assets/TriangleDown-eCXwUfu8-F-V79AL3.js.map +0 -1
- package/dist/assets/VariantArrowLeft-CnuX59_e-6Zt_Q3tm.js +0 -2
- package/dist/assets/VariantArrowLeft-CnuX59_e-6Zt_Q3tm.js.map +0 -1
- package/dist/assets/VariantArrowLeft-Dl1-3L5q.js +0 -2
- package/dist/assets/VariantArrowLeft-Dl1-3L5q.js.map +0 -1
- package/dist/assets/VerticalDots-C8QYf7et-CCxZfvjq.js +0 -2
- package/dist/assets/VerticalDots-C8QYf7et-CCxZfvjq.js.map +0 -1
- package/dist/assets/VerticalDots-CCZxgZM8.js +0 -2
- package/dist/assets/VerticalDots-CCZxgZM8.js.map +0 -1
- package/dist/assets/WarningFill-CRRaW3Oz.js +0 -2
- package/dist/assets/WarningFill-CRRaW3Oz.js.map +0 -1
- package/dist/assets/WarningFill-WowAvi5P-D5XCckM6.js +0 -2
- package/dist/assets/WarningFill-WowAvi5P-D5XCckM6.js.map +0 -1
- package/dist/assets/XTwitter-CW6IaHUb.js +0 -2
- package/dist/assets/XTwitter-CW6IaHUb.js.map +0 -1
- package/dist/assets/XTwitter-k3Pt8itk-mvLk8TKx.js +0 -2
- package/dist/assets/XTwitter-k3Pt8itk-mvLk8TKx.js.map +0 -1
- package/dist/assets/Xmark-8qnJCs2Y-CZ3t0Fap.js +0 -2
- package/dist/assets/Xmark-8qnJCs2Y-CZ3t0Fap.js.map +0 -1
- package/dist/assets/Xmark-CZ3t0Fap.js +0 -2
- package/dist/assets/Xmark-CZ3t0Fap.js.map +0 -1
- package/dist/assets/XmarkLight-BkhBFy51.js +0 -2
- package/dist/assets/XmarkLight-BkhBFy51.js.map +0 -1
- package/dist/assets/XmarkLight-GHzDR5_F-CloMvuzt.js +0 -2
- package/dist/assets/XmarkLight-GHzDR5_F-CloMvuzt.js.map +0 -1
- package/dist/assets/Youtube-h-Dc9pri.js +0 -2
- package/dist/assets/Youtube-h-Dc9pri.js.map +0 -1
- package/dist/assets/Youtube-i8V0IXUU-Bkiwoayp.js +0 -2
- package/dist/assets/Youtube-i8V0IXUU-Bkiwoayp.js.map +0 -1
- package/dist/assets/app-DKrzRA2f.js +0 -449
- package/dist/assets/app-DKrzRA2f.js.map +0 -1
- package/dist/assets/app-loader-DH_VGIVv.css +0 -1
- package/dist/assets/app-loader-mj_poB3V.js +0 -3
- package/dist/assets/app-loader-mj_poB3V.js.map +0 -1
- package/dist/assets/browser-BbIPlSaA.js +0 -2
- package/dist/assets/browser-BbIPlSaA.js.map +0 -1
- package/dist/assets/browser-DtMtdCgJ.js +0 -7
- package/dist/assets/browser-DtMtdCgJ.js.map +0 -1
- package/dist/assets/ccip-DUUHdwDo.js +0 -2
- package/dist/assets/ccip-DUUHdwDo.js.map +0 -1
- package/dist/assets/content-DFQJzB7I.js +0 -7
- package/dist/assets/content-DFQJzB7I.js.map +0 -1
- package/dist/assets/editor-Dms2goxJ.js +0 -346
- package/dist/assets/editor-Dms2goxJ.js.map +0 -1
- package/dist/assets/getEnsName-DoyRgFOP.js +0 -35
- package/dist/assets/getEnsName-DoyRgFOP.js.map +0 -1
- package/dist/assets/index-Bg4jiu9P.js +0 -3
- package/dist/assets/index-Bg4jiu9P.js.map +0 -1
- package/dist/assets/index-CLu1C_is-jUM7ckQa.js +0 -12
- package/dist/assets/index-CLu1C_is-jUM7ckQa.js.map +0 -1
- package/dist/assets/index-q_KV5Ymp.js +0 -16
- package/dist/assets/index-q_KV5Ymp.js.map +0 -1
- package/dist/assets/isAddressEqual-H3jvLfD0.js +0 -2
- package/dist/assets/isAddressEqual-H3jvLfD0.js.map +0 -1
- package/dist/assets/json-m8fnOd5g.js +0 -3
- package/dist/assets/json-m8fnOd5g.js.map +0 -1
- package/dist/assets/main.Bp4zjrbL.js +0 -2
- package/dist/assets/main.Bp4zjrbL.js.map +0 -1
- package/dist/assets/root-R8rJ5_ai.js +0 -17
- package/dist/assets/root-R8rJ5_ai.js.map +0 -1
- package/dist/assets/router-DX6s3TD2.js +0 -12
- package/dist/assets/router-DX6s3TD2.js.map +0 -1
- package/dist/assets/useUiNodes-BqBkjrKn.js +0 -107
- package/dist/assets/useUiNodes-BqBkjrKn.js.map +0 -1
- package/dist/service-worker.js.map +0 -1
- package/dist/studio/cli.js +0 -6
- package/dist/studio/helpers.d.ts +0 -2
- package/dist/studio/hmr.js +0 -10
- package/dist/studio/index.d.ts +0 -19
- package/dist/studio/index.js +0 -624
- package/dist/studio/server.d.ts +0 -7
- package/dist/studio/vite-plugins/base.d.ts +0 -14
- package/dist/studio/vite-plugins/external-packages.d.ts +0 -5
- package/dist/studio/vite-plugins/hmr.d.ts +0 -2
- package/dist/studio/vite-plugins/studio.d.ts +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["A","f","i","o","s","c","e","a","p","d","l","n","m","u","g","x","r","N","t","y","R","C","S","I","pe","h","v","D","E","w","T","H","M","b","W","$","z","q","B","J","Q","O","U","K","k","G","j","F","L","X","P","Y","V","Z","ee","oe","ce","_","createTooltipContext","createTooltipScope","createContextScope","createPopperScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","props","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","children","isOpenDelayed","setIsOpenDelayed","React","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","jsx","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","openProp","defaultOpen","onOpenChange","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","useId","openTimerRef","wasOpenDelayedRef","open","setOpen","useControllableState","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","forwardedRef","triggerProps","context","ref","composedRefs","useComposedRefs","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","Primitive","composeEventHandlers","event","PORTAL_NAME","PortalProvider","usePortalContext","TooltipPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","TooltipContent","portalContext","side","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","content","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","target","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","ariaLabel","onEscapeKeyDown","onPointerDownOutside","handleScroll","DismissableLayer","jsxs","PopperPrimitive.Content","Slottable","VisuallyHiddenPrimitive.Root","ARROW_NAME","TooltipArrow","arrowProps","PopperPrimitive.Arrow","point","rect","top","bottom","right","left","padding","polygon","inside","xi","yi","xj","yj","points","newPoints","getHullPresorted","upperHull","lowerHull","Provider","Root3","Trigger","Portal","Content2","memo","getDeps","fn","opts","deps","result","_a","_b","_c","_d","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","notUndefined","value","msg","approxEqual","debounce","targetWindow","ms","timeoutId","args","defaultKeyExtractor","defaultRangeExtractor","range","start","end","arr","observeElementRect","instance","cb","element","handler","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","key","sync","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","measurement","previousFurthestMeasurement","count","paddingStart","scrollMargin","getItemKey","enabled","itemSizeCache","item","min","furthestMeasurement","measuredSize","size","lane","outerSize","scrollOffset","calculateRange","startIndex","endIndex","rangeExtractor","overscan","node","attributeName","indexStr","prevNode","itemSize","delta","indexes","virtualItems","len","findNearestBinarySearch","align","scrollSizeProp","maxOffset","centerOffset","initialAlign","offsetAndAlign","latestOffset","low","high","getCurrentValue","middle","currentValue","useIsomorphicLayoutEffect","useVirtualizerBase","options","rerender","resolvedOptions","instance2","flushSync","useVirtualizer","millisecondsInWeek","millisecondsInDay","constructFromSymbol","constructFrom","date","toDate","argument","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","_date","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","isDate","isValid","startOfYear","date_","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","input","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","sortUiNodesByName","twJoin","resolvedValue","toValue","mix","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","_ref","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","prefix","prefixedClassGroupEntries","getPrefixedClassGroupEntries","_ref2","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","_ref3","path","currentClassPartObject","pathPart","func","classGroupEntries","_ref4","prefixedClassGroup","_ref5","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","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","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","getSpacingWithArbitrary","getLengthWithEmpty","getNumberWithAutoAndArbitrary","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumber","getNumberAndArbitrary","twMerge","Button","_extends","reservedModifierKeywords","mappedKeys","mapKey","isHotkeyModifier","parseKeysHookInput","keys","splitKey","parseHotkey","hotkey","combinationKey","description","singleCharKeys","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","isReadonlyArray","isHotkeyPressed","hotkeyArray","maybePreventDefault","preventDefault","isHotkeyEnabled","isKeyboardEventTriggeredByInput","ev","isHotkeyEnabledOnTag","enabledOnTags","composed","targetTagName","isCustomElement","tag","_targetTagName","isScopeActive","activeScopes","scopes","scope","isHotkeyMatchingKeyboardEvent","ignoreModifiers","alt","meta","mod","shift","ctrl","pressedKeyUppercase","code","ctrlKey","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","createContext","useBoundHotkeysProxy","useContext","deepEqual","isEqual","HotkeysContext","useHotkeysContext","useDeepEqualMemo","useRef","stopPropagation","useSafeLayoutEffect","useLayoutEffect","useEffect","useHotkeys","callback","dependencies","_useState","useState","setRef","hasTriggeredRef","_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","loadBaseEditors","__vitePreload","__vite_default__","getEditorsFromModules","modules","module","acc","val","loadDynamicEditors","localEditors","baseEditorsAtom","atomWithLazy","dynamicEditorsAtom","editorsAtom","atom","baseEditors","dynamicEditors","externalModules","externalPackagesAtom","externalEditors","unwrappedEditorsAtom","unwrap","loadableEditorsAtom","loadable","useUnwrappedEditors","useAtomValue","useLoadableEditors","useEditorsAsync","editorsPromise","resolveFn","rejectFn","resolve","reject","editors","getEditor","documentType","preferredEditorId","preferredEditor","useGetEditor","defaultDocumentModelEditor","useDefaultDocumentModelEditor","usePreloadEditor","editor","EditorLoader","showLoading","setShowLoading","customEditorLoader","defaultProps","Fragment","DefaultEditorLoader","EditorError","DocumentEditor","selectedNode","fileNodeDocument","selectedParentNode","initialDocument","setSelectedNode","onChange","onExport","onAddOperation","onOpenSwitchboardLink","showRevisionHistory","setShowRevisionHistory","themeAtom","user","useUser","connectDid","useConnectDid","useConnectCrypto","getDocumentModel","useGetDocumentModel","documentModel","useMemo","document","_dispatch","error","useDocumentDispatch","userPermissions","useUserPermissions","isLoadingDocument","isLoadingEditor","dispatch","action","onErrorCallback","operation","state","prevState","signOperation","op","logger","addActionContext","actions","FILE","EditorComponent","disableExternalControls","documentToolbarEnabled","showSwitchboardLink","DocumentToolbar","RevisionHistory","Suspense","ContentSection","title","divProps","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","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","__defProp","__defNormalProp","obj","__publicField","SPLIT_LOWER_UPPER_RE","SPLIT_UPPER_UPPER_RE","SPLIT_SEPARATE_NUMBER_RE","DEFAULT_STRIP_REGEXP","SPLIT_REPLACE_VALUE","DEFAULT_PREFIX_SUFFIX_CHARACTERS","split","splitSeparateNumbers","words","word","pascalCase","suffix","splitPrefixSuffix","lower","lowerFactory","upper","upperFactory","transform","pascalCaseTransformFactory","char0","splitFn","prefixCharacters","suffixCharacters","prefixIndex","suffixIndex","char","validateInitialState","initialState","allowEmptyState","errors","validateStateSchemaName","schema","documentName","allowEmptySchema","expectedTypeName","validateModules","modulesError","validateModule","operationErrors","validateModuleOperation","customUtils","isDefinedNonNullAny","AddChangeLogItemInputSchema","AddModuleInputSchema","AddOperationErrorInputSchema","AddOperationExampleInputSchema","AddOperationInputSchema","OperationScopeSchema","AddStateExampleInputSchema","DeleteChangeLogItemInputSchema","DeleteModuleInputSchema","DeleteOperationErrorInputSchema","DeleteOperationExampleInputSchema","DeleteOperationInputSchema","DeleteStateExampleInputSchema","MoveOperationInputSchema","ReorderChangeLogItemsInputSchema","ReorderModuleOperationsInputSchema","ReorderModulesInputSchema","ReorderOperationErrorsInputSchema","ReorderOperationExamplesInputSchema","ReorderStateExamplesInputSchema","SetAuthorNameInputSchema","SetAuthorWebsiteInputSchema","SetInitialStateInputSchema","SetModelDescriptionInputSchema","SetModelExtensionInputSchema","SetModelIdInputSchema","SetModelNameInputSchema","SetModuleDescriptionInputSchema","SetModuleNameInputSchema","SetOperationDescriptionInputSchema","SetOperationErrorCodeInputSchema","SetOperationErrorDescriptionInputSchema","SetOperationErrorNameInputSchema","SetOperationErrorTemplateInputSchema","SetOperationNameInputSchema","SetOperationScopeInputSchema","SetOperationReducerInputSchema","SetOperationSchemaInputSchema","SetOperationTemplateInputSchema","SetStateSchemaInputSchema","UpdateChangeLogItemInputSchema","UpdateOperationExampleInputSchema","UpdateStateExampleInputSchema","reducer$7","reducer$6","moduleSorter","order","mapping","reducer$5","latestSpec","errorSorter","reducer$4","exampleSorter$1","reducer$3","operationSorter","reducer$2","moveOperations","exampleSorter","reducer$1","examples","stateReducer","isBaseAction","reducer","createReducer","initialGlobalState","initialLocalState","utils$1","extendedState","createExtendedState","createDocument","name","saveToFile","saveToFileHandle","loadFromFile","loadFromInput","setModelName","createAction","setModelId","setModelExtension","setModelDescription","setAuthorName","setAuthorWebsite","DocumentModel_Header","BaseDocument","addChangeLogItem","updateChangeLogItem","deleteChangeLogItem","reorderChangeLogItems","releaseNewVersion","DocumentModel_Versioning","addModule","setModuleName","setModuleDescription","deleteModule","reorderModules","DocumentModel_Module","addOperationError","setOperationErrorCode","setOperationErrorName","setOperationErrorDescription","setOperationErrorTemplate","deleteOperationError","reorderOperationErrors","DocumentModel_OperationError","addOperationExample","updateOperationExample","deleteOperationExample","reorderOperationExamples","DocumentModel_OperationExample","addOperation","setOperationName","setOperationScope","setOperationSchema","setOperationDescription","setOperationTemplate","setOperationReducer","moveOperation","deleteOperation","reorderModuleOperations","DocumentModel_Operation","setStateSchema","setInitialState","addStateExample","updateStateExample","deleteStateExample","reorderStateExamples","DocumentModel_State","DocumentModel$1","applyMixins","DocumentModelActions","utils","BaseActions","validateDocument","specs","initialStateErrors","scopeKey","documentModelUtils","err","schemaStateErrors","isGlobalScope","modulesErrors","getDocumentModelName","Content","connectConfig","useConnectConfig","uiNodes","useUiNodes","selectedDriveNode","isRemoteDrive","isAllowedToCreateDocuments","selectedDocument","documentModels","openSwitchboardLink","setSelectedDocument","addOperationToSelectedDocument","addFile","renameNode","preloadEditor","requestIC","cancelIC","id","file","handleAddOperationToSelectedDocument","exportDocument","validationErrors","closeModal","exportFile","Breadcrumbs","doc"],"ignoreList":[12,18,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,75,76,77,78,79,80,81,82,83,84,85,87],"sources":["../../../../packages/design-system/dist/assets/connect-loader.mp4.js","../../../../packages/design-system/dist/connect/components/animated-loader/animated-loader.js","../../../../packages/design-system/dist/connect/components/breadcrumbs/breadcrumbs.js","../../../../packages/design-system/dist/connect/components/default-editor-loader/default-editor-loader.js","../../../../packages/design-system/dist/connect/components/editor-action-buttons/editor-action-buttons.js","../../../../packages/design-system/dist/connect/components/editor-undo-redo-buttons/editor-undo-redo-buttons.js","../../../../packages/design-system/dist/connect/components/status-icon/sync-status-icon.js","../../../../packages/design-system/dist/connect/components/file-item/file-item.js","../../../../packages/design-system/dist/connect/components/folder-item/folder-item.js","../../../../packages/design-system/dist/connect/components/footer/footer.js","../../../../packages/design-system/dist/connect/components/footer/footer-link.js","../../../../packages/design-system/dist/powerhouse/hooks/usePagination.js","../../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.1.7_@types+react-dom@18.3.5_@types+react@18.3.18__@types+react@18.3_4ytfte7yniijphuu2h5ufsz3ry/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../../../packages/design-system/dist/connect/components/tooltip/tooltip.js","../../../../packages/design-system/dist/connect/components/revision-history/header/branch.js","../../../../packages/design-system/dist/connect/components/revision-history/header/doc-id.js","../../../../packages/design-system/dist/connect/components/revision-history/header/scope.js","../../../../packages/design-system/dist/connect/components/revision-history/header/header.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.11.3/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.11.3/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.11.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../../../packages/design-system/dist/connect/components/revision-history/utils.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../../../../packages/design-system/dist/connect/components/revision-history/timeline/day.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/address.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/errors.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/operation.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/revision-number.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/signature.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/timestamp.js","../../../../packages/design-system/dist/connect/components/revision-history/revision/revision.js","../../../../packages/design-system/dist/connect/components/revision-history/skip/skip.js","../../../../packages/design-system/dist/connect/components/revision-history/timeline/timeline.js","../../../../packages/design-system/dist/powerhouse/components/pagination/pagination-button.js","../../../../packages/design-system/dist/powerhouse/components/pagination/pagination.js","../../../../packages/design-system/dist/connect/components/revision-history/revision-history.js","../../../../packages/design-system/dist/connect/components/search-bar/filter-item.js","../../../../packages/design-system/dist/connect/components/search-bar/search-bar.js","../../../../packages/design-system/dist/connect/components/document-toolbar/document-toolbar.js","../../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","../../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","../../../../packages/document-model/dist/browser/es/internal/index-HlkIVQZ6.js","../../src/utils/validate-document.ts","../../src/pages/content.tsx"],"sourcesContent":["const A = \"data:video/mp4;base64,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\";\nexport {\n A as default\n};\n//# sourceMappingURL=connect-loader.mp4.js.map\n","import { jsx as n } from \"react/jsx-runtime\";\nimport m from \"../../../assets/connect-loader.mp4.js\";\nimport { getDimensions as a } from \"../../../powerhouse/utils/getDimensions.js\";\nfunction f(i) {\n var t, o;\n const { style: r, size: s = 100, ...c } = i, e = a(s), p = {\n objectFit: \"contain\",\n pointerEvents: \"none\",\n ...e,\n ...r\n }, d = (t = e.width) == null ? void 0 : t.replace(\"px\", \"\"), l = (o = e.height) == null ? void 0 : o.replace(\"px\", \"\");\n return /* @__PURE__ */ n(\n \"video\",\n {\n autoPlay: !0,\n height: l,\n loop: !0,\n muted: !0,\n playsInline: !0,\n width: d,\n ...c,\n style: p,\n children: /* @__PURE__ */ n(\"source\", { src: m, type: \"video/mp4\" })\n }\n );\n}\nexport {\n f as AnimatedLoader\n};\n//# sourceMappingURL=animated-loader.js.map\n","import { jsxs as l, jsx as r, Fragment as d } from \"react/jsx-runtime\";\nimport { useState as f, createElement as g } from \"react\";\nimport { NodeInput as N } from \"../node-input/node-input.js\";\nimport { Icon as p } from \"../../../powerhouse/components/icon/icon.js\";\nfunction A(e) {\n const {\n selectedNodePath: t,\n isAllowedToCreateDocuments: o,\n onAddAndSelectNewFolder: s\n } = e, [c, a] = f(!1);\n function i() {\n a(!0);\n }\n async function m(n) {\n await s(n), a(!1);\n }\n function u() {\n a(!1);\n }\n return /* @__PURE__ */ l(\"div\", { className: \"flex h-9 flex-row items-center gap-2 p-6 text-gray-500\", children: [\n t.map((n) => /* @__PURE__ */ g(x, { ...e, key: n.id, node: n })),\n o ? /* @__PURE__ */ r(d, { children: c ? /* @__PURE__ */ r(\n N,\n {\n className: \"text-gray-800\",\n defaultValue: \"New Folder\",\n onCancel: u,\n onSubmit: m,\n placeholder: \"New Folder\"\n }\n ) : /* @__PURE__ */ l(\n \"button\",\n {\n className: \"ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800\",\n onClick: i,\n children: [\n /* @__PURE__ */ r(p, { name: \"Plus\", size: 14 }),\n \"Add new\"\n ]\n }\n ) }) : null\n ] });\n}\nfunction x(e) {\n const { node: t, setSelectedNode: o } = e;\n return /* @__PURE__ */ l(d, { children: [\n /* @__PURE__ */ r(\n \"div\",\n {\n className: \"transition-colors last-of-type:text-gray-800 hover:text-gray-800\",\n onClick: () => o(t),\n role: \"button\",\n children: t.name\n }\n ),\n \"/\"\n ] });\n}\nexport {\n x as Breadcrumb,\n A as Breadcrumbs\n};\n//# sourceMappingURL=breadcrumbs.js.map\n","import { jsx as e, jsxs as s } from \"react/jsx-runtime\";\nimport { AnimatedLoader as a } from \"../animated-loader/animated-loader.js\";\nfunction o(r) {\n const { message: i = \"Loading editor\", ...t } = r;\n return /* @__PURE__ */ e(\"div\", { className: \"grid h-full place-items-center\", ...t, children: /* @__PURE__ */ s(\"div\", { className: \"-mt-20 grid place-items-center\", children: [\n /* @__PURE__ */ e(\"h3\", { className: \"mb-4 text-xl\", children: i }),\n /* @__PURE__ */ e(a, {})\n ] }) });\n}\nexport {\n o as DefaultEditorLoader\n};\n//# sourceMappingURL=default-editor-loader.js.map\n","import { jsxs as t, jsx as e } from \"react/jsx-runtime\";\nimport { Icon as o } from \"../../../powerhouse/components/icon/icon.js\";\nfunction l(i) {\n const { onSwitchboardLinkClick: r, onExport: n, onClose: a, onShowRevisionHistory: s } = i;\n return /* @__PURE__ */ t(\"div\", { className: \"flex gap-x-2\", children: [\n r ? /* @__PURE__ */ e(\n \"button\",\n {\n className: \"flex h-8 items-center gap-x-2 rounded border border-gray-200 px-3 text-sm font-semibold text-gray-900 active:opacity-50\",\n onClick: r,\n children: /* @__PURE__ */ e(o, { name: \"Drive\", size: 16 })\n }\n ) : null,\n /* @__PURE__ */ t(\n \"button\",\n {\n className: \"flex h-8 items-center gap-x-2 rounded border border-gray-200 px-3 text-sm font-semibold text-gray-900 active:opacity-50\",\n onClick: n,\n children: [\n \"Export \",\n /* @__PURE__ */ e(o, { name: \"Save\", size: 16 })\n ]\n }\n ),\n /* @__PURE__ */ t(\n \"button\",\n {\n className: \"flex h-8 items-center gap-x-2 whitespace-nowrap rounded border border-gray-200 px-3 text-sm font-semibold text-gray-900 active:opacity-50\",\n onClick: s,\n children: [\n \"Revision history \",\n /* @__PURE__ */ e(o, { name: \"History\", size: 16 })\n ]\n }\n ),\n /* @__PURE__ */ e(\n \"button\",\n {\n className: \"grid size-8 place-items-center rounded border border-gray-200 active:opacity-50\",\n onClick: a,\n children: /* @__PURE__ */ e(o, { name: \"Xmark\" })\n }\n )\n ] });\n}\nexport {\n l as EditorActionButtons\n};\n//# sourceMappingURL=editor-action-buttons.js.map\n","import { jsxs as i, jsx as e } from \"react/jsx-runtime\";\nimport { twMerge as a } from \"tailwind-merge\";\nimport { Icon as n } from \"../../../powerhouse/components/icon/icon.js\";\nfunction u(s) {\n const { canUndo: t, canRedo: o, undo: c, redo: d } = s, r = \"w-8 h-8 rounded-lg flex justify-center items-center rounded border border-gray-200\";\n return /* @__PURE__ */ i(\"div\", { className: \"flex gap-x-2 text-gray-500\", children: [\n /* @__PURE__ */ e(\"button\", { className: r, disabled: !t, onClick: c, children: /* @__PURE__ */ e(\n n,\n {\n className: a(\n \"-scale-x-100\",\n t ? \"text-gray-900 active:opacity-50\" : \"text-gray-500\"\n ),\n name: \"RedoArrow\",\n size: 18\n }\n ) }),\n /* @__PURE__ */ e(\"button\", { className: r, disabled: !o, onClick: d, children: /* @__PURE__ */ e(\n n,\n {\n className: a(\n o ? \"text-gray-900 active:opacity-50\" : \"text-gray-500\"\n ),\n name: \"RedoArrow\",\n size: 18\n }\n ) })\n ] });\n}\nexport {\n u as EditorUndoRedoButtons\n};\n//# sourceMappingURL=editor-undo-redo-buttons.js.map\n","import { jsx as t } from \"react/jsx-runtime\";\nimport { twMerge as c } from \"tailwind-merge\";\nimport { INITIAL_SYNC as r, SYNCING as a, SUCCESS as S, CONFLICT as m, MISSING as I, ERROR as N } from \"../../constants/syncing.js\";\nimport { Icon as o } from \"../../../powerhouse/components/icon/icon.js\";\nconst y = {\n SYNCING: \"Syncing\",\n SUCCESS: \"Synced\",\n CONFLICT: \"Error\",\n MISSING: \"Circle\",\n ERROR: \"Error\",\n INITIAL_SYNC: \"Syncing\"\n};\nfunction R(i) {\n const { syncStatus: C, className: e, overrideSyncIcons: l = {}, ...s } = i, n = { ...y, ...l };\n return {\n [r]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-blue-900\", e),\n name: n[r]\n }\n ),\n [a]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-blue-900\", e),\n name: n[a]\n }\n ),\n [S]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-green-900\", e),\n name: n[S]\n }\n ),\n [m]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-orange-900\", e),\n name: n[m]\n }\n ),\n [I]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-red-900\", e),\n name: n[I]\n }\n ),\n [N]: /* @__PURE__ */ t(\n o,\n {\n size: 16,\n ...s,\n className: c(\"text-red-900\", e),\n name: n[N]\n }\n )\n }[C];\n}\nexport {\n R as SyncStatusIcon\n};\n//# sourceMappingURL=sync-status-icon.js.map\n","import { jsxs as r, jsx as o } from \"react/jsx-runtime\";\nimport { useState as p } from \"react\";\nimport { twMerge as f } from \"tailwind-merge\";\nimport { READ as i, FILE as U, WRITE as z } from \"../../constants/nodes.js\";\nimport { useDrag as H } from \"../../hooks/drag-and-drop/use-drag.js\";\nimport { nodeOptionsMap as K, DUPLICATE as W, RENAME as $, DELETE as q, ADD_TRIGGER as B, REMOVE_TRIGGER as J, ADD_INVALID_TRIGGER as Q } from \"../../constants/options.js\";\nimport { getDocumentIconSrc as X } from \"../../utils/get-document-icon-src.js\";\nimport { SyncStatusIcon as Y } from \"../status-icon/sync-status-icon.js\";\nimport { ConnectDropdownMenu as Z } from \"../dropdown-menu/dropdown-menu.js\";\nimport { Icon as ee } from \"../../../powerhouse/components/icon/icon.js\";\nimport { NodeInput as oe } from \"../node-input/node-input.js\";\nfunction pe(a) {\n var u;\n const {\n uiNode: e,\n selectedNodePath: c,\n nodeOptions: h,\n isAllowedToCreateDocuments: g,\n isRemoteDrive: N,\n customDocumentIconSrc: v,\n className: x,\n setSelectedNode: I,\n onRenameNode: D,\n onDuplicateNode: y,\n onDeleteNode: E,\n onAddTrigger: S,\n onRemoveTrigger: w,\n onAddInvalidTrigger: R\n } = a, [T, s] = p(i), [l, d] = p(!1), { dragProps: C } = H(a), m = T === i, M = f(\n \"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2 text-gray-600 hover:text-gray-800\",\n x\n ), b = {\n [W]: () => y(e),\n [$]: () => s(z),\n [q]: () => E(e),\n [B]: () => S(e.driveId),\n [J]: () => w(e.driveId),\n [Q]: () => R(e.driveId)\n }, O = h[e.sharingType][U], A = Object.entries(K).map(([n, t]) => ({\n ...t,\n id: n\n })).filter((n) => O.includes(n.id));\n function k(n) {\n D(n, e), s(i);\n }\n function G() {\n s(i);\n }\n function j() {\n I(e);\n }\n function F(n) {\n const t = b[n];\n if (!t) {\n console.error(`No handler found for dropdown menu item: ${n}`);\n return;\n }\n t(e), d(!1);\n }\n const L = X(\n e.documentType,\n v\n ), P = /* @__PURE__ */ r(\"div\", { className: \"relative\", children: [\n /* @__PURE__ */ o(\n \"img\",\n {\n alt: \"file icon\",\n className: \"max-w-none\",\n height: 34,\n src: L,\n width: 32\n }\n ),\n m && N && e.syncStatus ? /* @__PURE__ */ o(\"div\", { className: \"absolute bottom-[-2px] right-0 size-3 rounded-full bg-white\", children: /* @__PURE__ */ o(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: /* @__PURE__ */ o(\n Y,\n {\n overrideSyncIcons: { SUCCESS: \"CheckCircleFill\" },\n syncStatus: e.syncStatus\n }\n ) }) }) : null\n ] }), V = ((u = c.at(-1)) == null ? void 0 : u.kind) === \"FILE\" ? c.slice(0, -1) : c, _ = m ? /* @__PURE__ */ r(\"div\", { className: \"flex w-52 items-center justify-between\", children: [\n /* @__PURE__ */ r(\"div\", { className: \"mr-2 truncate group-hover:mr-0\", children: [\n /* @__PURE__ */ o(\"div\", { className: \"max-h-6 truncate text-sm font-medium group-hover:text-gray-800\", children: e.name }),\n /* @__PURE__ */ o(\"div\", { className: \"max-h-6 truncate text-xs font-medium text-gray-600 group-hover:text-gray-800\", children: \"documentType\" in e ? e.documentType : V.map((n) => n.name).join(\" / \") })\n ] }),\n g ? /* @__PURE__ */ o(\n Z,\n {\n items: A,\n onItemClick: F,\n onOpenChange: d,\n open: l,\n children: /* @__PURE__ */ o(\n \"button\",\n {\n className: f(\n \"hidden group-hover:block\",\n l && \"block\"\n ),\n onClick: (n) => {\n n.stopPropagation(), d(!0);\n },\n children: /* @__PURE__ */ o(ee, { className: \"text-gray-600\", name: \"VerticalDots\" })\n }\n )\n }\n ) : null\n ] }) : /* @__PURE__ */ o(\n oe,\n {\n className: \"ml-3 flex-1 font-medium\",\n defaultValue: e.name,\n onCancel: G,\n onSubmit: k\n }\n );\n return /* @__PURE__ */ o(\"div\", { className: \"relative w-64\", onClick: j, children: /* @__PURE__ */ o(\"div\", { ...C, className: M, children: /* @__PURE__ */ r(\"div\", { className: \"flex items-center\", children: [\n /* @__PURE__ */ o(\"div\", { className: \"mr-1.5\", children: P }),\n _\n ] }) }) });\n}\nexport {\n pe as FileItem\n};\n//# sourceMappingURL=file-item.js.map\n","import { jsx as o, jsxs as d } from \"react/jsx-runtime\";\nimport { useState as u } from \"react\";\nimport { twMerge as p } from \"tailwind-merge\";\nimport { useDrop as V } from \"../../hooks/drag-and-drop/use-drop.js\";\nimport { READ as l, FOLDER as _, WRITE as j } from \"../../constants/nodes.js\";\nimport { useDrag as z } from \"../../hooks/drag-and-drop/use-drag.js\";\nimport { nodeOptionsMap as U, DUPLICATE as H, RENAME as K, DELETE as W, ADD_TRIGGER as $, REMOVE_TRIGGER as q, ADD_INVALID_TRIGGER as B } from \"../../constants/options.js\";\nimport { NodeInput as J } from \"../node-input/node-input.js\";\nimport { Icon as f } from \"../../../powerhouse/components/icon/icon.js\";\nimport { SyncStatusIcon as Q } from \"../status-icon/sync-status-icon.js\";\nimport { ConnectDropdownMenu as X } from \"../dropdown-menu/dropdown-menu.js\";\nfunction ce(r) {\n const {\n uiNode: e,\n isAllowedToCreateDocuments: c,\n nodeOptions: g,\n isRemoteDrive: h,\n className: D,\n setSelectedNode: N,\n onRenameNode: v,\n onDuplicateNode: I,\n onDeleteNode: E,\n onAddTrigger: R,\n onRemoveTrigger: x,\n onAddInvalidTrigger: C\n } = r, [S, a] = u(l), [m, i] = u(!1), { dragProps: b } = z(r), { isDropTarget: w, dropProps: M } = V(r), s = S === l;\n function T() {\n a(l);\n }\n function y(n) {\n v(n, e);\n }\n function O() {\n N(e);\n }\n const A = {\n [H]: () => I(e),\n [K]: () => a(j),\n [W]: () => E(e),\n [$]: () => R(e.driveId),\n [q]: () => x(e.driveId),\n [B]: () => C(e.driveId)\n }, k = g[e.sharingType][_], G = Object.entries(U).map(([n, t]) => ({\n ...t,\n id: n\n })).filter((n) => k.includes(n.id));\n function F(n) {\n const t = A[n];\n if (!t) {\n console.error(`No handler found for dropdown menu item: ${n}`);\n return;\n }\n t(), i(!1);\n }\n const L = s || !c ? /* @__PURE__ */ o(\"div\", { className: \"ml-3 max-h-6 truncate font-medium text-gray-600 group-hover:text-gray-800\", children: e.name }) : /* @__PURE__ */ o(\n J,\n {\n className: \"ml-3 font-medium\",\n defaultValue: e.name,\n onCancel: T,\n onSubmit: y\n }\n ), P = p(\n \"group flex h-12 cursor-pointer select-none items-center rounded-lg bg-gray-200 px-2\",\n D,\n w && \"bg-blue-100\"\n );\n return /* @__PURE__ */ o(\"div\", { className: \"relative w-64\", onClick: O, children: /* @__PURE__ */ d(\"div\", { ...b, ...M, className: P, children: [\n /* @__PURE__ */ d(\"div\", { className: \"flex items-center overflow-hidden\", children: [\n /* @__PURE__ */ o(\"div\", { className: \"p-1\", children: /* @__PURE__ */ d(\"div\", { className: \"relative\", children: [\n /* @__PURE__ */ o(f, { name: \"FolderClose\", size: 24 }),\n s && h && e.syncStatus ? /* @__PURE__ */ o(\"div\", { className: \"absolute bottom-[-3px] right-[-2px] size-3 rounded-full bg-white\", children: /* @__PURE__ */ o(\"div\", { className: \"absolute left-[-2px] top-[-2px]\", children: /* @__PURE__ */ o(\n Q,\n {\n overrideSyncIcons: {\n SUCCESS: \"CheckCircleFill\"\n },\n syncStatus: e.syncStatus\n }\n ) }) }) : null\n ] }) }),\n L\n ] }),\n s && c ? /* @__PURE__ */ o(\n X,\n {\n items: G,\n onItemClick: F,\n onOpenChange: i,\n open: m,\n children: /* @__PURE__ */ o(\n \"button\",\n {\n className: p(\n \"ml-auto hidden group-hover:block\",\n m && \"block\"\n ),\n onClick: (n) => {\n n.stopPropagation(), i(!0);\n },\n children: /* @__PURE__ */ o(f, { className: \"text-gray-600\", name: \"VerticalDots\" })\n }\n )\n }\n ) : null\n ] }) });\n}\nexport {\n ce as FolderItem\n};\n//# sourceMappingURL=folder-item.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { mergeClassNameProps as r } from \"../../../powerhouse/utils/mergeClassNameProps.js\";\nconst x = ({\n children: e,\n ...t\n}) => /* @__PURE__ */ o(\n \"footer\",\n {\n ...r(\n t,\n \"flex items-center gap-x-6 text-xs font-medium text-[#9DA6B9]\"\n ),\n children: e\n }\n);\nexport {\n x as Footer\n};\n//# sourceMappingURL=footer.js.map\n","import { jsx as t } from \"react/jsx-runtime\";\nimport { mergeClassNameProps as n } from \"../../../powerhouse/utils/mergeClassNameProps.js\";\nfunction i(r) {\n const { as: e = \"a\", ...o } = r;\n return /* @__PURE__ */ t(\n e,\n {\n ...n(\n o,\n \"flex cursor-pointer items-center hover:underline\"\n )\n }\n );\n}\nexport {\n i as FooterLink\n};\n//# sourceMappingURL=footer-link.js.map\n","import { useState as N, useCallback as s, useMemo as A } from \"react\";\nfunction S(u, h) {\n const { itemsPerPage: i = 20, initialPage: m = 0, pageRange: x = 3 } = h || {}, [a, n] = N(m), t = Math.ceil(u.length / i), g = a < t - 1, c = a > 0, f = s(() => {\n g && n((e) => e + 1);\n }, [g, n]), M = s(() => {\n c && n((e) => e - 1);\n }, [c, n]), d = s(() => {\n n(t - 1);\n }, [t]), p = s(() => {\n n(0);\n }, []), v = s(\n (e) => {\n e >= 0 && e < t && n(e);\n },\n [t]\n ), b = Math.floor((x - 1) / 2), r = Math.min(x, t), T = Math.max(t - r), l = Math.min(\n T,\n Math.max(a - b, 0)\n ), P = A(() => {\n const e = [];\n for (let o = l; o < r + l; o++)\n e.push({\n index: o,\n active: o === a,\n number: o + 1\n });\n return e;\n }, [r, l, a]), C = u.slice(\n a * i,\n (a + 1) * i\n ), I = P.length > 0 && P.slice(-1)[0].index < t - 1;\n return {\n pages: P,\n goToPage: v,\n pageItems: C,\n pageCount: t,\n currentPage: a,\n goToLastPage: d,\n goToFirstPage: p,\n goToNextPage: f,\n hiddenNextPages: I,\n goToPreviousPage: M,\n isNextPageAvailable: g,\n isPreviousPageAvailable: c\n };\n}\nexport {\n S as usePagination\n};\n//# sourceMappingURL=usePagination.js.map\n","\"use client\";\n\n// packages/react/tooltip/src/Tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayed,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { jsxs as a, jsx as o } from \"react/jsx-runtime\";\nimport { Root as p, Trigger as c, Portal as h, Content as m, Provider as g } from \"@radix-ui/react-tooltip\";\nimport { twMerge as u } from \"tailwind-merge\";\nfunction w(r) {\n const {\n children: e,\n content: t,\n open: n,\n defaultOpen: i,\n onOpenChange: d,\n className: l,\n ...s\n } = r;\n return /* @__PURE__ */ a(\n p,\n {\n defaultOpen: i,\n delayDuration: 0,\n onOpenChange: d,\n open: n,\n children: [\n /* @__PURE__ */ o(c, { asChild: !0, children: e }),\n /* @__PURE__ */ o(h, { children: /* @__PURE__ */ o(\n m,\n {\n ...s,\n className: u(\n \"rounded-lg border border-gray-200 bg-white p-2 text-xs shadow-tooltip\",\n l\n ),\n children: t\n }\n ) })\n ]\n }\n );\n}\nconst C = g;\nexport {\n w as Tooltip,\n C as TooltipProvider\n};\n//# sourceMappingURL=tooltip.js.map\n","import { jsxs as r, jsx as e } from \"react/jsx-runtime\";\nimport { Icon as a } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction l(n) {\n const { branch: t = \"main\" } = n;\n return /* @__PURE__ */ r(\"button\", { className: \"flex h-8 items-center gap-1 rounded-lg bg-slate-50 pl-1 pr-2 text-xs text-slate-100\", children: [\n /* @__PURE__ */ e(a, { name: \"Branch\" }),\n /* @__PURE__ */ e(\"span\", { children: \"BRANCH\" }),\n /* @__PURE__ */ e(\"span\", { className: \"text-gray-900\", children: t })\n ] });\n}\nexport {\n l as Branch\n};\n//# sourceMappingURL=branch.js.map\n","import { jsxs as a, jsx as t } from \"react/jsx-runtime\";\nimport { useCopyToClipboard as l } from \"usehooks-ts\";\nimport { Icon as p } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction x(e) {\n const { docId: o } = e, [, r] = l();\n function n(c) {\n return () => {\n r(c).catch((s) => {\n console.error(\"Failed to copy!\", s);\n });\n };\n }\n return /* @__PURE__ */ a(\n \"button\",\n {\n className: \"flex h-8 items-center gap-1 rounded-lg bg-slate-50 pl-1 pr-2 text-xs text-slate-100\",\n onClick: n(o),\n children: [\n /* @__PURE__ */ t(p, { name: \"Link\" }),\n \"DOC ID\",\n /* @__PURE__ */ t(\"span\", { className: \"text-gray-900\", children: o })\n ]\n }\n );\n}\nexport {\n x as DocId\n};\n//# sourceMappingURL=doc-id.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { Select as l } from \"../../select/select.js\";\nfunction n(e) {\n const { value: t, onChange: a } = e;\n return /* @__PURE__ */ o(\n l,\n {\n absolutePositionMenu: !0,\n containerClassName: \"bg-slate-50 text-gray-500 rounded-lg w-fit text-xs z-10\",\n id: \"scope select\",\n itemClassName: \"py-2 text-gray-500 grid grid-cols-[auto,auto] gap-1\",\n items: [\n { displayValue: \"Global scope\", value: \"global\" },\n { displayValue: \"Local scope\", value: \"local\" }\n ],\n menuClassName: \"min-w-0 text-gray-500\",\n onChange: a,\n value: t\n }\n );\n}\nexport {\n n as Scope\n};\n//# sourceMappingURL=scope.js.map\n","import { jsxs as r, jsx as e } from \"react/jsx-runtime\";\nimport { twMerge as l } from \"tailwind-merge\";\nimport { Branch as d } from \"./branch.js\";\nimport { DocId as p } from \"./doc-id.js\";\nimport { Scope as f } from \"./scope.js\";\nimport { Icon as h } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction w(t) {\n const {\n title: o,\n docId: a,\n scope: n,\n onChangeScope: s,\n onClose: c,\n className: i,\n ...m\n } = t;\n return /* @__PURE__ */ r(\n \"header\",\n {\n className: l(\n \"flex items-center justify-between bg-transparent\",\n i\n ),\n ...m,\n children: [\n /* @__PURE__ */ r(\"div\", { className: \"flex items-center gap-3\", children: [\n /* @__PURE__ */ e(\n \"button\",\n {\n className: \"rounded-lg bg-gray-50 p-1 text-slate-100 shadow-button\",\n onClick: c,\n children: /* @__PURE__ */ e(h, { name: \"VariantArrowLeft\" })\n }\n ),\n /* @__PURE__ */ e(\"h1\", { className: \"text-xs\", children: o })\n ] }),\n /* @__PURE__ */ r(\"div\", { className: \"flex items-center gap-2\", children: [\n /* @__PURE__ */ e(p, { docId: a }),\n /* @__PURE__ */ e(d, {}),\n /* @__PURE__ */ e(f, { onChange: s, value: n })\n ] })\n ]\n }\n );\n}\nexport {\n w as Header\n};\n//# sourceMappingURL=header.js.map\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 let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n 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","function g(t) {\n var s, r, p, a, d, h, u, m;\n const i = [], n = /* @__PURE__ */ new Set();\n for (const e of t) {\n const o = e.timestamp.split(\"T\")[0];\n n.has(o) || (n.add(o), i.push({\n type: \"day\",\n height: 32,\n timestamp: o\n })), i.push({\n type: \"revision\",\n height: 46,\n operationIndex: e.index,\n eventId: e.id ?? \"EVENT_ID_NOT_FOUND\",\n stateHash: e.hash,\n operationType: e.type,\n operationInput: e.input ?? {},\n address: (p = (r = (s = e.context) == null ? void 0 : s.signer) == null ? void 0 : r.user) == null ? void 0 : p.address,\n chainId: (h = (d = (a = e.context) == null ? void 0 : a.signer) == null ? void 0 : d.user) == null ? void 0 : h.chainId,\n timestamp: e.timestamp,\n signatures: f((m = (u = e.context) == null ? void 0 : u.signer) == null ? void 0 : m.signatures),\n errors: e.error ? [e.error] : void 0\n }), e.skip > 0 && i.push({\n type: \"skip\",\n height: 34,\n operationIndex: e.index,\n skipCount: e.skip,\n timestamp: e.timestamp\n });\n }\n return i;\n}\nfunction c(t) {\n const [i, n, s, r] = t;\n return {\n signerAddress: i,\n hash: n,\n prevStateHash: s,\n signatureBytes: r,\n isVerified: !0\n };\n}\nfunction f(t) {\n return t == null ? void 0 : t.map(c);\n}\nexport {\n g as makeRows\n};\n//# sourceMappingURL=utils.js.map\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { jsxs as o, jsx as s } from \"react/jsx-runtime\";\nimport { format as r } from \"date-fns\";\nimport { Icon as a } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction f(t) {\n const { timestamp: e } = t, m = r(e, \"MMM dd, yyyy\");\n return /* @__PURE__ */ o(\"h2\", { className: \"-ml-6 flex items-center gap-1 bg-slate-50 py-2 text-xs text-slate-100\", children: [\n /* @__PURE__ */ s(a, { name: \"Ring\", size: 16 }),\n \" Changes on \",\n m\n ] });\n}\nexport {\n f as Day\n};\n//# sourceMappingURL=day.js.map\n","import { jsx as t, jsxs as r } from \"react/jsx-runtime\";\nimport { useCopyToClipboard as p } from \"usehooks-ts\";\nimport { formatEthAddress as d } from \"../../../utils/address.js\";\nimport { Tooltip as f } from \"../../tooltip/tooltip.js\";\nimport { ENSAvatar as u } from \"../../ens-avatar/ens-avatar.js\";\nimport { Icon as x } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction N(e) {\n const { address: o, chainId: n } = e, [, s] = p();\n if (!o) return null;\n const i = d(o);\n function c(l) {\n return () => {\n s(l).catch((m) => {\n console.error(\"Failed to copy!\", m);\n });\n };\n }\n const a = /* @__PURE__ */ r(\"button\", { className: \"flex items-center gap-1\", onClick: c(o), children: [\n o,\n /* @__PURE__ */ t(\n x,\n {\n className: \"inline-block text-gray-600\",\n name: \"FilesEarmark\",\n size: 16\n }\n )\n ] });\n return /* @__PURE__ */ t(f, { content: a, children: /* @__PURE__ */ r(\"span\", { className: \"flex w-fit cursor-pointer items-center gap-1 rounded-lg bg-gray-100 p-1 text-xs text-slate-100\", children: [\n /* @__PURE__ */ t(u, { address: o, chainId: n }),\n i\n ] }) });\n}\nexport {\n N as Address\n};\n//# sourceMappingURL=address.js.map\n","import { jsxs as n, jsx as e } from \"react/jsx-runtime\";\nimport { twMerge as c } from \"tailwind-merge\";\nimport { Tooltip as f } from \"../../tooltip/tooltip.js\";\nimport { Icon as s } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction N(i) {\n const { errors: t } = i, r = !!(t != null && t.length), a = r ? \"text-red-800\" : \"text-green-700\", m = r ? /* @__PURE__ */ e(s, { name: \"Exclamation\", size: 16 }) : /* @__PURE__ */ e(s, { name: \"Check\", size: 16 }), l = r ? `Error: ${t[0]}` : \"No errors\", o = /* @__PURE__ */ n(\n \"span\",\n {\n className: c(\n \"flex w-fit items-center rounded-lg border border-gray-200 px-2 py-1 text-xs\",\n a,\n r && \"cursor-pointer\"\n ),\n children: [\n m,\n /* @__PURE__ */ e(\"span\", { className: c(\"inline-block max-w-36 truncate\"), children: l })\n ]\n }\n ), p = t == null ? void 0 : t.map((x, d) => /* @__PURE__ */ n(\"p\", { className: \"text-red-800\", children: [\n \"Error: \",\n x\n ] }, d));\n return r ? /* @__PURE__ */ e(f, { content: p, children: o }) : o;\n}\nexport {\n N as Errors\n};\n//# sourceMappingURL=errors.js.map\n","import { jsx as t, jsxs as i } from \"react/jsx-runtime\";\nimport { Tooltip as s } from \"../../tooltip/tooltip.js\";\nimport { Icon as c } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction m(e) {\n const { operationType: o, operationInput: n } = e, r = /* @__PURE__ */ t(\"code\", { children: /* @__PURE__ */ t(\"pre\", { children: JSON.stringify(n, null, 2) }) });\n return /* @__PURE__ */ t(s, { content: r, children: /* @__PURE__ */ i(\"span\", { className: \"flex cursor-pointer items-center gap-2 text-xs\", children: [\n o,\n /* @__PURE__ */ t(c, { className: \"text-gray-300\", name: \"Braces\", size: 16 })\n ] }) });\n}\nexport {\n m as Operation\n};\n//# sourceMappingURL=operation.js.map\n","import { jsx as e, jsxs as n } from \"react/jsx-runtime\";\nimport { useCopyToClipboard as u } from \"usehooks-ts\";\nimport { Tooltip as d } from \"../../tooltip/tooltip.js\";\nimport { Icon as r } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction N(s) {\n const { operationIndex: i, eventId: a, stateHash: t } = s, [, c] = u(), o = i + 1, l = /* @__PURE__ */ n(\"button\", { className: \"flex items-center gap-1\", onClick: m(t), children: [\n \"Revision \",\n o,\n \" - Event ID: \",\n a,\n \" - State Hash: \",\n t,\n /* @__PURE__ */ e(\n r,\n {\n className: \"inline-block text-gray-600\",\n name: \"FilesEarmark\",\n size: 16\n }\n )\n ] });\n function m(p) {\n return () => {\n c(p).catch((x) => {\n console.error(\"Failed to copy!\", x);\n });\n };\n }\n return /* @__PURE__ */ e(d, { content: l, children: /* @__PURE__ */ n(\"span\", { className: \"flex cursor-pointer items-center gap-2 text-xs text-gray-600\", children: [\n \"Revision \",\n o,\n \".\",\n /* @__PURE__ */ e(\"a\", { children: /* @__PURE__ */ e(\n r,\n {\n className: \"cursor-pointer text-slate-100\",\n name: \"Ellipsis\",\n size: 14\n }\n ) })\n ] }) });\n}\nexport {\n N as RevisionNumber\n};\n//# sourceMappingURL=revision-number.js.map\n","import { jsxs as i, jsx as n } from \"react/jsx-runtime\";\nimport { Tooltip as c } from \"../../tooltip/tooltip.js\";\nimport { Icon as d } from \"../../../../powerhouse/components/icon/icon.js\";\nfunction g(o) {\n const { signatures: e } = o;\n if (!(e != null && e.length)) return null;\n const r = /* @__PURE__ */ i(\"div\", { className: \"text-xs text-slate-300\", children: [\n /* @__PURE__ */ n(\"h3\", { className: \"mb-2\", children: \"Signature details:\" }),\n e.map((t, s) => /* @__PURE__ */ i(\"div\", { className: \"mb-2 last:mb-0\", children: [\n /* @__PURE__ */ i(\"h4\", { children: [\n \"Signature #\",\n s + 1,\n \" -\",\n \" \",\n t.isVerified ? \"verified\" : \"unverified\"\n ] }),\n /* @__PURE__ */ n(\"code\", { children: /* @__PURE__ */ n(\"pre\", { children: JSON.stringify(t, null, 2) }) })\n ] }, t.hash))\n ] });\n return /* @__PURE__ */ n(c, { content: r, children: /* @__PURE__ */ i(\"span\", { className: \"flex w-fit cursor-pointer items-center gap-1 rounded-lg border border-gray-200 px-2 py-1\", children: [\n /* @__PURE__ */ n(u, { signatures: e }),\n \" \",\n /* @__PURE__ */ n(d, { className: \"text-gray-300\", name: \"InfoSquare\", size: 16 })\n ] }) });\n}\nfunction u(o) {\n const { signatures: e } = o;\n if (!(e != null && e.length)) return null;\n const r = e.length, t = e.filter(\n (a) => a.isVerified\n ).length, l = `${t}/${r} ${r === 1 ? \"signature\" : \"signatures\"} verified`;\n return /* @__PURE__ */ n(\"span\", { className: `text-xs ${t === 0 ? \"text-red-800\" : t === r ? \"text-green-700\" : \"text-orange-700\"}`, children: l });\n}\nexport {\n g as Signature\n};\n//# sourceMappingURL=signature.js.map\n","import { jsx as e, jsxs as c } from \"react/jsx-runtime\";\nimport { format as n } from \"date-fns\";\nimport { Tooltip as p } from \"../../tooltip/tooltip.js\";\nfunction x(s) {\n const { timestamp: t } = s, m = typeof t == \"string\" ? parseInt(t) : t, o = new Date(m), r = n(o, \"HH:mm 'UTC'\"), i = n(o, \"eee, dd MMM yyyy HH:mm:ss 'UTC'\");\n return /* @__PURE__ */ e(p, { content: /* @__PURE__ */ e(\"div\", { children: i }), children: /* @__PURE__ */ c(\"span\", { className: \"cursor-pointer text-xs\", children: [\n \"committed at \",\n r\n ] }) });\n}\nexport {\n x as Timestamp\n};\n//# sourceMappingURL=timestamp.js.map\n","import { jsxs as i, jsx as r } from \"react/jsx-runtime\";\nimport { memo as m } from \"react\";\nimport { Address as t } from \"./address.js\";\nimport { Errors as o } from \"./errors.js\";\nimport { Operation as n } from \"./operation.js\";\nimport { RevisionNumber as s } from \"./revision-number.js\";\nimport { Signature as a } from \"./signature.js\";\nimport { Timestamp as f } from \"./timestamp.js\";\nfunction c(e) {\n return /* @__PURE__ */ i(\"article\", { className: \"flex items-center justify-between rounded-xl border border-gray-200 bg-white px-4 py-2\", children: [\n /* @__PURE__ */ i(\"div\", { className: \"flex items-center gap-2\", children: [\n /* @__PURE__ */ r(s, { ...e }),\n /* @__PURE__ */ r(n, { ...e }),\n /* @__PURE__ */ r(t, { ...e }),\n /* @__PURE__ */ r(f, { ...e })\n ] }),\n /* @__PURE__ */ i(\"div\", { className: \"flex items-center gap-1\", children: [\n /* @__PURE__ */ r(a, { ...e }),\n /* @__PURE__ */ r(o, { ...e })\n ] })\n ] });\n}\nconst h = m(c);\nexport {\n h as Revision,\n c as _Revision\n};\n//# sourceMappingURL=revision.js.map\n","import { jsxs as i, jsx as t } from \"react/jsx-runtime\";\nfunction a(r) {\n const { operationIndex: n, skipCount: s } = r, e = n, o = s === 1 ? `${e}` : `${e} - ${e + 1 - s}`;\n return /* @__PURE__ */ i(\"article\", { className: \"grid grid-cols-[1fr,auto,1fr] items-center py-2\", children: [\n /* @__PURE__ */ t(\"div\", { className: \"h-px rounded-full bg-slate-100\" }),\n /* @__PURE__ */ i(\"div\", { className: \"mx-3 text-xs text-slate-100\", children: [\n \"[Skipped Revision \",\n o,\n \"]\"\n ] }),\n /* @__PURE__ */ t(\"div\", { className: \"h-px rounded-full bg-slate-100\" })\n ] });\n}\nexport {\n a as Skip\n};\n//# sourceMappingURL=skip.js.map\n","import { jsx as i, jsxs as E } from \"react/jsx-runtime\";\nimport { useMemo as N, useState as l, useRef as T, useEffect as c, createElement as b } from \"react\";\nimport { useVirtualizer as R } from \"@tanstack/react-virtual\";\nimport { makeRows as V } from \"../utils.js\";\nimport { Day as $ } from \"./day.js\";\nimport { Revision as j } from \"../revision/revision.js\";\nimport { Skip as v } from \"../skip/skip.js\";\nfunction P(w) {\n const { localOperations: g, globalOperations: y, scope: S } = w, a = S === \"local\" ? g : y, m = 100, o = N(() => V(a), [a]), [p, x] = l(0), [n, k] = l(m), [r, z] = l(() => o.slice(0, n)), h = T(null), u = r.length < o.length, f = R({\n count: r.length,\n getScrollElement: () => h.current,\n estimateSize: (e) => o[e].height,\n gap: 8\n });\n c(() => {\n if (!u) return;\n const e = Math.floor(p / 46), t = m + e;\n k(\n (s) => t > s ? t : s\n );\n }, [p, u]), c(() => {\n z(o.slice(0, n));\n }, [o, n]);\n const d = (e) => {\n x((t) => {\n const s = t + e.deltaY;\n return s < 0 ? 0 : s;\n });\n };\n return c(() => (window.addEventListener(\"wheel\", d), () => {\n window.removeEventListener(\"wheel\", d);\n }), []), /* @__PURE__ */ i(\n \"div\",\n {\n className: `border-l border-slate-100\n `,\n ref: h,\n style: {\n height: `${f.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\"\n },\n children: f.getVirtualItems().map((e) => {\n const t = r[e.index];\n return /* @__PURE__ */ E(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 16,\n width: \"100%\",\n height: `${e.size}px`,\n transform: `translateY(${e.start}px)`\n },\n children: [\n t.type === \"revision\" && /* @__PURE__ */ b(j, { ...t, key: e.key }),\n t.type === \"skip\" && /* @__PURE__ */ i(v, { ...t }, e.key),\n t.type === \"day\" && /* @__PURE__ */ i($, { ...t }, e.key)\n ]\n },\n e.index\n );\n })\n }\n );\n}\nexport {\n P as Timeline\n};\n//# sourceMappingURL=timeline.js.map\n","import { jsx as t } from \"react/jsx-runtime\";\nimport { twMerge as i } from \"tailwind-merge\";\nimport { Button as m } from \"../button/button.js\";\nimport { mergeClassNameProps as s } from \"../../utils/mergeClassNameProps.js\";\nconst d = ({\n active: o = !1,\n ...r\n}) => {\n const e = i(\n \"h-8 min-w-8 border border-solid border-gray-300 bg-white px-3 py-1 text-xs text-gray-900 hover:bg-gray-100\",\n !o && \"border-0\"\n );\n return /* @__PURE__ */ t(\n m,\n {\n color: \"light\",\n size: \"small\",\n ...s(r, e),\n children: r.children\n }\n );\n};\nexport {\n d as PaginationButton\n};\n//# sourceMappingURL=pagination-button.js.map\n","import { jsxs as l, jsx as e } from \"react/jsx-runtime\";\nimport { PaginationButton as a } from \"./pagination-button.js\";\nimport { Icon as d } from \"../icon/icon.js\";\nconst C = (g) => {\n const {\n pages: P = [],\n goToFirstPage: m,\n goToLastPage: x,\n goToNextPage: u,\n goToPreviousPage: b,\n goToPage: v,\n isNextPageAvailable: n,\n isPreviousPageAvailable: o,\n hiddenNextPages: h,\n firstPageLabel: s = \"First\",\n lastPageLabel: t = \"Last\",\n nextPageLabel: r = \"Next\",\n previousPageLabel: c = \"Previous\"\n } = g;\n return /* @__PURE__ */ l(\"div\", { className: \"flex gap-x-1\", children: [\n s ? /* @__PURE__ */ e(\n a,\n {\n disabled: !o,\n onClick: () => m(),\n children: s\n }\n ) : null,\n c ? /* @__PURE__ */ l(\n a,\n {\n disabled: !o,\n onClick: () => b(),\n children: [\n /* @__PURE__ */ e(d, { className: \"rotate-90\", name: \"ChevronDown\", size: 16 }),\n c\n ]\n }\n ) : null,\n P.map((i) => /* @__PURE__ */ e(\n a,\n {\n active: i.active,\n onClick: () => v(i.index),\n children: i.number\n },\n i.index\n )),\n h ? /* @__PURE__ */ e(\"span\", { className: \"flex items-center justify-center px-2\", children: \"...\" }) : null,\n r ? /* @__PURE__ */ l(\n a,\n {\n disabled: !n,\n onClick: () => u(),\n children: [\n r,\n /* @__PURE__ */ e(d, { className: \"-rotate-90\", name: \"ChevronDown\", size: 16 })\n ]\n }\n ) : null,\n t ? /* @__PURE__ */ e(\n a,\n {\n disabled: !n,\n onClick: () => x(),\n children: t\n }\n ) : null\n ] });\n};\nexport {\n C as Pagination\n};\n//# sourceMappingURL=pagination.js.map\n","import { jsxs as j, jsx as e } from \"react/jsx-runtime\";\nimport { utils as C } from \"document-model/document\";\nimport { useState as w, useMemo as H } from \"react\";\nimport { usePagination as I } from \"../../../powerhouse/hooks/usePagination.js\";\nimport { TooltipProvider as S } from \"../tooltip/tooltip.js\";\nimport { Header as A } from \"./header/header.js\";\nimport { Timeline as F } from \"./timeline/timeline.js\";\nimport { Pagination as M } from \"../../../powerhouse/components/pagination/pagination.js\";\nconst { garbageCollect: R, sortOperations: k } = C.documentHelpers;\nfunction U(m) {\n const {\n documentTitle: c,\n documentId: d,\n globalOperations: a,\n localOperations: i,\n onClose: p,\n itemsPerPage: s = 100\n } = m, [o, P] = w(\"global\"), t = H(() => R(k(o === \"global\" ? a : i)).sort(\n (L, O) => O.index - L.index\n ), [a, i, o]), {\n pageItems: n,\n pages: u,\n goToPage: f,\n goToNextPage: h,\n goToPreviousPage: b,\n goToFirstPage: r,\n goToLastPage: x,\n hiddenNextPages: v,\n isNextPageAvailable: N,\n isPreviousPageAvailable: T\n } = I(t, {\n itemsPerPage: s\n });\n function y(g) {\n r(), P(g);\n }\n const l = t.length > s ? /* @__PURE__ */ e(\"div\", { className: \"mt-4 flex w-full justify-end\", children: /* @__PURE__ */ e(\n M,\n {\n firstPageLabel: \"First Page\",\n goToFirstPage: r,\n goToLastPage: x,\n goToNextPage: h,\n goToPage: f,\n goToPreviousPage: b,\n hiddenNextPages: v,\n isNextPageAvailable: N,\n isPreviousPageAvailable: T,\n lastPageLabel: \"Last Page\",\n nextPageLabel: \"Next\",\n pages: u,\n previousPageLabel: \"Previous\"\n }\n ) }) : /* @__PURE__ */ e(\"hr\", { className: \"h-12 border-none\" });\n return /* @__PURE__ */ j(S, { children: [\n /* @__PURE__ */ e(\n A,\n {\n docId: d,\n onChangeScope: y,\n onClose: p,\n scope: o,\n title: c\n }\n ),\n l,\n /* @__PURE__ */ e(\"div\", { className: \"mt-4 flex justify-center rounded-md bg-slate-50 p-4\", children: t.length > 0 ? /* @__PURE__ */ e(\"div\", { className: \"grid grid-cols-[minmax(min-content,1018px)]\", children: /* @__PURE__ */ e(\n F,\n {\n globalOperations: o === \"global\" ? n : [],\n localOperations: o === \"local\" ? n : [],\n scope: o\n }\n ) }) : /* @__PURE__ */ e(\"h3\", { className: \"my-40 text-gray-600\", children: \"This document has no recorded operations yet.\" }) }),\n l\n ] });\n}\nexport {\n U as RevisionHistory\n};\n//# sourceMappingURL=revision-history.js.map\n","import { jsxs as s, jsx as o } from \"react/jsx-runtime\";\nimport { mergeClassNameProps as i } from \"../../../powerhouse/utils/mergeClassNameProps.js\";\nconst n = (t) => {\n const { item: e, ...r } = t;\n return /* @__PURE__ */ s(\n \"div\",\n {\n ...i(\n r,\n \"flex h-full flex-row items-center justify-between gap-x-4 px-2\"\n ),\n children: [\n e.icon,\n /* @__PURE__ */ o(\"div\", { className: \"text-sm font-semibold text-slate-200\", children: e.label })\n ]\n }\n );\n};\nexport {\n n as FilterItem\n};\n//# sourceMappingURL=filter-item.js.map\n","import { jsx as r, jsxs as o } from \"react/jsx-runtime\";\nimport { useMemo as f } from \"react\";\nimport { twMerge as b } from \"tailwind-merge\";\nimport { FilterItem as a } from \"./filter-item.js\";\nimport { Icon as d } from \"../../../powerhouse/components/icon/icon.js\";\nimport { DropdownMenu as w, DropdownMenuTrigger as N, DropdownMenuContent as v, DropdownMenuItem as C } from \"../../../powerhouse/components/dropdown-menu/dropdown-menu.js\";\nconst L = (c) => {\n const {\n value: i,\n onChange: s,\n placeholder: m,\n filterLabel: t,\n filterItems: n,\n selectedFilter: p,\n onFilterSelect: h = () => {\n }\n } = c, g = f(\n () => (n == null ? void 0 : n.map((e) => ({\n id: e.id,\n content: /* @__PURE__ */ r(a, { item: e })\n }))) ?? [],\n [n]\n ), l = n == null ? void 0 : n.find(\n (e) => e.id === p\n ), u = l ? /* @__PURE__ */ r(a, { className: \"gap-x-1\", item: l }) : t && /* @__PURE__ */ r(\"div\", { className: \"mr-2 text-sm font-semibold text-slate-200\", children: t });\n function x(e) {\n s(e.target.value);\n }\n return /* @__PURE__ */ o(\"div\", { className: \"flex items-center\", children: [\n /* @__PURE__ */ r(d, { className: \"mr-3\", name: \"Search\" }),\n /* @__PURE__ */ r(\n \"input\",\n {\n className: b(\n \"flex h-[52px] min-w-0 flex-1 items-center rounded-xl border border-gray-200 bg-gray-50 px-4 text-sm text-slate-200 outline-none\"\n ),\n onChange: x,\n placeholder: m,\n value: i\n }\n ),\n /* @__PURE__ */ o(w, { children: [\n /* @__PURE__ */ o(N, { className: \"ml-3 flex h-full flex-row items-center outline-none\", children: [\n u,\n \" \",\n /* @__PURE__ */ r(d, { name: \"ChevronDown\" })\n ] }),\n /* @__PURE__ */ r(v, { className: \"rounded-xl border border-gray-100 bg-gray-50 p-2\", children: g.map((e) => /* @__PURE__ */ r(\n C,\n {\n className: \"h-10 cursor-pointer overflow-hidden rounded-lg hover:bg-gray-100\",\n id: e.id,\n onSelect: () => h(e.id),\n children: e.content\n },\n e.id\n )) })\n ] })\n ] });\n};\nexport {\n L as ConnectSearchBar\n};\n//# sourceMappingURL=search-bar.js.map\n","import { jsxs as h, jsx as o } from \"react/jsx-runtime\";\nimport { twMerge as f } from \"tailwind-merge\";\nimport { EditorUndoRedoButtons as p } from \"../editor-undo-redo-buttons/editor-undo-redo-buttons.js\";\nimport { EditorActionButtons as u } from \"../editor-action-buttons/editor-action-buttons.js\";\nconst j = (r) => {\n const {\n undo: t,\n canUndo: e,\n redo: i,\n canRedo: n,\n title: s,\n onClose: d,\n onExport: c,\n className: m,\n onShowRevisionHistory: l,\n onSwitchboardLinkClick: a\n } = r;\n return /* @__PURE__ */ h(\"div\", { className: f(\"flex items-center justify-between\", m), children: [\n /* @__PURE__ */ o(\"div\", { children: t && i && e && n && /* @__PURE__ */ o(\n p,\n {\n undo: t,\n canUndo: e,\n redo: i,\n canRedo: n\n }\n ) }),\n /* @__PURE__ */ o(\"div\", { children: /* @__PURE__ */ o(\"h2\", { className: \"text-sm font-semibold\", children: s }) }),\n /* @__PURE__ */ o(\"div\", { children: /* @__PURE__ */ o(\n u,\n {\n onClose: d,\n onExport: c,\n onShowRevisionHistory: l,\n onSwitchboardLinkClick: a\n }\n ) })\n ] });\n};\nexport {\n j as DocumentToolbar\n};\n//# sourceMappingURL=document-toolbar.js.map\n","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 { atomWithLazy, loadable, unwrap } from 'jotai/utils';\nimport { useCallback, useEffect, useRef } from 'react';\nimport { useDefaultDocumentModelEditor } from 'src/hooks/useDefaultDocumentModelEditor';\nimport { DocumentModelsModule } from 'src/utils/types';\nimport { externalPackagesAtom } from './external-packages';\n\nexport const LOCAL_DOCUMENT_EDITORS = import.meta.env.LOCAL_DOCUMENT_EDITORS;\n\nasync function loadBaseEditors() {\n const JsonEditor = (await import('document-model-libs/editors/json'))\n .default as unknown as ExtendedEditor;\n return [JsonEditor as unknown as ExtendedEditor];\n}\n\nfunction getEditorsFromModules(modules: DocumentModelsModule[]) {\n return modules\n .map(module => module.editors)\n .reduce((acc, val) => acc.concat(val), []);\n}\n\nasync function loadDynamicEditors() {\n if (!LOCAL_DOCUMENT_EDITORS) {\n return [];\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 return Object.values(localEditors);\n } catch (e) {\n console.error('Error loading local document editors', e);\n return [];\n }\n}\n\nconst baseEditorsAtom = atomWithLazy(loadBaseEditors);\nconst dynamicEditorsAtom = atomWithLazy(loadDynamicEditors);\n\nexport const editorsAtom = atom(async get => {\n const baseEditors = await get(baseEditorsAtom);\n const dynamicEditors = await get(dynamicEditorsAtom);\n const externalModules = await get(externalPackagesAtom);\n const externalEditors = getEditorsFromModules(externalModules);\n\n return dynamicEditors.concat(externalEditors, baseEditors);\n});\n\nconst unwrappedEditorsAtom = unwrap(editorsAtom);\nconst loadableEditorsAtom = loadable(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\n// returns state, data and error, which will cause a rerender when the editors are loaded. Does not suspend the UI\nexport const useLoadableEditors = () => {\n return useAtomValue(loadableEditorsAtom);\n};\n\nexport const useEditorsAsync = () => {\n const editorsPromise = useRef(\n (() => {\n let resolveFn!: (value: ExtendedEditor[]) => void;\n let rejectFn!: (reason?: any) => void;\n\n const promise = new Promise<ExtendedEditor[]>((resolve, reject) => {\n resolveFn = resolve;\n rejectFn = reject;\n });\n\n return { promise, resolve: resolveFn, reject: rejectFn };\n })(),\n );\n\n const editors = useLoadableEditors();\n\n useEffect(() => {\n if (editors.state === 'hasError') {\n editorsPromise.current.reject(editors.error);\n } else if (editors.state === 'hasData') {\n editorsPromise.current.resolve(editors.data);\n }\n }, [editors]);\n return editorsPromise.current.promise;\n};\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 useCallback(\n async (documentType: string) => {\n const editors = await editorsPromise;\n const editor = getEditor(documentType, editors);\n if (editor && 'preload' in editor.Component) {\n console.log(\n `Preloading editor for document '${documentType}': ${editor.config?.id}`,\n );\n await (\n editor.Component as { preload: () => Promise<void> }\n ).preload();\n }\n },\n [editorsPromise],\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","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","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nimport { c as createReducer, i as isBaseAction, a as createExtendedState, b as createDocument, s as saveToFile, d as saveToFileHandle, l as loadFromFile, e as loadFromInput, f as createAction, B as BaseActions } from \"./creators-Dir4K_-h.js\";\nimport \"mutative\";\nimport { z } from \"zod\";\nimport \"jszip\";\nimport { B as BaseDocument, a as applyMixins } from \"./object-CzFSgK3q.js\";\nconst SPLIT_LOWER_UPPER_RE = new RegExp(\"([\\\\p{Ll}\\\\d])(\\\\p{Lu})\", \"gu\");\nconst SPLIT_UPPER_UPPER_RE = new RegExp(\"(\\\\p{Lu})([\\\\p{Lu}][\\\\p{Ll}])\", \"gu\");\nconst SPLIT_SEPARATE_NUMBER_RE = new RegExp(\"(\\\\d)\\\\p{Ll}|(\\\\p{L})\\\\d\", \"u\");\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\nfunction split(value) {\n let result = value.trim();\n result = result.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\nfunction splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\nfunction pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options == null ? void 0 : options.locale);\n const upper = upperFactory(options == null ? void 0 : options.locale);\n const transform = pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(\"\") + suffix;\n}\nfunction lowerFactory(locale) {\n return (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return (input) => input.toLocaleUpperCase(locale);\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex)\n ];\n}\nfunction validateInitialState(initialState, allowEmptyState = false) {\n const errors = [];\n if (allowEmptyState && initialState === \"\") return errors;\n try {\n const state = JSON.parse(initialState);\n if (!allowEmptyState && !Object.keys(state).length) {\n errors.push({\n message: \"Initial state cannot be empty\",\n details: {\n initialState\n }\n });\n }\n } catch {\n errors.push({\n message: \"Invalid initial state\",\n details: {\n initialState\n }\n });\n }\n return errors;\n}\nfunction validateStateSchemaName(schema, documentName, scope = \"\", allowEmptySchema = true) {\n const errors = [];\n if (!allowEmptySchema && !schema) {\n errors.push({\n message: \"State schema is required\",\n details: {\n schema\n }\n });\n return errors;\n }\n if (allowEmptySchema && !schema) return errors;\n const expectedTypeName = `type ${pascalCase(documentName)}${pascalCase(scope)}State`;\n if (!schema.includes(expectedTypeName)) {\n errors.push({\n message: `Invalid state schema name. Expected ${expectedTypeName}`,\n details: {\n schema\n }\n });\n }\n return errors;\n}\nfunction validateModules(modules) {\n const errors = [];\n if (!modules.length) {\n errors.push({\n message: \"Modules are required\",\n details: {\n modules\n }\n });\n }\n const modulesError = modules.reduce(\n (acc, mod) => [...acc, ...validateModule(mod)],\n []\n );\n return [...errors, ...modulesError];\n}\nfunction validateModule(mod) {\n const errors = [];\n if (!mod.name) {\n errors.push({\n message: \"Module name is required\",\n details: {\n module: mod\n }\n });\n }\n if (!mod.operations.length) {\n errors.push({\n message: \"Module operations are required\",\n details: {\n module: mod\n }\n });\n }\n const operationErrors = mod.operations.reduce(\n (acc, operation) => [...acc, ...validateModuleOperation(operation)],\n []\n );\n return [...errors, ...operationErrors];\n}\nfunction validateModuleOperation(operation) {\n const errors = [];\n if (!operation.name) {\n errors.push({\n message: \"Operation name is required\",\n details: {\n operation\n }\n });\n }\n if (!operation.schema) {\n errors.push({\n message: \"Operation schema is required\",\n details: {\n operation\n }\n });\n }\n return errors;\n}\nconst customUtils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n validateInitialState,\n validateModule,\n validateModuleOperation,\n validateModules,\n validateStateSchemaName\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst documentModel = {\n id: \"powerhouse/document-model\",\n name: \"DocumentModel\",\n extension: \"phdm\",\n description: \"The Powerhouse Document Model describes the state and operations of a document type.\",\n author: {\n name: \"Powerhouse\",\n website: \"https://www.powerhouse.inc/\"\n },\n specifications: [\n {\n version: 1,\n changeLog: [],\n modules: [\n {\n name: \"header\",\n operations: [\n {\n name: \"SetModelName\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetModelId\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetModelExtension\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetModelDescription\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetAuthorName\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetAuthorWebsite\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"versioning\",\n operations: [\n {\n name: \"AddChangeLogItem\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"UpdateChangeLogItem\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteChangeLogItem\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderChangeLogItems\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReleaseNewVersion\",\n schema: null,\n id: \"\",\n description: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"module\",\n operations: [\n {\n name: \"AddModule\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetModuleName\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetModuleDescription\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteModule\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderModules\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"operation-error\",\n operations: [\n {\n name: \"AddOperationError\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationErrorCode\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationErrorName\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationErrorDescription\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationErrorTemplate\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteOperationError\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderOperationErrors\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"operation-example\",\n operations: [\n {\n name: \"AddOperationExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"UpdateOperationExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteOperationExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderOperationExamples\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"operation\",\n operations: [\n {\n name: \"AddOperation\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationName\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationSchema\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationDescription\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationTemplate\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetOperationReducer\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"MoveOperation\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteOperation\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderModuleOperations\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n },\n {\n name: \"state\",\n operations: [\n {\n name: \"SetStateSchema\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"SetInitialState\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"AddStateExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"UpdateStateExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"DeleteStateExample\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n },\n {\n name: \"ReorderStateExamples\",\n id: \"\",\n description: \"\",\n schema: \"\",\n template: \"\",\n reducer: \"\",\n examples: [],\n errors: [],\n scope: \"global\"\n }\n ],\n id: \"\",\n description: \"\"\n }\n ],\n state: {\n global: {\n schema: \"\",\n initialValue: '{\\n \"id\": \"\",\\n \"name\": \"\",\\n \"extension\": \"\",\\n \"description\": \"\",\\n \"author\": {\\n \"name\": \"\",\\n \"website\": \"\"\\n },\\n \"specifications\": [\\n {\\n \"version\": 1,\\n \"changeLog\": [],\\n \"state\": {\\n \"schema\": \"\",\\n \"initialValue\": \"\",\\n \"examples\": []\\n },\\n \"modules\": []\\n }\\n ]\\n}',\n examples: []\n },\n local: {\n schema: \"\",\n initialValue: `{}`,\n examples: []\n }\n }\n }\n ]\n};\nconst isDefinedNonNullAny = (v) => v !== void 0 && v !== null;\nconst definedNonNullAnySchema = z.any().refine((v) => isDefinedNonNullAny(v));\nfunction AddChangeLogItemInputSchema() {\n return z.object({\n __typename: z.literal(\"AddChangeLogItemInput\").optional(),\n content: z.string(),\n id: z.string(),\n insertBefore: z.string().nullable()\n });\n}\nfunction AddModuleInputSchema() {\n return z.object({\n description: z.string().nullish(),\n id: z.string(),\n name: z.string()\n });\n}\nfunction AddOperationErrorInputSchema() {\n return z.object({\n errorCode: z.string().nullish(),\n errorDescription: z.string().nullish(),\n errorName: z.string().nullish(),\n errorTemplate: z.string().nullish(),\n id: z.string(),\n operationId: z.string()\n });\n}\nfunction AddOperationExampleInputSchema() {\n return z.object({\n example: z.string(),\n id: z.string(),\n operationId: z.string()\n });\n}\nfunction AddOperationInputSchema() {\n return z.object({\n description: z.string().nullish(),\n id: z.string(),\n moduleId: z.string(),\n name: z.string(),\n reducer: z.string().nullish(),\n schema: z.string().nullish(),\n template: z.string().nullish(),\n scope: OperationScopeSchema().nullish()\n });\n}\nfunction AddStateExampleInputSchema() {\n return z.object({\n scope: z.string(),\n example: z.string(),\n id: z.string(),\n insertBefore: z.string().nullish()\n });\n}\nfunction AuthorSchema() {\n return z.object({\n __typename: z.literal(\"Author\").optional(),\n name: z.string(),\n website: z.string().nullable()\n });\n}\nfunction CodeExampleSchema() {\n return z.object({\n __typename: z.literal(\"CodeExample\").optional(),\n id: z.string(),\n value: z.string()\n });\n}\nfunction DeleteChangeLogItemInputSchema() {\n return z.object({\n __typename: z.literal(\"DeleteChangeLogItemInput\").optional(),\n id: z.string()\n });\n}\nfunction DeleteModuleInputSchema() {\n return z.object({\n id: z.string()\n });\n}\nfunction DeleteOperationErrorInputSchema() {\n return z.object({\n id: z.string()\n });\n}\nfunction DeleteOperationExampleInputSchema() {\n return z.object({\n id: z.string()\n });\n}\nfunction DeleteOperationInputSchema() {\n return z.object({\n id: z.string()\n });\n}\nfunction DeleteStateExampleInputSchema() {\n return z.object({\n scope: z.string(),\n id: z.string()\n });\n}\nfunction OperationScopeSchema() {\n return z.literal(\"global\").or(z.literal(\"local\"));\n}\nfunction DocumentModelInputSchema() {\n return z.union([\n AddChangeLogItemInputSchema(),\n AddModuleInputSchema(),\n AddOperationErrorInputSchema(),\n AddOperationExampleInputSchema(),\n AddOperationInputSchema(),\n AddStateExampleInputSchema(),\n DeleteChangeLogItemInputSchema(),\n DeleteModuleInputSchema(),\n DeleteOperationErrorInputSchema(),\n DeleteOperationExampleInputSchema(),\n DeleteOperationInputSchema(),\n DeleteStateExampleInputSchema(),\n MoveOperationInputSchema(),\n ReorderChangeLogItemsInputSchema(),\n ReorderModuleOperationsInputSchema(),\n ReorderModulesInputSchema(),\n ReorderOperationErrorsInputSchema(),\n ReorderOperationExamplesInputSchema(),\n ReorderStateExamplesInputSchema(),\n SetAuthorNameInputSchema(),\n SetAuthorWebsiteInputSchema(),\n SetInitialStateInputSchema(),\n SetModelDescriptionInputSchema(),\n SetModelExtensionInputSchema(),\n SetModelIdInputSchema(),\n SetModelNameInputSchema(),\n SetModuleDescriptionInputSchema(),\n SetModuleNameInputSchema(),\n SetOperationDescriptionInputSchema(),\n SetOperationErrorCodeInputSchema(),\n SetOperationErrorDescriptionInputSchema(),\n SetOperationErrorNameInputSchema(),\n SetOperationErrorTemplateInputSchema(),\n SetOperationNameInputSchema(),\n SetOperationReducerInputSchema(),\n SetOperationSchemaInputSchema(),\n SetOperationTemplateInputSchema(),\n SetStateSchemaInputSchema(),\n UpdateChangeLogItemInputSchema(),\n UpdateOperationExampleInputSchema(),\n UpdateStateExampleInputSchema()\n ]);\n}\nfunction DocumentModelStateSchema() {\n return z.object({\n __typename: z.literal(\"DocumentModelState\").optional(),\n author: AuthorSchema(),\n description: z.string(),\n extension: z.string(),\n id: z.string(),\n name: z.string(),\n specifications: z.array(DocumentSpecificationSchema())\n });\n}\nfunction DocumentSpecificationSchema() {\n return z.object({\n __typename: z.literal(\"DocumentSpecification\").optional(),\n changeLog: z.array(z.string()),\n modules: z.array(ModuleSchema()),\n state: ScopeStateSchema(),\n version: z.number()\n });\n}\nfunction ModuleSchema() {\n return z.object({\n __typename: z.literal(\"Module\").optional(),\n description: z.string().nullable(),\n id: z.string(),\n name: z.string(),\n operations: z.array(OperationSchema())\n });\n}\nfunction MoveOperationInputSchema() {\n return z.object({\n newModuleId: z.string(),\n operationId: z.string()\n });\n}\nfunction OperationSchema() {\n return z.object({\n __typename: z.literal(\"Operation\").optional(),\n description: z.string().nullable(),\n errors: z.array(OperationErrorSchema()),\n examples: z.array(CodeExampleSchema()),\n id: z.string(),\n name: z.string().nullable(),\n reducer: z.string().nullable(),\n schema: z.string().nullable(),\n template: z.string().nullable(),\n scope: OperationScopeSchema()\n });\n}\nfunction OperationErrorSchema() {\n return z.object({\n __typename: z.literal(\"OperationError\").optional(),\n code: z.string().nullable(),\n description: z.string().nullable(),\n id: z.string(),\n name: z.string().nullable(),\n template: z.string().nullable()\n });\n}\nfunction ReorderChangeLogItemsInputSchema() {\n return z.object({\n __typename: z.literal(\"ReorderChangeLogItemsInput\").optional(),\n order: z.array(z.string())\n });\n}\nfunction ReorderModuleOperationsInputSchema() {\n return z.object({\n moduleId: z.string(),\n order: z.array(z.string())\n });\n}\nfunction ReorderModulesInputSchema() {\n return z.object({\n order: z.array(z.string())\n });\n}\nfunction ReorderOperationErrorsInputSchema() {\n return z.object({\n operationId: z.string(),\n order: z.array(z.string())\n });\n}\nfunction ReorderOperationExamplesInputSchema() {\n return z.object({\n operationId: z.string(),\n order: z.array(z.string())\n });\n}\nfunction ReorderStateExamplesInputSchema() {\n return z.object({\n scope: z.string(),\n order: z.array(z.string())\n });\n}\nfunction SetAuthorNameInputSchema() {\n return z.object({\n authorName: z.string()\n });\n}\nfunction SetAuthorWebsiteInputSchema() {\n return z.object({\n authorWebsite: z.string()\n });\n}\nfunction SetInitialStateInputSchema() {\n return z.object({\n scope: z.string(),\n initialValue: z.string()\n });\n}\nfunction SetModelDescriptionInputSchema() {\n return z.object({\n description: z.string()\n });\n}\nfunction SetModelExtensionInputSchema() {\n return z.object({\n extension: z.string()\n });\n}\nfunction SetModelIdInputSchema() {\n return z.object({\n id: z.string()\n });\n}\nfunction SetModelNameInputSchema() {\n return z.object({\n name: z.string()\n });\n}\nfunction SetModuleDescriptionInputSchema() {\n return z.object({\n description: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetModuleNameInputSchema() {\n return z.object({\n id: z.string(),\n name: z.string().nullish()\n });\n}\nfunction SetOperationDescriptionInputSchema() {\n return z.object({\n description: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetOperationErrorCodeInputSchema() {\n return z.object({\n errorCode: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetOperationErrorDescriptionInputSchema() {\n return z.object({\n errorDescription: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetOperationErrorNameInputSchema() {\n return z.object({\n errorName: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetOperationErrorTemplateInputSchema() {\n return z.object({\n errorTemplate: z.string().nullish(),\n id: z.string()\n });\n}\nfunction SetOperationNameInputSchema() {\n return z.object({\n id: z.string(),\n name: z.string().nullish()\n });\n}\nfunction SetOperationScopeInputSchema() {\n return z.object({\n id: z.string(),\n scope: OperationScopeSchema()\n });\n}\nfunction SetOperationReducerInputSchema() {\n return z.object({\n id: z.string(),\n reducer: z.string().nullish()\n });\n}\nfunction SetOperationSchemaInputSchema() {\n return z.object({\n id: z.string(),\n schema: z.string().nullish()\n });\n}\nfunction SetOperationTemplateInputSchema() {\n return z.object({\n id: z.string(),\n template: z.string().nullish()\n });\n}\nfunction SetStateSchemaInputSchema() {\n return z.object({\n scope: z.string(),\n schema: z.string()\n });\n}\nfunction StateSchema() {\n return z.object({\n __typename: z.literal(\"State\").optional(),\n examples: z.array(CodeExampleSchema()),\n initialValue: z.string(),\n schema: z.string()\n });\n}\nfunction ScopeStateSchema() {\n return z.object({\n global: StateSchema(),\n local: StateSchema()\n });\n}\nfunction UpdateChangeLogItemInputSchema() {\n return z.object({\n __typename: z.literal(\"UpdateChangeLogItemInput\").optional(),\n id: z.string(),\n newContent: z.string()\n });\n}\nfunction UpdateOperationExampleInputSchema() {\n return z.object({\n example: z.string(),\n id: z.string()\n });\n}\nfunction UpdateStateExampleInputSchema() {\n return z.object({\n scope: z.string(),\n id: z.string(),\n newExample: z.string()\n });\n}\nconst zod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n AddChangeLogItemInputSchema,\n AddModuleInputSchema,\n AddOperationErrorInputSchema,\n AddOperationExampleInputSchema,\n AddOperationInputSchema,\n AddStateExampleInputSchema,\n AuthorSchema,\n CodeExampleSchema,\n DeleteChangeLogItemInputSchema,\n DeleteModuleInputSchema,\n DeleteOperationErrorInputSchema,\n DeleteOperationExampleInputSchema,\n DeleteOperationInputSchema,\n DeleteStateExampleInputSchema,\n DocumentModelInputSchema,\n DocumentModelStateSchema,\n DocumentSpecificationSchema,\n ModuleSchema,\n MoveOperationInputSchema,\n OperationErrorSchema,\n OperationSchema,\n OperationScopeSchema,\n ReorderChangeLogItemsInputSchema,\n ReorderModuleOperationsInputSchema,\n ReorderModulesInputSchema,\n ReorderOperationErrorsInputSchema,\n ReorderOperationExamplesInputSchema,\n ReorderStateExamplesInputSchema,\n ScopeStateSchema,\n SetAuthorNameInputSchema,\n SetAuthorWebsiteInputSchema,\n SetInitialStateInputSchema,\n SetModelDescriptionInputSchema,\n SetModelExtensionInputSchema,\n SetModelIdInputSchema,\n SetModelNameInputSchema,\n SetModuleDescriptionInputSchema,\n SetModuleNameInputSchema,\n SetOperationDescriptionInputSchema,\n SetOperationErrorCodeInputSchema,\n SetOperationErrorDescriptionInputSchema,\n SetOperationErrorNameInputSchema,\n SetOperationErrorTemplateInputSchema,\n SetOperationNameInputSchema,\n SetOperationReducerInputSchema,\n SetOperationSchemaInputSchema,\n SetOperationScopeInputSchema,\n SetOperationTemplateInputSchema,\n SetStateSchemaInputSchema,\n StateSchema,\n UpdateChangeLogItemInputSchema,\n UpdateOperationExampleInputSchema,\n UpdateStateExampleInputSchema,\n definedNonNullAnySchema,\n isDefinedNonNullAny\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst reducer$7 = {\n setModelNameOperation(state, action) {\n state.name = action.input.name;\n },\n setModelIdOperation(state, action) {\n state.id = action.input.id;\n },\n setModelExtensionOperation(state, action) {\n state.extension = action.input.extension;\n },\n setModelDescriptionOperation(state, action) {\n state.description = action.input.description;\n },\n setAuthorNameOperation(state, action) {\n state.author = state.author || { name: \"\", website: null };\n state.author.name = action.input.authorName;\n },\n setAuthorWebsiteOperation(state, action) {\n state.author = state.author || { name: \"\", website: null };\n state.author.website = action.input.authorWebsite;\n }\n};\nconst reducer$6 = {\n addChangeLogItemOperation(state, action) {\n throw new Error('Reducer \"addChangeLogItemOperation\" not yet implemented');\n },\n updateChangeLogItemOperation(state, action) {\n throw new Error(\n 'Reducer \"updateChangeLogItemOperation\" not yet implemented'\n );\n },\n deleteChangeLogItemOperation(state, action) {\n throw new Error(\n 'Reducer \"deleteChangeLogItemOperation\" not yet implemented'\n );\n },\n reorderChangeLogItemsOperation(state, action) {\n throw new Error(\n 'Reducer \"reorderChangeLogItemsOperation\" not yet implemented'\n );\n },\n releaseNewVersionOperation(state, action) {\n throw new Error('Reducer \"releaseNewVersionOperation\" not yet implemented');\n }\n};\nconst moduleSorter = (order) => {\n const mapping = {};\n order.forEach((key, index) => mapping[key] = index);\n return (a, b) => (mapping[b.id] || 999999) - (mapping[a.id] || 999999);\n};\nconst reducer$5 = {\n addModuleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n latestSpec.modules.push({\n id: action.input.id,\n name: action.input.name,\n description: action.input.description || \"\",\n operations: []\n });\n },\n setModuleNameOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n if (latestSpec.modules[i].id === action.input.id) {\n latestSpec.modules[i].name = action.input.name || \"\";\n }\n }\n },\n setModuleDescriptionOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n if (latestSpec.modules[i].id === action.input.id) {\n latestSpec.modules[i].description = action.input.description || \"\";\n }\n }\n },\n deleteModuleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n latestSpec.modules = latestSpec.modules.filter(\n (m) => m.id != action.input.id\n );\n },\n reorderModulesOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n latestSpec.modules.sort(moduleSorter(action.input.order));\n }\n};\nconst errorSorter = (order) => {\n const mapping = {};\n order.forEach((key, index) => mapping[key] = index);\n return (a, b) => (mapping[b.id] || 999999) - (mapping[a.id] || 999999);\n};\nconst reducer$4 = {\n addOperationErrorOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.operationId) {\n latestSpec.modules[i].operations[j].errors.push({\n id: action.input.id,\n name: action.input.errorName || \"\",\n code: action.input.errorCode || \"\",\n description: action.input.errorDescription || \"\",\n template: action.input.errorTemplate || \"\"\n });\n }\n }\n }\n },\n setOperationErrorCodeOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n for (let k = 0; k < latestSpec.modules[i].operations[j].errors.length; k++) {\n if (latestSpec.modules[i].operations[j].errors[k].id == action.input.id) {\n latestSpec.modules[i].operations[j].errors[k].code = action.input.errorCode || \"\";\n }\n }\n }\n }\n },\n setOperationErrorNameOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n for (let k = 0; k < latestSpec.modules[i].operations[j].errors.length; k++) {\n if (latestSpec.modules[i].operations[j].errors[k].id == action.input.id) {\n latestSpec.modules[i].operations[j].errors[k].name = action.input.errorName || \"\";\n }\n }\n }\n }\n },\n setOperationErrorDescriptionOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n for (let k = 0; k < latestSpec.modules[i].operations[j].errors.length; k++) {\n if (latestSpec.modules[i].operations[j].errors[k].id == action.input.id) {\n latestSpec.modules[i].operations[j].errors[k].description = action.input.errorDescription || \"\";\n }\n }\n }\n }\n },\n setOperationErrorTemplateOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n for (let k = 0; k < latestSpec.modules[i].operations[j].errors.length; k++) {\n if (latestSpec.modules[i].operations[j].errors[k].id == action.input.id) {\n latestSpec.modules[i].operations[j].errors[k].template = action.input.errorTemplate || \"\";\n }\n }\n }\n }\n },\n deleteOperationErrorOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n latestSpec.modules[i].operations[j].errors = latestSpec.modules[i].operations[j].errors.filter((e) => e.id != action.input.id);\n }\n }\n },\n reorderOperationErrorsOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.operationId) {\n latestSpec.modules[i].operations[j].errors.sort(\n errorSorter(action.input.order)\n );\n }\n }\n }\n }\n};\nconst exampleSorter$1 = (order) => {\n const mapping = {};\n order.forEach((key, index) => mapping[key] = index);\n return (a, b) => (mapping[b.id] || 999999) - (mapping[a.id] || 999999);\n};\nconst reducer$3 = {\n addOperationExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.operationId) {\n latestSpec.modules[i].operations[j].examples.push({\n id: action.input.id,\n value: action.input.example\n });\n }\n }\n }\n },\n updateOperationExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n for (let k = 0; k < latestSpec.modules[i].operations[j].examples.length; k++) {\n if (latestSpec.modules[i].operations[j].examples[k].id == action.input.id) {\n latestSpec.modules[i].operations[j].examples[k].value = action.input.example;\n }\n }\n }\n }\n },\n deleteOperationExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n latestSpec.modules[i].operations[j].examples = latestSpec.modules[i].operations[j].examples.filter((e) => e.id != action.input.id);\n }\n }\n },\n reorderOperationExamplesOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.operationId) {\n latestSpec.modules[i].operations[j].examples.sort(\n exampleSorter$1(action.input.order)\n );\n }\n }\n }\n }\n};\nconst operationSorter = (order) => {\n const mapping = {};\n order.forEach((key, index) => mapping[key] = index);\n return (a, b) => (mapping[b.id] || 999999) - (mapping[a.id] || 999999);\n};\nconst reducer$2 = {\n addOperationOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n if (latestSpec.modules[i].id == action.input.moduleId) {\n latestSpec.modules[i].operations.push({\n id: action.input.id,\n name: action.input.name,\n description: action.input.description || \"\",\n schema: action.input.schema || \"\",\n template: action.input.template || action.input.description || \"\",\n reducer: action.input.reducer || \"\",\n errors: [],\n examples: [],\n scope: action.input.scope || \"global\"\n });\n }\n }\n },\n setOperationNameOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].name = action.input.name || \"\";\n }\n }\n }\n },\n setOperationScopeOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].scope = action.input.scope || \"global\";\n }\n }\n }\n },\n setOperationSchemaOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].schema = action.input.schema || \"\";\n }\n }\n }\n },\n setOperationDescriptionOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].description = action.input.description || \"\";\n }\n }\n }\n },\n setOperationTemplateOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].template = action.input.template || \"\";\n }\n }\n }\n },\n setOperationReducerOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n for (let j = 0; j < latestSpec.modules[i].operations.length; j++) {\n if (latestSpec.modules[i].operations[j].id == action.input.id) {\n latestSpec.modules[i].operations[j].reducer = action.input.reducer || \"\";\n }\n }\n }\n },\n moveOperationOperation(state, action) {\n const moveOperations = [];\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n latestSpec.modules[i].operations = latestSpec.modules[i].operations.filter((operation) => {\n if (operation.id == action.input.operationId) {\n moveOperations.push(operation);\n return false;\n }\n return true;\n });\n }\n for (let i = 0; i < latestSpec.modules.length; i++) {\n if (latestSpec.modules[i].id == action.input.newModuleId) {\n latestSpec.modules[i].operations.push(...moveOperations);\n }\n }\n },\n deleteOperationOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n latestSpec.modules[i].operations = latestSpec.modules[i].operations.filter((operation) => operation.id != action.input.id);\n }\n },\n reorderModuleOperationsOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n for (let i = 0; i < latestSpec.modules.length; i++) {\n if (latestSpec.modules[i].id == action.input.moduleId) {\n latestSpec.modules[i].operations.sort(\n operationSorter(action.input.order)\n );\n }\n }\n }\n};\nconst exampleSorter = (order) => {\n const mapping = {};\n order.forEach((key, index) => mapping[key] = index);\n return (a, b) => (mapping[b.id] || 999999) - (mapping[a.id] || 999999);\n};\nconst reducer$1 = {\n setStateSchemaOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (Object.keys(latestSpec.state).includes(action.input.scope)) {\n latestSpec.state[action.input.scope].schema = action.input.schema;\n } else {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n },\n setInitialStateOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (Object.keys(latestSpec.state).includes(action.input.scope)) {\n latestSpec.state[action.input.scope].initialValue = action.input.initialValue;\n } else {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n },\n addStateExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (Object.keys(latestSpec.state).includes(action.input.scope)) {\n latestSpec.state[action.input.scope].examples.push({\n id: action.input.id,\n value: action.input.example\n });\n } else {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n },\n updateStateExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (!Object.keys(latestSpec.state).includes(action.input.scope)) {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n const examples = latestSpec.state[action.input.scope].examples;\n for (let i = 0; i < examples.length; i++) {\n if (examples[i].id == action.input.id) {\n examples[i].value = action.input.newExample;\n }\n }\n },\n deleteStateExampleOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (Object.keys(latestSpec.state).includes(action.input.scope)) {\n latestSpec.state[action.input.scope].examples = latestSpec.state[action.input.scope].examples.filter((e) => e.id != action.input.id);\n } else {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n },\n reorderStateExamplesOperation(state, action) {\n const latestSpec = state.specifications[state.specifications.length - 1];\n if (Object.keys(latestSpec.state).includes(action.input.scope)) {\n latestSpec.state[action.input.scope].examples.sort(\n exampleSorter(action.input.order)\n );\n } else {\n throw new Error(`Invalid scope: ${action.input.scope}`);\n }\n }\n};\nconst stateReducer = (state, action) => {\n if (isBaseAction(action)) {\n return state;\n }\n switch (action.type) {\n case \"SET_MODEL_NAME\":\n SetModelNameInputSchema().parse(action.input);\n reducer$7.setModelNameOperation(state.global, action);\n break;\n case \"SET_MODEL_ID\":\n SetModelIdInputSchema().parse(action.input);\n reducer$7.setModelIdOperation(state.global, action);\n break;\n case \"SET_MODEL_EXTENSION\":\n SetModelExtensionInputSchema().parse(action.input);\n reducer$7.setModelExtensionOperation(state.global, action);\n break;\n case \"SET_MODEL_DESCRIPTION\":\n SetModelDescriptionInputSchema().parse(action.input);\n reducer$7.setModelDescriptionOperation(state.global, action);\n break;\n case \"SET_AUTHOR_NAME\":\n SetAuthorNameInputSchema().parse(action.input);\n reducer$7.setAuthorNameOperation(state.global, action);\n break;\n case \"SET_AUTHOR_WEBSITE\":\n SetAuthorWebsiteInputSchema().parse(action.input);\n reducer$7.setAuthorWebsiteOperation(state.global, action);\n break;\n case \"ADD_CHANGE_LOG_ITEM\":\n AddChangeLogItemInputSchema().parse(action.input);\n reducer$6.addChangeLogItemOperation(state.global, action);\n break;\n case \"UPDATE_CHANGE_LOG_ITEM\":\n UpdateChangeLogItemInputSchema().parse(action.input);\n reducer$6.updateChangeLogItemOperation(state.global, action);\n break;\n case \"DELETE_CHANGE_LOG_ITEM\":\n DeleteChangeLogItemInputSchema().parse(action.input);\n reducer$6.deleteChangeLogItemOperation(state.global, action);\n break;\n case \"REORDER_CHANGE_LOG_ITEMS\":\n ReorderChangeLogItemsInputSchema().parse(action.input);\n reducer$6.reorderChangeLogItemsOperation(state.global, action);\n break;\n case \"RELEASE_NEW_VERSION\":\n if (Object.keys(action.input).length > 0)\n throw new Error(\"Expected empty input for action RELEASE_NEW_VERSION\");\n reducer$6.releaseNewVersionOperation(state.global, action);\n break;\n case \"ADD_MODULE\":\n AddModuleInputSchema().parse(action.input);\n reducer$5.addModuleOperation(state.global, action);\n break;\n case \"SET_MODULE_NAME\":\n SetModuleNameInputSchema().parse(action.input);\n reducer$5.setModuleNameOperation(state.global, action);\n break;\n case \"SET_MODULE_DESCRIPTION\":\n SetModuleDescriptionInputSchema().parse(action.input);\n reducer$5.setModuleDescriptionOperation(state.global, action);\n break;\n case \"DELETE_MODULE\":\n DeleteModuleInputSchema().parse(action.input);\n reducer$5.deleteModuleOperation(state.global, action);\n break;\n case \"REORDER_MODULES\":\n ReorderModulesInputSchema().parse(action.input);\n reducer$5.reorderModulesOperation(state.global, action);\n break;\n case \"ADD_OPERATION_ERROR\":\n AddOperationErrorInputSchema().parse(action.input);\n reducer$4.addOperationErrorOperation(state.global, action);\n break;\n case \"SET_OPERATION_ERROR_CODE\":\n SetOperationErrorCodeInputSchema().parse(action.input);\n reducer$4.setOperationErrorCodeOperation(\n state.global,\n action\n );\n break;\n case \"SET_OPERATION_ERROR_NAME\":\n SetOperationErrorNameInputSchema().parse(action.input);\n reducer$4.setOperationErrorNameOperation(\n state.global,\n action\n );\n break;\n case \"SET_OPERATION_ERROR_DESCRIPTION\":\n SetOperationErrorDescriptionInputSchema().parse(action.input);\n reducer$4.setOperationErrorDescriptionOperation(\n state.global,\n action\n );\n break;\n case \"SET_OPERATION_ERROR_TEMPLATE\":\n SetOperationErrorTemplateInputSchema().parse(action.input);\n reducer$4.setOperationErrorTemplateOperation(\n state.global,\n action\n );\n break;\n case \"DELETE_OPERATION_ERROR\":\n DeleteOperationErrorInputSchema().parse(action.input);\n reducer$4.deleteOperationErrorOperation(state.global, action);\n break;\n case \"REORDER_OPERATION_ERRORS\":\n ReorderOperationErrorsInputSchema().parse(action.input);\n reducer$4.reorderOperationErrorsOperation(\n state.global,\n action\n );\n break;\n case \"ADD_OPERATION_EXAMPLE\":\n AddOperationExampleInputSchema().parse(action.input);\n reducer$3.addOperationExampleOperation(\n state.global,\n action\n );\n break;\n case \"UPDATE_OPERATION_EXAMPLE\":\n UpdateOperationExampleInputSchema().parse(action.input);\n reducer$3.updateOperationExampleOperation(\n state.global,\n action\n );\n break;\n case \"DELETE_OPERATION_EXAMPLE\":\n DeleteOperationExampleInputSchema().parse(action.input);\n reducer$3.deleteOperationExampleOperation(\n state.global,\n action\n );\n break;\n case \"REORDER_OPERATION_EXAMPLES\":\n ReorderOperationExamplesInputSchema().parse(action.input);\n reducer$3.reorderOperationExamplesOperation(\n state.global,\n action\n );\n break;\n case \"ADD_OPERATION\":\n AddOperationInputSchema().parse(action.input);\n reducer$2.addOperationOperation(state.global, action);\n break;\n case \"SET_OPERATION_NAME\":\n SetOperationNameInputSchema().parse(action.input);\n reducer$2.setOperationNameOperation(state.global, action);\n break;\n case \"SET_OPERATION_SCOPE\":\n SetOperationScopeInputSchema().parse(action.input);\n reducer$2.setOperationScopeOperation(state.global, action);\n break;\n case \"SET_OPERATION_SCHEMA\":\n SetOperationSchemaInputSchema().parse(action.input);\n reducer$2.setOperationSchemaOperation(state.global, action);\n break;\n case \"SET_OPERATION_DESCRIPTION\":\n SetOperationDescriptionInputSchema().parse(action.input);\n reducer$2.setOperationDescriptionOperation(state.global, action);\n break;\n case \"SET_OPERATION_TEMPLATE\":\n SetOperationTemplateInputSchema().parse(action.input);\n reducer$2.setOperationTemplateOperation(state.global, action);\n break;\n case \"SET_OPERATION_REDUCER\":\n SetOperationReducerInputSchema().parse(action.input);\n reducer$2.setOperationReducerOperation(state.global, action);\n break;\n case \"MOVE_OPERATION\":\n MoveOperationInputSchema().parse(action.input);\n reducer$2.moveOperationOperation(state.global, action);\n break;\n case \"DELETE_OPERATION\":\n DeleteOperationInputSchema().parse(action.input);\n reducer$2.deleteOperationOperation(state.global, action);\n break;\n case \"REORDER_MODULE_OPERATIONS\":\n ReorderModuleOperationsInputSchema().parse(action.input);\n reducer$2.reorderModuleOperationsOperation(state.global, action);\n break;\n case \"SET_STATE_SCHEMA\":\n SetStateSchemaInputSchema().parse(action.input);\n reducer$1.setStateSchemaOperation(state.global, action);\n break;\n case \"SET_INITIAL_STATE\":\n SetInitialStateInputSchema().parse(action.input);\n reducer$1.setInitialStateOperation(state.global, action);\n break;\n case \"ADD_STATE_EXAMPLE\":\n AddStateExampleInputSchema().parse(action.input);\n reducer$1.addStateExampleOperation(state.global, action);\n break;\n case \"UPDATE_STATE_EXAMPLE\":\n UpdateStateExampleInputSchema().parse(action.input);\n reducer$1.updateStateExampleOperation(state.global, action);\n break;\n case \"DELETE_STATE_EXAMPLE\":\n DeleteStateExampleInputSchema().parse(action.input);\n reducer$1.deleteStateExampleOperation(state.global, action);\n break;\n case \"REORDER_STATE_EXAMPLES\":\n ReorderStateExamplesInputSchema().parse(action.input);\n reducer$1.reorderStateExamplesOperation(state.global, action);\n break;\n default:\n return state;\n }\n};\nconst reducer = createReducer(stateReducer);\nconst initialGlobalState = {\n id: \"\",\n name: \"\",\n extension: \"\",\n description: \"\",\n author: {\n name: \"\",\n website: \"\"\n },\n specifications: [\n {\n version: 1,\n changeLog: [],\n state: {\n global: {\n schema: \"\",\n initialValue: \"\",\n examples: []\n },\n local: {\n schema: \"\",\n initialValue: \"\",\n examples: []\n }\n },\n modules: []\n }\n ]\n};\nconst initialLocalState = {};\nconst utils$1 = {\n fileExtension: \"phdm\",\n createState(state) {\n return {\n global: { ...initialGlobalState, ...state == null ? void 0 : state.global },\n local: { ...initialLocalState, ...state == null ? void 0 : state.local }\n };\n },\n createExtendedState(extendedState) {\n return createExtendedState(\n { ...extendedState, documentType: \"powerhouse/document-model\" },\n utils$1.createState\n );\n },\n createDocument(state) {\n return createDocument(\n utils$1.createExtendedState(state),\n utils$1.createState\n );\n },\n saveToFile(document, path, name) {\n return saveToFile(document, path, \"phdm\", name);\n },\n saveToFileHandle(document, input) {\n return saveToFileHandle(document, input);\n },\n loadFromFile(path) {\n return loadFromFile(path, reducer);\n },\n loadFromInput(input) {\n return loadFromInput(input, reducer);\n }\n};\nconst setModelName = (input) => createAction(\"SET_MODEL_NAME\", { ...input });\nconst setModelId = (input) => createAction(\"SET_MODEL_ID\", { ...input });\nconst setModelExtension = (input) => createAction(\"SET_MODEL_EXTENSION\", { ...input });\nconst setModelDescription = (input) => createAction(\"SET_MODEL_DESCRIPTION\", {\n ...input\n});\nconst setAuthorName = (input) => createAction(\"SET_AUTHOR_NAME\", { ...input });\nconst setAuthorWebsite = (input) => createAction(\"SET_AUTHOR_WEBSITE\", { ...input });\nclass DocumentModel_Header extends BaseDocument {\n setModelName(input, options) {\n return this.dispatch(setModelName(input), options);\n }\n setModelId(input, options) {\n return this.dispatch(setModelId(input), options);\n }\n setModelExtension(input, options) {\n return this.dispatch(setModelExtension(input), options);\n }\n setModelDescription(input, options) {\n return this.dispatch(setModelDescription(input), options);\n }\n setAuthorName(input, options) {\n return this.dispatch(setAuthorName(input), options);\n }\n setAuthorWebsite(input, options) {\n return this.dispatch(setAuthorWebsite(input), options);\n }\n}\nconst addChangeLogItem = (input) => createAction(\"ADD_CHANGE_LOG_ITEM\", { ...input });\nconst updateChangeLogItem = (input) => createAction(\"UPDATE_CHANGE_LOG_ITEM\", {\n ...input\n});\nconst deleteChangeLogItem = (input) => createAction(\"DELETE_CHANGE_LOG_ITEM\", {\n ...input\n});\nconst reorderChangeLogItems = (input) => createAction(\"REORDER_CHANGE_LOG_ITEMS\", {\n ...input\n});\nconst releaseNewVersion = () => createAction(\"RELEASE_NEW_VERSION\");\nclass DocumentModel_Versioning extends BaseDocument {\n addChangeLogItem(input, options) {\n return this.dispatch(addChangeLogItem(input), options);\n }\n updateChangeLogItem(input, options) {\n return this.dispatch(updateChangeLogItem(input), options);\n }\n deleteChangeLogItem(input, options) {\n return this.dispatch(deleteChangeLogItem(input), options);\n }\n reorderChangeLogItems(input, options) {\n return this.dispatch(reorderChangeLogItems(input), options);\n }\n releaseNewVersion(options) {\n return this.dispatch(releaseNewVersion(), options);\n }\n}\nconst addModule = (input) => createAction(\"ADD_MODULE\", { ...input });\nconst setModuleName = (input) => createAction(\"SET_MODULE_NAME\", { ...input });\nconst setModuleDescription = (input) => createAction(\"SET_MODULE_DESCRIPTION\", {\n ...input\n});\nconst deleteModule = (input) => createAction(\"DELETE_MODULE\", { ...input });\nconst reorderModules = (input) => createAction(\"REORDER_MODULES\", { ...input });\nclass DocumentModel_Module extends BaseDocument {\n addModule(input, options) {\n return this.dispatch(addModule(input), options);\n }\n setModuleName(input, options) {\n return this.dispatch(setModuleName(input), options);\n }\n setModuleDescription(input, options) {\n return this.dispatch(setModuleDescription(input), options);\n }\n deleteModule(input, options) {\n return this.dispatch(deleteModule(input), options);\n }\n reorderModules(input, options) {\n return this.dispatch(reorderModules(input), options);\n }\n}\nconst addOperationError = (input) => createAction(\"ADD_OPERATION_ERROR\", { ...input });\nconst setOperationErrorCode = (input) => createAction(\"SET_OPERATION_ERROR_CODE\", {\n ...input\n});\nconst setOperationErrorName = (input) => createAction(\"SET_OPERATION_ERROR_NAME\", {\n ...input\n});\nconst setOperationErrorDescription = (input) => createAction(\n \"SET_OPERATION_ERROR_DESCRIPTION\",\n { ...input }\n);\nconst setOperationErrorTemplate = (input) => createAction(\n \"SET_OPERATION_ERROR_TEMPLATE\",\n { ...input }\n);\nconst deleteOperationError = (input) => createAction(\"DELETE_OPERATION_ERROR\", {\n ...input\n});\nconst reorderOperationErrors = (input) => createAction(\"REORDER_OPERATION_ERRORS\", {\n ...input\n});\nclass DocumentModel_OperationError extends BaseDocument {\n addOperationError(input, options) {\n return this.dispatch(addOperationError(input), options);\n }\n setOperationErrorCode(input, options) {\n return this.dispatch(setOperationErrorCode(input), options);\n }\n setOperationErrorName(input, options) {\n return this.dispatch(setOperationErrorName(input), options);\n }\n setOperationErrorDescription(input, options) {\n return this.dispatch(setOperationErrorDescription(input), options);\n }\n setOperationErrorTemplate(input, options) {\n return this.dispatch(setOperationErrorTemplate(input), options);\n }\n deleteOperationError(input, options) {\n return this.dispatch(deleteOperationError(input), options);\n }\n reorderOperationErrors(input, options) {\n return this.dispatch(reorderOperationErrors(input), options);\n }\n}\nconst addOperationExample = (input) => createAction(\"ADD_OPERATION_EXAMPLE\", {\n ...input\n});\nconst updateOperationExample = (input) => createAction(\"UPDATE_OPERATION_EXAMPLE\", {\n ...input\n});\nconst deleteOperationExample = (input) => createAction(\"DELETE_OPERATION_EXAMPLE\", {\n ...input\n});\nconst reorderOperationExamples = (input) => createAction(\"REORDER_OPERATION_EXAMPLES\", {\n ...input\n});\nclass DocumentModel_OperationExample extends BaseDocument {\n addOperationExample(input, options) {\n return this.dispatch(addOperationExample(input), options);\n }\n updateOperationExample(input, options) {\n return this.dispatch(updateOperationExample(input), options);\n }\n deleteOperationExample(input, options) {\n return this.dispatch(deleteOperationExample(input), options);\n }\n reorderOperationExamples(input, options) {\n return this.dispatch(reorderOperationExamples(input), options);\n }\n}\nconst addOperation = (input) => createAction(\"ADD_OPERATION\", { ...input });\nconst setOperationName = (input) => createAction(\"SET_OPERATION_NAME\", { ...input });\nconst setOperationScope = (input) => createAction(\"SET_OPERATION_SCOPE\", { ...input });\nconst setOperationSchema = (input) => createAction(\"SET_OPERATION_SCHEMA\", { ...input });\nconst setOperationDescription = (input) => createAction(\"SET_OPERATION_DESCRIPTION\", {\n ...input\n});\nconst setOperationTemplate = (input) => createAction(\"SET_OPERATION_TEMPLATE\", {\n ...input\n});\nconst setOperationReducer = (input) => createAction(\"SET_OPERATION_REDUCER\", {\n ...input\n});\nconst moveOperation = (input) => createAction(\"MOVE_OPERATION\", { ...input });\nconst deleteOperation = (input) => createAction(\"DELETE_OPERATION\", { ...input });\nconst reorderModuleOperations = (input) => createAction(\"REORDER_MODULE_OPERATIONS\", {\n ...input\n});\nclass DocumentModel_Operation extends BaseDocument {\n addOperation(input, options) {\n return this.dispatch(addOperation(input), options);\n }\n setOperationName(input, options) {\n return this.dispatch(setOperationName(input), options);\n }\n setOperationScope(input, options) {\n return this.dispatch(setOperationScope(input), options);\n }\n setOperationSchema(input, options) {\n return this.dispatch(setOperationSchema(input), options);\n }\n setOperationDescription(input, options) {\n return this.dispatch(setOperationDescription(input), options);\n }\n setOperationTemplate(input, options) {\n return this.dispatch(setOperationTemplate(input), options);\n }\n setOperationReducer(input, options) {\n return this.dispatch(setOperationReducer(input), options);\n }\n moveOperation(input, options) {\n return this.dispatch(moveOperation(input), options);\n }\n deleteOperation(input, options) {\n return this.dispatch(deleteOperation(input), options);\n }\n reorderModuleOperations(input, options) {\n return this.dispatch(reorderModuleOperations(input), options);\n }\n}\nconst setStateSchema = (input) => createAction(\"SET_STATE_SCHEMA\", { ...input });\nconst setInitialState = (input) => createAction(\"SET_INITIAL_STATE\", { ...input });\nconst addStateExample = (input) => createAction(\"ADD_STATE_EXAMPLE\", { ...input });\nconst updateStateExample = (input) => createAction(\"UPDATE_STATE_EXAMPLE\", { ...input });\nconst deleteStateExample = (input) => createAction(\"DELETE_STATE_EXAMPLE\", { ...input });\nconst reorderStateExamples = (input) => createAction(\"REORDER_STATE_EXAMPLES\", {\n ...input\n});\nclass DocumentModel_State extends BaseDocument {\n setStateSchema(input, options) {\n return this.dispatch(setStateSchema(input), options);\n }\n setInitialState(input, options) {\n return this.dispatch(setInitialState(input), options);\n }\n addStateExample(input, options) {\n return this.dispatch(addStateExample(input), options);\n }\n updateStateExample(input, options) {\n return this.dispatch(updateStateExample(input), options);\n }\n deleteStateExample(input, options) {\n return this.dispatch(deleteStateExample(input), options);\n }\n reorderStateExamples(input, options) {\n return this.dispatch(reorderStateExamples(input), options);\n }\n}\nlet DocumentModel$1 = (_a = class extends BaseDocument {\n constructor(initialState, dispatch) {\n super(reducer, utils$1.createDocument(initialState), dispatch);\n }\n saveToFile(path, name) {\n return super.saveToFile(path, _a.fileExtension, name);\n }\n loadFromFile(path) {\n return super.loadFromFile(path);\n }\n static async fromFile(path) {\n const document = new this();\n await document.loadFromFile(path);\n return document;\n }\n}, __publicField(_a, \"fileExtension\", \"phdm\"), _a);\napplyMixins(DocumentModel$1, [\n DocumentModel_Header,\n DocumentModel_Versioning,\n DocumentModel_Module,\n DocumentModel_OperationError,\n DocumentModel_OperationExample,\n DocumentModel_Operation,\n DocumentModel_State\n]);\nconst DocumentModelActions = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addChangeLogItem,\n addModule,\n addOperation,\n addOperationError,\n addOperationExample,\n addStateExample,\n deleteChangeLogItem,\n deleteModule,\n deleteOperation,\n deleteOperationError,\n deleteOperationExample,\n deleteStateExample,\n moveOperation,\n releaseNewVersion,\n reorderChangeLogItems,\n reorderModuleOperations,\n reorderModules,\n reorderOperationErrors,\n reorderOperationExamples,\n reorderStateExamples,\n setAuthorName,\n setAuthorWebsite,\n setInitialState,\n setModelDescription,\n setModelExtension,\n setModelId,\n setModelName,\n setModuleDescription,\n setModuleName,\n setOperationDescription,\n setOperationErrorCode,\n setOperationErrorDescription,\n setOperationErrorName,\n setOperationErrorTemplate,\n setOperationName,\n setOperationReducer,\n setOperationSchema,\n setOperationScope,\n setOperationTemplate,\n setStateSchema,\n updateChangeLogItem,\n updateOperationExample,\n updateStateExample\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst Document = DocumentModel$1;\nconst utils = { ...utils$1, ...customUtils };\nconst actions = { ...BaseActions, ...DocumentModelActions };\nconst module = {\n Document,\n reducer,\n actions,\n utils,\n documentModel\n};\nconst DocumentModel = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Document,\n DocumentModel: DocumentModel$1,\n actions,\n documentModel,\n module,\n reducer,\n utils,\n validateInitialState,\n validateModule,\n validateModuleOperation,\n validateModules,\n validateStateSchemaName,\n z: zod\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n DocumentModel as D,\n DocumentModel$1 as a,\n Document as b,\n actions as c,\n documentModel as d,\n validateStateSchemaName as e,\n validateModules as f,\n validateModule as g,\n validateModuleOperation as h,\n module as m,\n reducer as r,\n utils as u,\n validateInitialState as v,\n zod as z\n};\n//# sourceMappingURL=index-HlkIVQZ6.js.map\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 useNodeNavigation();\n const { showModal } = useModal();\n const preloadEditor = usePreloadEditor();\n\n // preload document editors\n useEffect(() => {\n if (!documentModels) return;\n\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-DFQJzB7I.js"}
|