@dxos/plugin-space 0.8.0 → 0.8.1-main.013e445

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/lib/browser/{app-graph-builder-MGK5HWPZ.mjs → app-graph-builder-7NG7UNQD.mjs} +5 -5
  2. package/dist/lib/browser/{app-graph-serializer-FOWFLYGU.mjs → app-graph-serializer-OZNRXG62.mjs} +7 -7
  3. package/dist/lib/browser/{app-graph-serializer-FOWFLYGU.mjs.map → app-graph-serializer-OZNRXG62.mjs.map} +2 -2
  4. package/dist/lib/browser/{chunk-23RVI5FZ.mjs → chunk-KV4JWY3Z.mjs} +9 -8
  5. package/dist/lib/browser/{chunk-23RVI5FZ.mjs.map → chunk-KV4JWY3Z.mjs.map} +3 -3
  6. package/dist/lib/browser/{chunk-NU7WDVGN.mjs → chunk-O7LODPTY.mjs} +2 -2
  7. package/dist/lib/browser/{chunk-PCEP3KQY.mjs → chunk-PE2T7DOU.mjs} +22 -21
  8. package/dist/lib/browser/chunk-PE2T7DOU.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-PQXZCNAU.mjs → chunk-PTKYMZWO.mjs} +1 -1
  10. package/dist/lib/browser/chunk-PTKYMZWO.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-ULA2UQJ4.mjs → chunk-TYU27VTL.mjs} +6 -62
  12. package/dist/lib/browser/chunk-TYU27VTL.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-UDWHTKB5.mjs → chunk-VIU4XFXR.mjs} +6 -8
  14. package/dist/lib/browser/chunk-VIU4XFXR.mjs.map +7 -0
  15. package/dist/lib/browser/{identity-created-FYGS6TBH.mjs → identity-created-TG52G7RV.mjs} +3 -3
  16. package/dist/lib/browser/index.mjs +13 -13
  17. package/dist/lib/browser/index.mjs.map +3 -3
  18. package/dist/lib/browser/{intent-resolver-GPNAQ2SG.mjs → intent-resolver-XAEHWUHJ.mjs} +11 -9
  19. package/dist/lib/browser/{intent-resolver-GPNAQ2SG.mjs.map → intent-resolver-XAEHWUHJ.mjs.map} +3 -3
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{react-root-4CCSD7TZ.mjs → react-root-H5WH6EUY.mjs} +6 -6
  22. package/dist/lib/browser/{react-surface-FKMRI3WV.mjs → react-surface-523S3CFL.mjs} +9 -8
  23. package/dist/lib/browser/react-surface-523S3CFL.mjs.map +7 -0
  24. package/dist/lib/browser/{schema-5W3DSY2E.mjs → schema-UOCBWGA4.mjs} +3 -3
  25. package/dist/lib/browser/schema-tools-6J5ZEDBC.mjs +123 -0
  26. package/dist/lib/browser/schema-tools-6J5ZEDBC.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-PHPCXX33.mjs → settings-XCHJUNYL.mjs} +3 -3
  28. package/dist/lib/browser/{spaces-ready-K47RR7N2.mjs → spaces-ready-VVPJN6TU.mjs} +5 -5
  29. package/dist/lib/browser/{state-INJ63O57.mjs → state-BUM7SQUV.mjs} +3 -3
  30. package/dist/lib/browser/types/index.mjs +2 -10
  31. package/dist/lib/node/{app-graph-builder-ZIUBXRPA.cjs → app-graph-builder-G3O5GZMQ.cjs} +45 -45
  32. package/dist/lib/node/{app-graph-serializer-VQOGHKXL.cjs → app-graph-serializer-774VMAFT.cjs} +21 -21
  33. package/dist/lib/node/{app-graph-serializer-VQOGHKXL.cjs.map → app-graph-serializer-774VMAFT.cjs.map} +2 -2
  34. package/dist/lib/node/{chunk-WAJKBO3J.cjs → chunk-37QRDFMQ.cjs} +10 -70
  35. package/dist/lib/node/chunk-37QRDFMQ.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-U6DYXAR3.cjs → chunk-5MWD635N.cjs} +11 -13
  37. package/dist/lib/node/chunk-5MWD635N.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-WZR6OAN3.cjs → chunk-6P2DB4QQ.cjs} +4 -4
  39. package/dist/lib/node/{chunk-WZR6OAN3.cjs.map → chunk-6P2DB4QQ.cjs.map} +2 -2
  40. package/dist/lib/node/{chunk-OVGKWJOC.cjs → chunk-7BN5N2ND.cjs} +60 -59
  41. package/dist/lib/node/{chunk-OVGKWJOC.cjs.map → chunk-7BN5N2ND.cjs.map} +3 -3
  42. package/dist/lib/node/{chunk-QE4GVR6C.cjs → chunk-BN5K3SRF.cjs} +83 -80
  43. package/dist/lib/node/chunk-BN5K3SRF.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-YZKNRFHU.cjs → chunk-GRM6AGWI.cjs} +10 -10
  45. package/dist/lib/node/{identity-created-AXI64BLE.cjs → identity-created-AQCHGXOF.cjs} +7 -7
  46. package/dist/lib/node/index.cjs +96 -97
  47. package/dist/lib/node/index.cjs.map +3 -3
  48. package/dist/lib/node/{intent-resolver-ICHHI6I6.cjs → intent-resolver-7DUDOPMC.cjs} +71 -69
  49. package/dist/lib/node/{intent-resolver-ICHHI6I6.cjs.map → intent-resolver-7DUDOPMC.cjs.map} +3 -3
  50. package/dist/lib/node/meta.json +1 -1
  51. package/dist/lib/node/{react-root-TCBTUOOJ.cjs → react-root-HCFNELCK.cjs} +12 -12
  52. package/dist/lib/node/{react-surface-JSCCIZS5.cjs → react-surface-VIGVLED7.cjs} +62 -61
  53. package/dist/lib/node/react-surface-VIGVLED7.cjs.map +7 -0
  54. package/dist/lib/node/{schema-YN7WVFRX.cjs → schema-EERAOETL.cjs} +7 -7
  55. package/dist/lib/node/schema-tools-OZS4OC6X.cjs +146 -0
  56. package/dist/lib/node/schema-tools-OZS4OC6X.cjs.map +7 -0
  57. package/dist/lib/node/{settings-5QYFWNH7.cjs → settings-VPFJWIWP.cjs} +8 -8
  58. package/dist/lib/node/{spaces-ready-FQNAKR7G.cjs → spaces-ready-BDKHLPYB.cjs} +14 -14
  59. package/dist/lib/node/{state-57UE3DYE.cjs → state-AIETH3DE.cjs} +8 -8
  60. package/dist/lib/node/types/index.cjs +13 -21
  61. package/dist/lib/node/types/index.cjs.map +2 -2
  62. package/dist/lib/node-esm/{app-graph-builder-TERVM2SL.mjs → app-graph-builder-LJAESOIB.mjs} +5 -5
  63. package/dist/lib/node-esm/{app-graph-serializer-GZRSWHEN.mjs → app-graph-serializer-YATEFHDI.mjs} +7 -7
  64. package/dist/lib/node-esm/{app-graph-serializer-GZRSWHEN.mjs.map → app-graph-serializer-YATEFHDI.mjs.map} +2 -2
  65. package/dist/lib/node-esm/{chunk-6RSVVEPS.mjs → chunk-AJ4IZAKT.mjs} +2 -2
  66. package/dist/lib/node-esm/{chunk-HJCEJNW3.mjs → chunk-G6EUAPVP.mjs} +22 -21
  67. package/dist/lib/node-esm/chunk-G6EUAPVP.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-TRNZQEEN.mjs → chunk-KNJZGST5.mjs} +6 -62
  69. package/dist/lib/node-esm/chunk-KNJZGST5.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-ICCM4YRJ.mjs → chunk-MSWEFAPD.mjs} +1 -1
  71. package/dist/lib/node-esm/chunk-MSWEFAPD.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-2TQ2AJEZ.mjs → chunk-TTHJ55CE.mjs} +6 -8
  73. package/dist/lib/node-esm/chunk-TTHJ55CE.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-PGH5L7MV.mjs → chunk-XRC7NH6E.mjs} +9 -8
  75. package/dist/lib/node-esm/{chunk-PGH5L7MV.mjs.map → chunk-XRC7NH6E.mjs.map} +3 -3
  76. package/dist/lib/node-esm/{identity-created-3CGEXNPO.mjs → identity-created-CK3VMR6Q.mjs} +3 -3
  77. package/dist/lib/node-esm/index.mjs +13 -13
  78. package/dist/lib/node-esm/index.mjs.map +3 -3
  79. package/dist/lib/node-esm/{intent-resolver-VR42K5GE.mjs → intent-resolver-7MLSVU7R.mjs} +11 -9
  80. package/dist/lib/node-esm/{intent-resolver-VR42K5GE.mjs.map → intent-resolver-7MLSVU7R.mjs.map} +3 -3
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/{react-root-THJBSTQS.mjs → react-root-PLKZW44B.mjs} +6 -6
  83. package/dist/lib/node-esm/{react-surface-Z3BBQ5HX.mjs → react-surface-DTT3ZJVO.mjs} +9 -8
  84. package/dist/lib/node-esm/react-surface-DTT3ZJVO.mjs.map +7 -0
  85. package/dist/lib/node-esm/{schema-LOR2EVGY.mjs → schema-LOOOBN6J.mjs} +3 -3
  86. package/dist/lib/node-esm/schema-tools-KJVXGDBO.mjs +125 -0
  87. package/dist/lib/node-esm/schema-tools-KJVXGDBO.mjs.map +7 -0
  88. package/dist/lib/node-esm/{settings-H6MXTEQM.mjs → settings-2VSJTVUW.mjs} +3 -3
  89. package/dist/lib/node-esm/{spaces-ready-HKAQG5SA.mjs → spaces-ready-7ROQ7PRB.mjs} +5 -5
  90. package/dist/lib/node-esm/{state-VYA6OFHD.mjs → state-DWUAP6MH.mjs} +3 -3
  91. package/dist/lib/node-esm/types/index.mjs +2 -10
  92. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/index.d.ts +1 -0
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/schema-tool.test.d.ts +2 -0
  99. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/schema-tools.d.ts +13 -0
  101. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -0
  102. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +2 -1
  103. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  104. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +2 -1
  105. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
  106. package/dist/types/src/components/AwaitingObject.d.ts +2 -1
  107. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  108. package/dist/types/src/components/BaseObjectSettings.d.ts +2 -1
  109. package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
  110. package/dist/types/src/components/CollectionMain.d.ts +2 -1
  111. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  112. package/dist/types/src/components/CollectionSection.d.ts +2 -1
  113. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  114. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -1
  115. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +2 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  118. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +2 -1
  119. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  120. package/dist/types/src/components/JoinDialog.d.ts +2 -1
  121. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  122. package/dist/types/src/components/MenuFooter.d.ts +2 -1
  123. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  124. package/dist/types/src/components/PersistenceStatus.d.ts +2 -1
  125. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  126. package/dist/types/src/components/PopoverAddSpace.d.ts +2 -1
  127. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -1
  128. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -1
  129. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  130. package/dist/types/src/components/PopoverRenameSpace.d.ts +2 -1
  131. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  132. package/dist/types/src/components/ShareSpaceButton.d.ts +3 -2
  133. package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
  134. package/dist/types/src/components/SpacePluginSettings.d.ts +2 -1
  135. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  136. package/dist/types/src/components/SpacePresence.d.ts +5 -4
  137. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  138. package/dist/types/src/components/SpacePresence.stories.d.ts +3 -2
  139. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +2 -1
  141. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
  142. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +2 -1
  143. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
  144. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +2 -1
  145. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  146. package/dist/types/src/components/SyncStatus/Space.d.ts +3 -2
  147. package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
  148. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +4 -3
  149. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  150. package/dist/types/src/meta.d.ts +2 -5
  151. package/dist/types/src/meta.d.ts.map +1 -1
  152. package/dist/types/src/translations.d.ts +5 -12
  153. package/dist/types/src/translations.d.ts.map +1 -1
  154. package/dist/types/src/types/thread.d.ts +177 -174
  155. package/dist/types/src/types/thread.d.ts.map +1 -1
  156. package/dist/types/src/types/types.d.ts +2 -0
  157. package/dist/types/src/types/types.d.ts.map +1 -1
  158. package/dist/types/src/util.d.ts.map +1 -1
  159. package/package.json +43 -41
  160. package/src/SpacePlugin.tsx +6 -1
  161. package/src/capabilities/app-graph-serializer.ts +2 -2
  162. package/src/capabilities/index.ts +1 -0
  163. package/src/capabilities/intent-resolver.ts +3 -1
  164. package/src/capabilities/react-surface.tsx +3 -2
  165. package/src/capabilities/schema-tool.test.ts +45 -0
  166. package/src/capabilities/schema-tools.ts +124 -0
  167. package/src/components/BaseObjectSettings.tsx +3 -1
  168. package/src/components/CreateDialog/CreateObjectDialog.tsx +3 -6
  169. package/src/components/PopoverRenameObject.tsx +1 -1
  170. package/src/meta.ts +2 -2
  171. package/src/translations.ts +2 -4
  172. package/src/types/thread.ts +2 -56
  173. package/src/types/types.ts +3 -0
  174. package/src/util.tsx +1 -2
  175. package/dist/lib/browser/chunk-PCEP3KQY.mjs.map +0 -7
  176. package/dist/lib/browser/chunk-PQXZCNAU.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +0 -7
  178. package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +0 -7
  179. package/dist/lib/browser/react-surface-FKMRI3WV.mjs.map +0 -7
  180. package/dist/lib/node/chunk-QE4GVR6C.cjs.map +0 -7
  181. package/dist/lib/node/chunk-U6DYXAR3.cjs.map +0 -7
  182. package/dist/lib/node/chunk-WAJKBO3J.cjs.map +0 -7
  183. package/dist/lib/node/react-surface-JSCCIZS5.cjs.map +0 -7
  184. package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +0 -7
  185. package/dist/lib/node-esm/chunk-HJCEJNW3.mjs.map +0 -7
  186. package/dist/lib/node-esm/chunk-ICCM4YRJ.mjs.map +0 -7
  187. package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +0 -7
  188. package/dist/lib/node-esm/react-surface-Z3BBQ5HX.mjs.map +0 -7
  189. /package/dist/lib/browser/{app-graph-builder-MGK5HWPZ.mjs.map → app-graph-builder-7NG7UNQD.mjs.map} +0 -0
  190. /package/dist/lib/browser/{chunk-NU7WDVGN.mjs.map → chunk-O7LODPTY.mjs.map} +0 -0
  191. /package/dist/lib/browser/{identity-created-FYGS6TBH.mjs.map → identity-created-TG52G7RV.mjs.map} +0 -0
  192. /package/dist/lib/browser/{react-root-4CCSD7TZ.mjs.map → react-root-H5WH6EUY.mjs.map} +0 -0
  193. /package/dist/lib/browser/{schema-5W3DSY2E.mjs.map → schema-UOCBWGA4.mjs.map} +0 -0
  194. /package/dist/lib/browser/{settings-PHPCXX33.mjs.map → settings-XCHJUNYL.mjs.map} +0 -0
  195. /package/dist/lib/browser/{spaces-ready-K47RR7N2.mjs.map → spaces-ready-VVPJN6TU.mjs.map} +0 -0
  196. /package/dist/lib/browser/{state-INJ63O57.mjs.map → state-BUM7SQUV.mjs.map} +0 -0
  197. /package/dist/lib/node/{app-graph-builder-ZIUBXRPA.cjs.map → app-graph-builder-G3O5GZMQ.cjs.map} +0 -0
  198. /package/dist/lib/node/{chunk-YZKNRFHU.cjs.map → chunk-GRM6AGWI.cjs.map} +0 -0
  199. /package/dist/lib/node/{identity-created-AXI64BLE.cjs.map → identity-created-AQCHGXOF.cjs.map} +0 -0
  200. /package/dist/lib/node/{react-root-TCBTUOOJ.cjs.map → react-root-HCFNELCK.cjs.map} +0 -0
  201. /package/dist/lib/node/{schema-YN7WVFRX.cjs.map → schema-EERAOETL.cjs.map} +0 -0
  202. /package/dist/lib/node/{settings-5QYFWNH7.cjs.map → settings-VPFJWIWP.cjs.map} +0 -0
  203. /package/dist/lib/node/{spaces-ready-FQNAKR7G.cjs.map → spaces-ready-BDKHLPYB.cjs.map} +0 -0
  204. /package/dist/lib/node/{state-57UE3DYE.cjs.map → state-AIETH3DE.cjs.map} +0 -0
  205. /package/dist/lib/node-esm/{app-graph-builder-TERVM2SL.mjs.map → app-graph-builder-LJAESOIB.mjs.map} +0 -0
  206. /package/dist/lib/node-esm/{chunk-6RSVVEPS.mjs.map → chunk-AJ4IZAKT.mjs.map} +0 -0
  207. /package/dist/lib/node-esm/{identity-created-3CGEXNPO.mjs.map → identity-created-CK3VMR6Q.mjs.map} +0 -0
  208. /package/dist/lib/node-esm/{react-root-THJBSTQS.mjs.map → react-root-PLKZW44B.mjs.map} +0 -0
  209. /package/dist/lib/node-esm/{schema-LOR2EVGY.mjs.map → schema-LOOOBN6J.mjs.map} +0 -0
  210. /package/dist/lib/node-esm/{settings-H6MXTEQM.mjs.map → settings-2VSJTVUW.mjs.map} +0 -0
  211. /package/dist/lib/node-esm/{spaces-ready-HKAQG5SA.mjs.map → spaces-ready-7ROQ7PRB.mjs.map} +0 -0
  212. /package/dist/lib/node-esm/{state-VYA6OFHD.mjs.map → state-DWUAP6MH.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/AdvancedObjectSettings/AdvancedObjectSettings.tsx", "../../../src/components/AdvancedObjectSettings/ForeignKeys.tsx", "../../../src/components/AwaitingObject.tsx", "../../../src/components/BaseObjectSettings.tsx", "../../../src/components/CreateDialog/CreateObjectDialog.tsx", "../../../src/components/CreateDialog/CreateObjectPanel.tsx", "../../../src/capabilities/index.ts", "../../../src/components/CreateDialog/CreateSpaceDialog.tsx", "../../../src/components/CollectionMain.tsx", "../../../src/components/CollectionSection.tsx", "../../../src/components/JoinDialog.tsx", "../../../src/components/MenuFooter.tsx", "../../../src/components/PersistenceStatus.tsx", "../../../src/components/PopoverAddSpace.tsx", "../../../src/components/PopoverRenameObject.tsx", "../../../src/components/PopoverRenameSpace.tsx", "../../../src/components/ShareSpaceButton.tsx", "../../../src/components/SpacePresence.tsx", "../../../src/hooks/usePath.ts", "../../../src/components/SpacePluginSettings.tsx", "../../../src/components/SpaceSettings/SpaceSettingsPanel.tsx", "../../../src/components/SpaceSettings/SpaceSettingsDialog.tsx", "../../../src/components/SyncStatus/InlineSyncStatus.tsx", "../../../src/components/SyncStatus/sync-state.ts", "../../../src/components/SyncStatus/SyncStatus.tsx", "../../../src/components/SyncStatus/Space.tsx", "../../../src/components/SyncStatus/save-tracker.ts", "../../../src/components/SyncStatus/status.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { type ForeignKey, ForeignKeySchema } from '@dxos/echo-schema';\nimport { getMeta, type ReactiveEchoObject } from '@dxos/react-client/echo';\nimport { IconButton, useTranslation, Separator } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { ForeignKeys } from './ForeignKeys';\nimport { SPACE_PLUGIN } from '../../meta';\n\nconst initialValues = {\n source: '',\n id: '',\n};\n\nexport type AdvancedObjectSettingsProps = {\n object: ReactiveEchoObject<any>;\n};\n\nexport const AdvancedObjectSettings = ({ object }: AdvancedObjectSettingsProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const [adding, setAdding] = useState(false);\n const keys = getMeta(object).keys;\n\n const handleNew = useCallback(() => setAdding(true), []);\n const handleCancel = useCallback(() => setAdding(false), []);\n const handleSave = useCallback(\n (key: ForeignKey) => {\n const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);\n if (index === -1) {\n keys.push(key);\n }\n setAdding(false);\n },\n [keys],\n );\n const handleDelete = useCallback(\n (key: ForeignKey) => {\n const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);\n if (index !== -1) {\n keys.splice(index, 1);\n }\n },\n [keys],\n );\n\n // TODO(wittjosiah): This should be wrapped in an \"Advanced\" accordion.\n return (\n <>\n <Separator />\n <div className='p-2 flex flex-col gap-4'>\n <h2>{t('advanced settings label')}</h2>\n <div className='flex items-center'>\n <h3 className='text-sm font-semibold'>{t('foreign keys')}</h3>\n <div className='grow' />\n <IconButton\n classNames={adding && 'invisible'}\n icon='ph--plus--regular'\n label={t('add key')}\n onClick={handleNew}\n />\n </div>\n {!adding && <ForeignKeys keys={keys} onDelete={handleDelete} />}\n </div>\n {adding && <Form schema={ForeignKeySchema} values={initialValues} onSave={handleSave} onCancel={handleCancel} />}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type ForeignKey } from '@dxos/echo-schema';\nimport { IconButton, List, ListItem, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../../meta';\n\nexport type ForeignKeysProps = {\n keys: ForeignKey[];\n onDelete?: (key: ForeignKey) => void;\n};\n\n// TODO(wittjosiah): This is a clone of `TokenManager`. Consider a form variant for arrays of read-only objects.\nexport const ForeignKeys = ({ keys, onDelete }: ForeignKeysProps) => {\n return (\n <List classNames='flex flex-col gap-2'>\n {keys.map((key) => (\n <KeyItem key={key.id} forignKey={key} onDelete={onDelete} />\n ))}\n </List>\n );\n};\n\ntype KeyItemProps = {\n forignKey: ForeignKey;\n onDelete?: (key: ForeignKey) => void;\n};\n\nconst KeyItem = ({ forignKey, onDelete }: KeyItemProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n const handleDelete = useCallback(() => {\n onDelete?.(forignKey);\n }, [forignKey, onDelete]);\n\n return (\n <ListItem.Root classNames='px-2'>\n <ListItem.Heading classNames='flex flex-col grow truncate'>\n <div>{forignKey.source}</div>\n <div className='text-description text-sm truncate'>{forignKey.id}</div>\n </ListItem.Heading>\n <ListItem.Endcap>\n <IconButton iconOnly icon='ph--x--regular' variant='ghost' label={t('delete key')} onClick={handleDelete} />\n </ListItem.Endcap>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CheckCircle, CircleDashed, CircleNotch } from '@phosphor-icons/react';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher, useLayout } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, fullyQualifiedId, useQuery } from '@dxos/react-client/echo';\nimport { Button, Toast, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { SpaceAction } from '../types';\n\nconst WAIT_FOR_OBJECT_TIMEOUT = 180e3; // 3 minutes\nconst TOAST_TIMEOUT = 240e3; // 4 minutes\n\nexport const AwaitingObject = ({ id }: { id: string }) => {\n const [open, setOpen] = useState(true);\n const [waiting, setWaiting] = useState(true);\n const [found, setFound] = useState(false);\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const layout = useLayout();\n\n const client = useClient();\n const objects = useQuery(client.spaces, Filter.all());\n\n useEffect(() => {\n if (!id) {\n return;\n }\n\n const timeout = setTimeout(() => {\n setWaiting(false);\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n () => clearTimeout(timeout);\n }, [id]);\n\n useEffect(() => {\n if (objects.findIndex((object) => fullyQualifiedId(object) === id) > -1) {\n setFound(true);\n\n if (layout.active.includes(id)) {\n setOpen(false);\n }\n }\n }, [id, objects, layout]);\n\n const handleClose = useCallback(\n async () => dispatch(createIntent(SpaceAction.WaitForObject, { id: undefined })),\n [dispatch],\n );\n\n const handleNavigate = useCallback(() => {\n void dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [id] }));\n void handleClose();\n }, [id, handleClose, dispatch]);\n\n return (\n <Toast.Root open={open} duration={TOAST_TIMEOUT} onOpenChange={setOpen}>\n <Toast.Body>\n <Toast.Title classNames='flex items-center gap-2'>\n {found ? (\n <>\n <CheckCircle className={getSize(5)} />\n <span>{t('found object label')}</span>\n </>\n ) : waiting ? (\n <>\n <CircleNotch className={mx(getSize(5), 'animate-spin')} />\n <span>{t('waiting for object label')}</span>\n </>\n ) : (\n <>\n <CircleDashed className={getSize(5)} />\n <span>{t('object not found label')}</span>\n </>\n )}\n </Toast.Title>\n <Toast.Description>\n {t(\n found\n ? 'found object description'\n : waiting\n ? 'waiting for object description'\n : 'object not found description',\n )}\n </Toast.Description>\n </Toast.Body>\n <Toast.Actions>\n {found ? (\n <>\n <Toast.Action altText={t('go to object alt')} asChild>\n <Button variant='primary' onClick={handleNavigate}>\n {t('go to object label')}\n </Button>\n </Toast.Action>\n <Toast.Close asChild>\n <Button onClick={handleClose}>{t('close label', { ns: 'appkit' })}</Button>\n </Toast.Close>\n </>\n ) : (\n <Toast.Close asChild>\n <Button onClick={handleClose}>{t(waiting ? 'close label' : 'confirm label', { ns: 'appkit' })}</Button>\n </Toast.Close>\n )}\n </Toast.Actions>\n </Toast.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ReactiveEchoObject } from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport type BaseObjectSettingsProps = {\n object: ReactiveEchoObject<any>;\n};\n\nexport const BaseObjectSettings = ({ object }: BaseObjectSettingsProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const inputRef = React.useRef<HTMLInputElement>(null);\n // TODO(burdon): Standardize forms.\n return (\n <div role='form' className='flex flex-col w-full p-2 gap-1'>\n <Input.Root>\n <Input.Label>{t('name label')}</Input.Label>\n <Input.TextInput\n ref={inputRef}\n placeholder={t('name placeholder')}\n value={object.name ?? ''}\n onChange={(event) => {\n object.name = event.target.value;\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n inputRef.current?.blur();\n }\n }}\n />\n </Input.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { pipe } from 'effect';\nimport React, { useCallback, useRef } from 'react';\n\nimport {\n Capabilities,\n chain,\n createIntent,\n LayoutAction,\n useCapabilities,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, isReactiveObject, isSpace, type ReactiveObject, useSpaces } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\n\nimport { CreateObjectPanel, type CreateObjectPanelProps } from './CreateObjectPanel';\nimport { SpaceCapabilities } from '../../capabilities';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { CollectionType, type ObjectForm, SpaceAction } from '../../types';\n\nexport const CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'name'> & {\n shouldNavigate?: (object: ReactiveObject<any>) => boolean;\n};\n\nexport const CreateObjectDialog = ({\n target,\n typename,\n name,\n shouldNavigate: _shouldNavigate,\n}: CreateObjectDialogProps) => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const manager = usePluginManager();\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const spaces = useSpaces();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const forms = useCapabilities(SpaceCapabilities.ObjectForm);\n\n const resolve = useCallback(\n (typename: string) =>\n manager.context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const handleCreateObject = useCallback(\n async ({\n form,\n target: _target,\n data = {},\n }: {\n form: ObjectForm;\n target: CreateObjectPanelProps['target'];\n data?: Record<string, any>;\n }) => {\n const target = isSpace(_target)\n ? (_target.properties[CollectionType.typename]?.target as CollectionType | undefined)\n : _target;\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const space = isSpace(target) ? target : getSpace(target);\n invariant(space, 'Missing space');\n const result = await dispatch(form.getIntent(data, { space }));\n const object = result.data?.object;\n if (isReactiveObject(object)) {\n const addObjectIntent = createIntent(SpaceAction.AddObject, { target, object });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (shouldNavigate(object)) {\n await dispatch(pipe(addObjectIntent, chain(LayoutAction.Open, { part: 'main' })));\n } else {\n await dispatch(addObjectIntent);\n }\n }\n },\n [dispatch, resolve],\n );\n\n return (\n // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.\n // Consider factoring it out to the tabs package.\n <Dialog.Content classNames='p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden'>\n <div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>\n <Dialog.Title>{t('create object dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button ref={closeRef} density='fine' variant='ghost' autoFocus>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n\n <CreateObjectPanel\n classNames='p-4'\n forms={forms}\n spaces={spaces}\n target={target}\n typename={typename}\n name={name}\n defaultSpaceId={client.spaces.default.id}\n resolve={resolve}\n onCreateObject={handleCreateObject}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { Surface, isSurfaceAvailable, usePluginManager } from '@dxos/app-framework';\nimport { getObjectAnnotation, type ObjectAnnotation, type S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId, type Space } from '@dxos/react-client/echo';\nimport { Icon, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Form, type InputProps } from '@dxos/react-ui-form';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable, type MaybePromise } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../../meta';\nimport { type ObjectForm, type CollectionType } from '../../types';\nimport { getSpaceDisplayName } from '../../util';\n\n// TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.\n/**\n * Creates a surface input component based on plugin context.\n * @param baseData Additional data that will be merged with form data and passed to the surface.\n * This allows providing more context to the surface than what's available from the form itself.\n */\nconst useInputSurfaceLookup = (baseData?: Record<string, any>) => {\n const pluginManager = usePluginManager();\n\n return useCallback(\n ({ prop, schema, inputProps }: { prop: string; schema: S.Schema<any>; inputProps: InputProps }) => {\n const composedData = { prop, schema, ...baseData };\n if (!isSurfaceAvailable(pluginManager.context, { role: 'form-input', data: composedData })) {\n return undefined;\n }\n\n return <Surface role='form-input' data={composedData} {...inputProps} />;\n },\n [pluginManager, baseData],\n );\n};\n\nexport type CreateObjectPanelProps = ThemedClassName<{\n forms: ObjectForm[];\n spaces: Space[];\n typename?: string;\n target?: Space | CollectionType;\n name?: string;\n defaultSpaceId?: SpaceId;\n resolve?: (typename: string) => Record<string, any>;\n onCreateObject?: (params: {\n form: ObjectForm;\n target: Space | CollectionType;\n data?: Record<string, any>;\n }) => MaybePromise<void>;\n}>;\n\nexport const CreateObjectPanel = ({\n classNames,\n forms,\n spaces,\n typename: initialTypename,\n target: initialTarget,\n name: initialName,\n defaultSpaceId,\n resolve,\n onCreateObject,\n}: CreateObjectPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const [target, setTarget] = useState<Space | CollectionType | undefined>(initialTarget);\n const form = forms.find((form) => getObjectAnnotation(form.objectSchema)?.typename === typename);\n const options: ObjectAnnotation[] = forms\n .map((form) => getObjectAnnotation(form.objectSchema))\n .filter(isNonNullable)\n .sort((a, b) => {\n const nameA = t('typename label', { ns: a.typename, defaultValue: a.typename });\n const nameB = t('typename label', { ns: b.typename, defaultValue: b.typename });\n return nameA.localeCompare(nameB);\n });\n\n const handleCreateObject = useCallback(\n async (props: Record<string, any>) => {\n if (!form || !target) {\n return;\n }\n await onCreateObject?.({ form, target, data: props });\n },\n [onCreateObject, form, target],\n );\n\n const handleSetTypename = useCallback(\n async (typename: string) => {\n invariant(target, 'target is required');\n const form = forms.find((form) => getObjectAnnotation(form.objectSchema)?.typename === typename);\n if (form && !form.formSchema) {\n await onCreateObject?.({ form, target });\n } else {\n setTypename(typename);\n }\n },\n [forms, onCreateObject, target],\n );\n\n const inputSurfaceLookup = useInputSurfaceLookup({ target });\n\n // TODO(wittjosiah): These inputs should be rolled into a `Form` once it supports the necessary variants.\n return (\n <div role='form' className={mx('flex flex-col gap-2', classNames)}>\n {!form ? (\n <SelectSchema options={options} resolve={resolve} onChange={handleSetTypename} />\n ) : !target ? (\n <SelectSpace spaces={spaces} defaultSpaceId={defaultSpaceId} onChange={setTarget} />\n ) : form.formSchema ? (\n <Form\n classNames='!p-0'\n autoFocus\n values={{ name: initialName }}\n schema={form.formSchema}\n testId='create-object-form'\n onSave={handleCreateObject}\n lookupComponent={inputSurfaceLookup}\n />\n ) : undefined}\n </div>\n );\n};\n\nconst SelectSpace = ({\n spaces,\n defaultSpaceId,\n onChange,\n}: { onChange: (space: Space) => void } & Pick<CreateObjectPanelProps, 'spaces' | 'defaultSpaceId'>) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <SearchList.Root label={t('space input label')} classNames='flex flex-col grow overflow-hidden'>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.space-input'\n placeholder={t('space input placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {spaces\n .sort((a, b) => {\n const aName = toLocalizedString(getSpaceDisplayName(a, { personal: a.id === defaultSpaceId }), t);\n const bName = toLocalizedString(getSpaceDisplayName(b, { personal: b.id === defaultSpaceId }), t);\n return aName.localeCompare(bName);\n })\n .map((space) => (\n <SearchList.Item\n key={space.id}\n value={toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t)}\n onSelect={() => onChange(space)}\n classNames='flex items-center gap-2'\n >\n <span className='grow truncate'>\n {toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t)}\n </span>\n </SearchList.Item>\n ))}\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n\nconst SelectSchema = ({\n options,\n resolve,\n onChange,\n}: {\n options: ObjectAnnotation[];\n onChange: (type: string) => void;\n} & Pick<CreateObjectPanelProps, 'resolve'>) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <SearchList.Root label={t('schema input label')} classNames='flex flex-col grow overflow-hidden'>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.schema-input'\n placeholder={t('schema input placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {options.map((option) => (\n <SearchList.Item\n key={option.typename}\n value={t('typename label', { ns: option.typename, defaultValue: option.typename })}\n onSelect={() => onChange(option.typename)}\n classNames='flex items-center gap-2'\n >\n <span className='flex gap-2 items-center grow truncate'>\n <Icon icon={resolve?.(option.typename).icon ?? 'ph--placeholder--regular'} size={5} />\n {t('typename label', { ns: option.typename, defaultValue: option.typename })}\n </span>\n </SearchList.Item>\n ))}\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const AppGraphSerializer = lazy(() => import('./app-graph-serializer'));\nexport const IdentityCreated = lazy(() => import('./identity-created'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Schema = lazy(() => import('./schema'));\nexport const SpaceSettings = lazy(() => import('./settings'));\nexport const SpaceState = lazy(() => import('./state'));\nexport const SpacesReady = lazy(() => import('./spaces-ready'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Effect } from 'effect';\nimport React, { useCallback, useRef } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { type S } from '@dxos/echo-schema';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { SPACE_PLUGIN } from '../../meta';\nimport { SpaceAction, SpaceForm } from '../../types';\n\nexport const CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;\n\ntype FormValues = S.Schema.Type<typeof SpaceForm>;\nconst initialValues: FormValues = { edgeReplication: true };\n\nexport const CreateSpaceDialog = () => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatch } = useIntentDispatcher();\n\n const handleCreateSpace = useCallback(\n async (data: FormValues) => {\n const program = Effect.gen(function* () {\n const { space } = yield* dispatch(createIntent(SpaceAction.Create, data));\n yield* dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: space.id }));\n yield* dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));\n });\n await Effect.runPromise(program);\n },\n [dispatch],\n );\n\n return (\n // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.\n // Consider factoring it out to the tabs package.\n <Dialog.Content classNames='p-0 bs-content min-bs-[16rem] max-bs-full md:max-is-[32rem] overflow-hidden'>\n <div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>\n <Dialog.Title>{t('create space dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button ref={closeRef} density='fine' variant='ghost' autoFocus>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n <div className='p-4'>\n <Form\n testId='create-space-form'\n classNames='!p-0'\n autoFocus\n values={initialValues}\n schema={SpaceForm}\n onSave={handleCreateSpace}\n />\n </div>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionText, mx } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport type { CollectionType } from '../types';\n\nexport const CollectionMain = ({ collection }: { collection: CollectionType }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(\n descriptionText,\n 'border border-dashed border-neutral-400/50 rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words',\n )}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport type { CollectionType } from '../types';\n\nexport const CollectionSection = ({ collection }: { collection: CollectionType }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n // TODO(wittjosiah): Better placeholder.\n return (\n <div className='min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center'>\n <span className='truncate'>{collection.name ?? t('unnamed collection label')}</span>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { useClient } from '@dxos/react-client';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;\n\nexport type JoinDialogProps = JoinPanelProps & {\n navigableCollections?: boolean;\n};\n\nexport const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialogProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const { graph } = useAppGraph();\n const { t } = useTranslation(SPACE_PLUGIN);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n if (result?.spaceKey) {\n await Promise.all([\n dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SPACE_PLUGIN}/join-success`,\n duration: 5_000,\n title: ['join success label', { ns: SPACE_PLUGIN }],\n closeLabel: ['dismiss label', { ns: SPACE_PLUGIN }],\n },\n }),\n ),\n dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n options: {\n state: false,\n },\n }),\n ),\n ]);\n }\n\n const space = result?.spaceKey ? client.spaces.get(result.spaceKey) : undefined;\n if (!space) {\n log.warn('Space not found', result?.spaceKey);\n return;\n }\n\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: space.id }));\n\n // TODO(wittjosiah): If navigableCollections is false and there's no target,\n // should try to navigate to the first object of the space replicates.\n // Potentially this could also be done on the inviters side to ensure there's always a target.\n const target = result?.target || (navigableCollections ? space?.id : undefined);\n if (target) {\n // Wait before navigating to the target node.\n // If the target has not yet replicated, this will trigger a loading toast.\n await graph.waitForPath({ target }).catch(() => {});\n await Promise.all([\n dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [target] })),\n dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: target })),\n ]);\n }\n\n await onDone?.(result);\n\n if (space) {\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, { name: 'space.join', properties: { spaceId: space.id } }),\n );\n }\n },\n [dispatch, client, graph],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: 'os' })}</Dialog.Title>\n <JoinPanel\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Planet } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { type ReactiveEchoObject, getSpace } from '@dxos/client/echo';\nimport { useClient } from '@dxos/react-client';\nimport { DropdownMenu, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { getSpaceDisplayName } from '../util';\n\nexport const MenuFooter = ({ object }: { object: ReactiveEchoObject<any> }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const space = getSpace(object);\n const spaceName = space ? getSpaceDisplayName(space, { personal: client.spaces.default === space }) : '';\n return space ? (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.GroupLabel>{t('menu footer label')}</DropdownMenu.GroupLabel>\n <dl className='pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2'>\n <dt className='uppercase text-[.75em] tracking-wide font-medium mbs-px self-start'>{t('location label')}</dt>\n <dd className='line-clamp-3'>\n <Planet className='inline-block mie-1' />\n {toLocalizedString(spaceName, t)}\n </dd>\n </dl>\n </>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ArrowsCounterClockwise, CheckCircle, Warning } from '@phosphor-icons/react';\nimport React, { useEffect, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { type EchoDatabase } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx, staticPlaceholderText, warningText } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nenum Status {\n PERSISTED_LOCALLY = 0,\n PENDING = 1,\n ERROR = 2,\n}\n\n// TODO(zan): This now has no usages. Remove it?\nexport const PersistenceStatus = ({ db }: { db: EchoDatabase }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const [displayMessage, setDisplayMessage] = useState(false);\n const [status, naturalSetStatus] = useState<Status>(Status.PERSISTED_LOCALLY);\n const [prevStatus, setPrevStatus] = useState<Status>(Status.PERSISTED_LOCALLY);\n const _setStatus = debounce(naturalSetStatus, 500);\n\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // return db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setStatus(Status.ERROR);\n // } else if (duration === undefined) {\n // setStatus(Status.PENDING);\n // } else {\n // setStatus(Status.PERSISTED_LOCALLY);\n // }\n // });\n // }, [db]);\n\n useEffect(() => {\n // If this is changed outside the effect it's batched with setStatus and the following condition will never be true.\n setPrevStatus(status);\n\n if (prevStatus !== status && status === Status.PERSISTED_LOCALLY) {\n setDisplayMessage(true);\n const timeout = setTimeout(() => setDisplayMessage(false), 5000);\n return () => clearTimeout(timeout);\n }\n }, [status]); // `prevStatus` omitted from dependency array to prevent timeout from being reset.\n\n switch (status) {\n case Status.ERROR:\n return (\n <div className='flex items-center'>\n <Warning className={mx(getSize(4), 'me-1')} />\n <span className={mx('text-sm', warningText)}>{t('persistence error label')}</span>\n </div>\n );\n case Status.PENDING:\n return (\n <div className='flex items-center'>\n <ArrowsCounterClockwise className={mx(getSize(4), 'me-1')} />\n <span className={mx('text-sm', staticPlaceholderText)}>{t('persistence pending label')}</span>\n </div>\n );\n case Status.PERSISTED_LOCALLY:\n default:\n return (\n <Tooltip.Root delayDuration={400}>\n <Tooltip.Trigger role='status' className='flex items-center'>\n <CheckCircle className={mx(getSize(4), 'me-1')} />\n {displayMessage && (\n <span className={mx('text-sm', staticPlaceholderText)}>{t('persisted locally label')}</span>\n )}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n {t('persisted locally message')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { SpaceAction } from '../types';\n\nexport const POPOVER_ADD_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;\n\nexport const PopoverAddSpace = () => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n return (\n <div role='none' className='grid grid-cols-1 gap-1 [&>button]:justify-start'>\n <IconButton\n variant='ghost'\n label={t('create space label')}\n icon='ph--plus--regular'\n onClick={() => {\n void dispatch(createIntent(SpaceAction.OpenCreateSpace));\n void dispatch(\n createIntent(LayoutAction.UpdatePopover, { part: 'popover', options: { anchorId: '', state: false } }),\n );\n }}\n data-testid='spacePlugin.createSpace'\n />\n <IconButton\n variant='ghost'\n label={t('join space label')}\n icon='ph--sign-in--regular'\n onClick={() => {\n void dispatch(createIntent(SpaceAction.Join));\n void dispatch(\n createIntent(LayoutAction.UpdatePopover, { part: 'popover', options: { anchorId: '', state: false } }),\n );\n }}\n data-testid='spacePlugin.joinSpace'\n />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { Button, Input, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;\n\nexport const PopoverRenameObject = ({ object: obj }: { object: ReactiveObject<any> }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const doneButton = useRef<HTMLButtonElement>(null);\n // TODO(wittjosiah): Use schema here.\n const object = obj as any;\n // TODO(burdon): Field should not be hardcoded field.\n const [name, setName] = useState(object.name || object.title || '');\n\n const handleDone = useCallback(() => {\n try {\n object.name = name;\n } catch {\n try {\n object.title = name;\n } catch (err) {\n log.error('Failed to rename object', { err });\n }\n }\n }, [object, name]);\n\n return (\n <div role='none' className='p-1 flex gap-2'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.Label srOnly>{t('object name label')}</Input.Label>\n <Input.TextInput\n placeholder={t('object title placeholder')}\n value={name}\n data-testid='spacePlugin.renameObject.input'\n onChange={({ target: { value } }) => setName(value)}\n onKeyDown={({ key }) => key === 'Enter' && doneButton.current?.click()}\n />\n </Input.Root>\n </div>\n <Popover.Close asChild>\n <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>\n {t('done label', { ns: 'os' })}\n </Button>\n </Popover.Close>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, Input, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;\n\nexport const PopoverRenameSpace = ({ space }: { space: Space }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const doneButton = useRef<HTMLButtonElement>(null);\n const [name, setName] = useState(space.properties.name ?? '');\n\n const handleDone = useCallback(() => {\n space.properties.name = name;\n }, [space, name]);\n\n // TODO(thure): Why does the input value need to be uncontrolled to work?\n return (\n <div role='none' className='p-1 flex gap-2'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.Label srOnly>{t('space name label')}</Input.Label>\n <Input.TextInput\n defaultValue={space.properties.name ?? ''}\n placeholder={t('unnamed space label')}\n onChange={({ target: { value } }) => setName(value)}\n // TODO(wittjosiah): Ideally this should access the popover context to close the popover.\n // Currently this is not possible because Radix does not expose the popover context.\n onKeyDown={({ key }) => key === 'Enter' && doneButton.current?.click()}\n />\n </Input.Root>\n </div>\n <Popover.Close asChild>\n <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>\n {t('done label', { ns: 'os' })}\n </Button>\n </Popover.Close>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { SpaceAction } from '../types';\n\nexport const ShareSpaceButton = ({ space }: { space: Space }) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return <ShareSpaceButtonImpl onClick={() => dispatch(createIntent(SpaceAction.Share, { space }))} />;\n};\n\n// TODO(wittjosiah): Better way to name pure/impure components?\nexport const ShareSpaceButtonImpl = ({ onClick }: { onClick: () => void }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <IconButton\n data-testid='spacePlugin.shareSpaceButton'\n icon='ph--users--regular'\n label={t('share space label')}\n onClick={onClick}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { useAppGraph, useCapability } from '@dxos/app-framework';\nimport { generateName } from '@dxos/display-name';\nimport { type Expando } from '@dxos/echo-schema';\nimport { PublicKey, useClient } from '@dxos/react-client';\nimport { getSpace, useMembers, type SpaceMember, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport {\n Avatar,\n AvatarGroup,\n AvatarGroupItem,\n type Size,\n type ThemedClassName,\n Tooltip,\n useTranslation,\n List,\n ListItem,\n useDefaultValue,\n} from '@dxos/react-ui';\nimport { AttentionGlyph, useAttended, useAttention, type AttentionGlyphProps } from '@dxos/react-ui-attention';\nimport { ComplexMap, keyToFallback } from '@dxos/util';\n\nimport { SpaceCapabilities } from '../capabilities';\nimport { usePath } from '../hooks';\nimport { SPACE_PLUGIN } from '../meta';\nimport type { ObjectViewerProps } from '../types';\n\n// TODO(thure): Get/derive these values from protocol\nconst REFRESH_INTERVAL = 5000;\nconst ACTIVITY_DURATION = 30_000;\n\n// TODO(thure): This is chiefly meant to satisfy TS & provide an empty map after `deepSignal` interactions.\nconst noViewers = new ComplexMap<PublicKey, ObjectViewerProps>(PublicKey.hash);\n\n// TODO(wittjosiah): Factor out?\nconst getName = (identity: Identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());\n\nexport const SpacePresence = ({ object, spaceKey }: { object: Expando; spaceKey?: PublicKey }) => {\n // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.\n const spaceState = useCapability(SpaceCapabilities.MutableState);\n const client = useClient();\n const identity = useIdentity();\n const space = spaceKey ? client.spaces.get(spaceKey) : getSpace(object);\n const spaceMembers = useMembers(space?.key);\n\n const [_moment, setMoment] = useState(Date.now());\n\n // NOTE(thure): This is necessary so Presence updates without any underlying data updating.\n useEffect(() => {\n const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);\n return () => clearInterval(interval);\n }, []);\n\n const memberOnline = useCallback((member: SpaceMember) => member.presence === 1, []);\n const memberIsNotSelf = useCallback(\n (member: SpaceMember) => !identity?.identityKey.equals(member.identity.identityKey),\n [identity?.identityKey],\n );\n\n // TODO(thure): Could it be a smell to return early when there are interactions with `deepSignal` later, since it\n // prevents reactivity?\n if (!identity || !spaceState || !space) {\n return null;\n }\n\n const currentObjectViewers = spaceState.viewersByObject[fullyQualifiedId(object)] ?? noViewers;\n\n const membersForObject = spaceMembers\n .filter((member) => memberOnline(member) && memberIsNotSelf(member))\n .filter((member) => currentObjectViewers.has(member.identity.identityKey))\n .map((member) => {\n const objectView = currentObjectViewers.get(member.identity.identityKey);\n const lastSeen = objectView?.lastSeen ?? -Infinity;\n const currentlyAttended = objectView?.currentlyAttended ?? false;\n\n return {\n ...member,\n currentlyAttended,\n lastSeen,\n };\n })\n .toSorted((a, b) => a.lastSeen - b.lastSeen);\n\n return <FullPresence members={membersForObject} />;\n};\n\nexport type Member = SpaceMember & {\n /**\n * Last time a member was seen on this object.\n */\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type MemberPresenceProps = ThemedClassName<{\n size?: Size;\n members?: Member[];\n showCount?: boolean;\n onMemberClick?: (member: Member) => void;\n}>;\n\nexport const FullPresence = (props: MemberPresenceProps) => {\n const { size = 9, onMemberClick } = props;\n const members = useDefaultValue(props.members, () => []);\n\n if (members.length === 0) {\n return null;\n }\n\n return (\n <AvatarGroup.Root size={size} classNames='mbs-2 mie-4' data-testid='spacePlugin.presence'>\n {members.slice(0, 3).map((member, i) => (\n <Tooltip.Root key={member.identity.identityKey.toHex()}>\n <Tooltip.Trigger>\n <PrensenceAvatar\n identity={member.identity}\n group\n match={member.currentlyAttended} // TODO(Zan): Match always true now we're showing 'members viewing current object'.\n index={members.length - i}\n onClick={() => onMemberClick?.(member)}\n />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n <span>{getName(member.identity)}</span>\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ))}\n\n {members.length > 3 && (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <AvatarGroupItem.Root status='inactive'>\n <Avatar.Frame style={{ zIndex: members.length - 4 }}>\n {/* TODO(wittjosiah): Make text fit. */}\n <Avatar.Fallback text={`+${members.length - 3}`} />\n </Avatar.Frame>\n </AvatarGroupItem.Root>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n <Tooltip.Arrow />\n <List classNames='max-h-56 overflow-y-auto'>\n {members.map((member) => (\n <ListItem.Root\n key={member.identity.identityKey.toHex()}\n classNames='flex gap-2 items-center cursor-pointer mbe-2'\n onClick={() => onMemberClick?.(member)}\n data-testid='identity-list-item'\n >\n {/* TODO(Zan): Match always true now we're showing 'members viewing current object'. */}\n <PrensenceAvatar identity={member.identity} showName match={member.currentlyAttended} />\n </ListItem.Root>\n ))}\n </List>\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </AvatarGroup.Root>\n );\n};\n\ntype PresenceAvatarProps = {\n identity: Identity;\n showName?: boolean;\n match?: boolean;\n group?: boolean;\n index?: number;\n onClick?: () => void;\n};\n\nconst PrensenceAvatar = ({ identity, showName, match, group, index, onClick }: PresenceAvatarProps) => {\n const Root = group ? AvatarGroupItem.Root : Avatar.Root;\n const status = match ? 'current' : 'active';\n const fallbackValue = keyToFallback(identity.identityKey);\n return (\n <Root status={status} hue={identity.profile?.data?.hue || fallbackValue.hue}>\n <Avatar.Frame\n data-testid='spacePlugin.presence.member'\n data-status={status}\n {...(index ? { style: { zIndex: index } } : {})}\n onClick={() => onClick?.()}\n >\n <Avatar.Fallback text={identity.profile?.data?.emoji || fallbackValue.emoji} />\n </Avatar.Frame>\n {showName && <Avatar.Label classNames='text-sm truncate pli-2'>{getName(identity)}</Avatar.Label>}\n </Root>\n );\n};\n\nexport type SmallPresenceLiveProps = {\n id?: string;\n open?: boolean;\n viewers?: ComplexMap<PublicKey, ObjectViewerProps>;\n};\n\nexport const SmallPresenceLive = ({ id, open, viewers }: SmallPresenceLiveProps) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(id);\n const isAttended = hasAttention || isAncestor || isRelated;\n\n // TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded\n // this will result in an empty path until the graph is connected.\n // TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.\n const { graph } = useAppGraph();\n const attended = useAttended();\n const startOfAttention = attended.at(-1);\n const path = usePath(graph, startOfAttention);\n const containsAttended = !open && !isAttended && id && path ? path.includes(id) : false;\n\n const getActiveViewers = (viewers: ComplexMap<PublicKey, ObjectViewerProps>): ObjectViewerProps[] => {\n const moment = Date.now();\n return Array.from<ObjectViewerProps>(viewers.values()).filter(\n (viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION,\n );\n };\n\n const [activeViewers, setActiveViewers] = useState(viewers ? getActiveViewers(viewers) : []);\n\n useEffect(() => {\n if (viewers) {\n setActiveViewers(getActiveViewers(viewers));\n const interval = setInterval(() => {\n setActiveViewers(getActiveViewers(viewers));\n }, REFRESH_INTERVAL);\n return () => clearInterval(interval);\n }\n }, [viewers]);\n\n return <SmallPresence count={activeViewers.length} attended={isAttended} containsAttended={containsAttended} />;\n};\n\nexport type SmallPresenceProps = {\n count?: number;\n} & Pick<AttentionGlyphProps, 'attended' | 'containsAttended'>;\n\nexport const SmallPresence = ({ count = 0, attended, containsAttended }: SmallPresenceProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <AttentionGlyph\n attended={attended}\n containsAttended={containsAttended}\n presence={count > 1 ? 'many' : count === 1 ? 'one' : 'none'}\n classNames='self-center mie-1'\n />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom'>\n <span>{t('presence label', { count })}</span>\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Graph } from '@dxos/plugin-graph';\n\n/**\n * React hook to get a path from the graph.\n *\n * @param graph Graph to find the node in.\n * @param id Id of the node to find a path to.\n * @param timeout Optional timeout in milliseconds to wait for the node to be found.\n * @returns Path if found, undefined otherwise.\n */\n// TODO(wittjosiah): Factor out.\nexport const usePath = (graph: Graph, id?: string, timeout?: number): string[] | undefined => {\n const [pathState, setPathState] = useState<string[] | undefined>(id ? graph.getPath({ target: id }) : undefined);\n\n useEffect(() => {\n if (!id && pathState) {\n setPathState(undefined);\n }\n\n if (pathState?.at(-1) === id || !id) {\n return;\n }\n\n // Set timeout did not seem to effectively not block the UI thread.\n const frame = requestAnimationFrame(async () => {\n try {\n const path = await graph.waitForPath({ target: id }, { timeout });\n if (path) {\n setPathState(path);\n }\n } catch {}\n });\n\n return () => cancelAnimationFrame(frame);\n }, [graph, id, timeout, pathState]);\n\n return pathState;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type SpaceSettingsProps } from '../types';\n\nexport const SpacePluginSettings = ({ settings }: { settings: SpaceSettingsProps }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('show hidden spaces label')}>\n <Input.Switch checked={settings.showHidden} onCheckedChange={(checked) => (settings.showHidden = !!checked)} />\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Input, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\n\nimport { SPACE_PLUGIN } from '../../meta';\n\nexport type SpaceSettingsPanelProps = {\n space: Space;\n};\n\nexport const SpaceSettingsPanel = ({ space }: SpaceSettingsPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n const client = useClient();\n const edgeEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.echoReplicator);\n\n const [edgeReplication, setEdgeReplication] = useState(\n space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED,\n );\n const toggleEdgeReplication = useCallback(\n async (next: boolean) => {\n setEdgeReplication(next);\n await space?.internal\n .setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED)\n .catch((err) => {\n log.catch(err);\n setEdgeReplication(!next);\n });\n },\n [space],\n );\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('name label')}>\n <Input.TextInput\n placeholder={t('unnamed space label')}\n value={space.properties.name ?? ''}\n onChange={(event) => {\n space.properties.name = event.target.value;\n }}\n />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('icon label')}>\n <Toolbar.Root>\n <IconPicker\n value={space.properties.icon}\n onChange={(nextIcon) => (space.properties.icon = nextIcon)}\n onReset={() => {\n space.properties.icon = undefined;\n }}\n />\n </Toolbar.Root>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('hue label')}>\n <Toolbar.Root>\n <HuePicker\n value={space.properties.hue}\n onChange={(nextHue) => (space.properties.hue = nextHue)}\n onReset={() => {\n space.properties.hue = undefined;\n }}\n />\n </Toolbar.Root>\n </DeprecatedFormInput>\n {edgeEnabled && (\n <DeprecatedFormInput label={t('edge replication label')}>\n <Input.Switch checked={edgeReplication} onCheckedChange={toggleEdgeReplication} />\n </DeprecatedFormInput>\n )}\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { Surface, useCapabilities } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { Button, Clipboard, Dialog, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tabs, type TabsRootProps, type TabsActivePart } from '@dxos/react-ui-tabs';\nimport { SpacePanel, type SpacePanelProps } from '@dxos/shell/react';\n\nimport { SpaceSettingsPanel, type SpaceSettingsPanelProps } from './SpaceSettingsPanel';\nimport { SpaceCapabilities } from '../../capabilities';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { COMPOSER_SPACE_LOCK, getSpaceDisplayName } from '../../util';\n\nexport const SPACE_SETTINGS_DIALOG = `${SPACE_PLUGIN}/SpaceSettingsDialog`;\n\nexport type SpaceSettingsTab = 'members' | 'settings';\n\nexport type SpaceSettingsDialogProps = {\n initialTab?: SpaceSettingsTab;\n namesCache?: Record<string, string>;\n} & SpaceSettingsPanelProps &\n Pick<SpacePanelProps, 'createInvitationUrl' | 'target'>;\n\nexport const SpaceSettingsDialog = ({\n space,\n target,\n createInvitationUrl,\n initialTab = 'members',\n namesCache,\n}: SpaceSettingsDialogProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const [tabsActivePart, setTabsActivePart] = useState<TabsActivePart>('list');\n const [selected, setSelected] = useState<SpaceSettingsTab>(initialTab);\n const locked = space.properties[COMPOSER_SPACE_LOCK];\n const name = getSpaceDisplayName(space, { personal: client.spaces.default === space, namesCache });\n const panels = useCapabilities(SpaceCapabilities.SettingsPanel);\n const data = useMemo(() => ({ subject: space }), [space]);\n\n return (\n // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.\n // Consider factoring it out to the tabs package.\n <Dialog.Content classNames='p-0 bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>\n <Dialog.Title\n onClick={() => setTabsActivePart('list')}\n aria-description={t('click to return to tablist description')}\n classNames='flex cursor-pointer items-center group/title'\n >\n <Icon\n icon='ph--caret-left--regular'\n size={4}\n classNames={['@md:hidden', tabsActivePart === 'list' && 'invisible']}\n />\n <span\n className={\n tabsActivePart !== 'list'\n ? 'group-hover/title:underline @md:group-hover/title:no-underline underline-offset-4 decoration-1'\n : ''\n }\n >\n {toLocalizedString(name, t)}\n </span>\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button density='fine' variant='ghost' autoFocus>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n <Tabs.Root\n orientation='vertical'\n value={selected}\n onValueChange={setSelected as TabsRootProps['onValueChange']}\n activePart={tabsActivePart}\n onActivePartChange={setTabsActivePart}\n classNames='flex flex-col flex-1 mbs-2'\n >\n <Tabs.Viewport classNames='flex-1 min-bs-0'>\n <div role='none' className='overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r border-separator'>\n <Tabs.Tablist classNames='flex flex-col max-bs-none min-is-[200px] gap-4 overflow-y-auto'>\n <div role='none' className='flex flex-col ml-1'>\n <Tabs.Tab value='settings'>{t('settings tab label')}</Tabs.Tab>\n <Tabs.Tab value='members' disabled={locked}>\n {t('members tab label')}\n </Tabs.Tab>\n {panels.map((panel) => (\n <Tabs.Tab key={panel.id} value={panel.id}>\n {toLocalizedString(panel.label, t)}\n </Tabs.Tab>\n ))}\n </div>\n </Tabs.Tablist>\n </div>\n\n <Tabs.Tabpanel value='settings' classNames='pli-3 @md:pli-5 max-bs-dvh overflow-y-auto'>\n <SpaceSettingsPanel space={space} />\n </Tabs.Tabpanel>\n\n {/* TODO(wittjosiah): Weird focus ring when tabpanel is focused. */}\n <Tabs.Tabpanel value='members' classNames='pli-3 @md:pli-5 max-bs-dvh overflow-y-auto'>\n <Clipboard.Provider>\n <SpacePanel space={space} hideHeading target={target} createInvitationUrl={createInvitationUrl} />\n </Clipboard.Provider>\n </Tabs.Tabpanel>\n\n {panels.map((panel) => (\n <Tabs.Tabpanel key={panel.id} value={panel.id} classNames='pli-3 @md:pli-5 max-bs-dvh overflow-y-auto'>\n <Surface role={`space-settings--${panel.id}`} data={data} />\n </Tabs.Tabpanel>\n ))}\n </Tabs.Viewport>\n </Tabs.Root>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { QueryEdgeStatusResponse } from '@dxos/protocols/proto/dxos/client/services';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { AttentionGlyph, useAttended, useAttention } from '@dxos/react-ui-attention';\n\nimport { useSpaceSyncState } from './sync-state';\nimport { usePath } from '../../hooks';\nimport { SPACE_PLUGIN } from '../../meta';\n\nconst useEdgeStatus = (): QueryEdgeStatusResponse.EdgeStatus => {\n const [status, setStatus] = useState(QueryEdgeStatusResponse.EdgeStatus.NOT_CONNECTED);\n const client = useClient();\n\n useEffect(() => {\n client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {\n setStatus(status);\n });\n }, [client]);\n\n return status;\n};\n\nexport const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const id = space.id;\n const { hasAttention, isAncestor, isRelated } = useAttention(id);\n const isAttended = hasAttention || isAncestor || isRelated;\n\n // TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded\n // this will result in an empty path until the graph is connected.\n // TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.\n const { graph } = useAppGraph();\n const attended = useAttended();\n const startOfAttention = attended.at(-1);\n const path = usePath(graph, startOfAttention);\n const containsAttended = !open && !isAttended && id && path ? path.includes(id) : false;\n\n const connectedToEdge = useEdgeStatus() === QueryEdgeStatusResponse.EdgeStatus.CONNECTED;\n // TODO(wittjosiah): This is not reactive.\n const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;\n const syncState = useSpaceSyncState(space);\n const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <AttentionGlyph\n syncing={syncing}\n attended={isAttended}\n containsAttended={containsAttended}\n classNames='self-center mie-1'\n />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='bottom' classNames='z-[70]'>\n <span>{t('syncing label')}</span>\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Space, type SpaceId, type SpaceSyncState } from '@dxos/client/echo';\nimport { Context } from '@dxos/context';\nimport { EdgeService } from '@dxos/protocols';\nimport { useClient } from '@dxos/react-client';\n\nexport type Progress = { count: number; total: number };\n\nexport type PeerSyncState = Omit<SpaceSyncState.PeerState, 'peerId'>;\n\nexport type SpaceSyncStateMap = Record<SpaceId, PeerSyncState>;\n\nexport const createEmptyEdgeSyncState = (): PeerSyncState => ({\n missingOnLocal: 0,\n missingOnRemote: 0,\n localDocumentCount: 0,\n remoteDocumentCount: 0,\n differentDocuments: 0,\n});\n\nexport const getSyncSummary = (syncMap: SpaceSyncStateMap): PeerSyncState => {\n return Object.entries(syncMap).reduce<PeerSyncState>((summary, [_spaceId, peerState]) => {\n summary.missingOnLocal += peerState.missingOnLocal;\n summary.missingOnRemote += peerState.missingOnRemote;\n summary.localDocumentCount += peerState.localDocumentCount;\n summary.remoteDocumentCount += peerState.remoteDocumentCount;\n summary.differentDocuments += peerState.differentDocuments;\n return summary;\n }, createEmptyEdgeSyncState());\n};\n\nconst isEdgePeerId = (peerId: string, spaceId: SpaceId) =>\n peerId.startsWith(`${EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);\n\n/**\n * Hook Subscribes to sync state for each space.\n */\nexport const useSyncState = (): SpaceSyncStateMap => {\n const client = useClient();\n const [spaceState, setSpaceState] = useState<SpaceSyncStateMap>({});\n\n useEffect(() => {\n const ctx = new Context();\n const createSubscriptions = (spaces: Space[]) => {\n for (const space of spaces) {\n if (spaceState[space.id]) {\n continue;\n }\n\n ctx.onDispose(\n space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState((spaceState) => ({ ...spaceState, [space.id]: syncState }));\n }\n }),\n );\n }\n };\n\n createSubscriptions(client.spaces.get());\n client.spaces.subscribe((spaces) => {\n createSubscriptions(spaces);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [client]);\n\n return spaceState;\n};\n\n/**\n * Hook Subscribes to sync state for a single space.\n */\n// TODO(wittjosiah): Reconcile w/ useSyncState.\nexport const useSpaceSyncState = (space: Space): PeerSyncState | undefined => {\n const [spaceState, setSpaceState] = useState<PeerSyncState>();\n\n useEffect(() => {\n const ctx = new Context();\n space.crud.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState(syncState);\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [space]);\n\n return spaceState;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { useClient } from '@dxos/react-client';\nimport { type SpaceId } from '@dxos/react-client/echo';\nimport { Icon, Input, Popover, useTranslation } from '@dxos/react-ui';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { SpaceRowContainer, SYNC_STALLED_TIMEOUT } from './Space';\nimport { createClientSaveTracker } from './save-tracker';\nimport { getIcon, getStatus } from './status';\nimport { type PeerSyncState, type SpaceSyncStateMap, getSyncSummary, useSyncState } from './sync-state';\nimport { SPACE_PLUGIN } from '../../meta';\n\nexport const SyncStatus = () => {\n const client = useClient();\n const state = useSyncState();\n const [saved, setSaved] = useState(true);\n\n useEffect(() => {\n return createClientSaveTracker(client, (state) => {\n setSaved(state === 'saved');\n });\n }, []);\n\n return <SyncStatusIndicator state={state} saved={saved} />;\n};\n\nexport const SyncStatusIndicator = ({ state, saved }: { state: SpaceSyncStateMap; saved: Boolean }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const summary = getSyncSummary(state);\n const offline = Object.values(state).length === 0;\n const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;\n const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;\n const status = getStatus({ offline, saved, needsToUpload, needsToDownload });\n\n const [classNames, setClassNames] = useState<string>();\n useEffect(() => {\n setClassNames(undefined);\n if (offline || (!needsToUpload && !needsToDownload)) {\n return;\n }\n\n const t = setTimeout(() => {\n // TODO(wittjosiah): Use semantic color tokens.\n setClassNames('text-orange-500');\n }, SYNC_STALLED_TIMEOUT);\n return () => clearTimeout(t);\n }, [offline, needsToUpload, needsToDownload]);\n\n const title = t(`${status} label`);\n const icon = <Icon icon={getIcon(status)} size={4} classNames={classNames} />;\n\n if (offline) {\n return <StatusBar.Item title={title}>{icon}</StatusBar.Item>;\n } else {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <StatusBar.Button title={title}>{icon}</StatusBar.Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content>\n <SyncStatusDetail state={state} summary={summary} debug={false} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n }\n};\n\nexport type SyncStatusDetailProps = ThemedClassName<{\n state: SpaceSyncStateMap;\n summary: PeerSyncState;\n debug?: boolean;\n}>;\n\n// TODO(wittjosiah): This currently does not show `differentDocuments` at all.\nexport const SyncStatusDetail = ({ classNames, state, summary, debug }: SyncStatusDetailProps) => {\n const [showAll, setShowAll] = useState(false);\n const { t } = useTranslation(SPACE_PLUGIN);\n const entries = Object.entries(state)\n .filter(([_, value]) => showAll || value.missingOnLocal + value.missingOnRemote > 0)\n .toSorted(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n\n const handleCheckedChange = useCallback((state: boolean) => setShowAll(state), [setShowAll]);\n\n // TODO(burdon): Normalize to max document count?\n return (\n <div className={mx('flex flex-col gap-3 p-2 text-xs min-w-96', classNames)}>\n <div role='none' className='flex items-center'>\n <h1 className='flex-1'>{t('sync status title')}</h1>\n <div className='flex items-center gap-2'>\n <Input.Root>\n <Input.Label classNames='text-xs'>{t('show all label')}</Input.Label>\n <Input.Checkbox checked={showAll} onCheckedChange={handleCheckedChange} />\n </Input.Root>\n </div>\n </div>\n <div className='flex flex-col gap-2'>\n {entries.length === 0 && (\n <div role='none' className='flex justify-center'>\n {/* TODO(wittjosiah): This text should be updated once status includes different documents. */}\n {t('no sync status label')}\n </div>\n )}\n {entries.map(([spaceId, state]) => (\n <SpaceRowContainer key={spaceId} spaceId={spaceId as SpaceId} state={state} />\n ))}\n </div>\n {debug && <SyntaxHighlighter language='json'>{JSON.stringify(summary, null, 2)}</SyntaxHighlighter>}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type HTMLAttributes, useEffect, useState } from 'react';\n\nimport { useClient } from '@dxos/react-client';\nimport { type SpaceId, useSpace } from '@dxos/react-client/echo';\nimport { Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type Progress, type PeerSyncState } from './sync-state';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { getSpaceDisplayName } from '../../util';\n\nexport const SYNC_STALLED_TIMEOUT = 5_000;\n\n// TODO(wittjosiah): Define sematic color tokens.\nconst styles = {\n barBg: 'bg-neutral-50 dark:bg-green-900 text-black',\n barFg: 'bg-neutral-100 bg-green-500',\n barHover: 'dark:hover:bg-green-500',\n};\n\nconst useActive = (count: number) => {\n const [current, setCurrent] = useState(count);\n const [active, setActive] = useState(false);\n useEffect(() => {\n let t: NodeJS.Timeout | undefined;\n if (count !== current) {\n setActive(true);\n setCurrent(count);\n t && clearTimeout(t);\n t = setTimeout(() => {\n setActive(false);\n }, SYNC_STALLED_TIMEOUT);\n }\n\n return () => {\n setActive(false);\n clearTimeout(t);\n };\n }, [count, current]);\n return active;\n};\n\nexport type SpaceRowContainerProps = Omit<SpaceRowProps, 'spaceName'>;\n\nexport const SpaceRowContainer = ({ spaceId, state }: SpaceRowContainerProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const space = useSpace(spaceId);\n if (!space) {\n return null;\n }\n\n const spaceName = toLocalizedString(getSpaceDisplayName(space, { personal: space === client.spaces.default }), t);\n\n return <SpaceRow spaceId={spaceId} spaceName={spaceName} state={state} />;\n};\n\nexport type SpaceRowProps = {\n spaceId: SpaceId;\n spaceName: string;\n state: PeerSyncState;\n};\n\nexport const SpaceRow = ({\n spaceId,\n spaceName,\n state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote },\n}: SpaceRowProps) => {\n const downActive = useActive(localDocumentCount);\n const upActive = useActive(remoteDocumentCount);\n\n return (\n <div\n className='flex items-center mx-0.5 gap-0.5 cursor-pointer'\n title={spaceId}\n onClick={() => {\n void navigator.clipboard.writeText(spaceId);\n }}\n >\n <span className='is-1/2 truncate'>{spaceName}</span>\n <Icon\n icon='ph--arrow-fat-line-left--regular'\n size={3}\n classNames={mx(downActive && 'animate-[pulse_1s_infinite]')}\n />\n <Candle\n up={{ count: remoteDocumentCount, total: remoteDocumentCount + missingOnRemote }}\n down={{ count: localDocumentCount, total: localDocumentCount + missingOnLocal }}\n title={spaceId}\n />\n <Icon\n icon='ph--arrow-fat-line-right--regular'\n size={3}\n classNames={mx(upActive && 'animate-[pulse_1s_step-start_infinite]')}\n />\n </div>\n );\n};\n\ntype CandleProps = ThemedClassName<Pick<HTMLAttributes<HTMLDivElement>, 'title'>> & { up: Progress; down: Progress };\n\nconst Candle = ({ classNames, up, down }: CandleProps) => {\n return (\n <div className={mx('grid grid-cols-[1fr_2rem_1fr] w-full h-3', classNames)}>\n <Bar classNames='justify-end' {...up} />\n <div className='relative'>\n <div className={mx('absolute inset-0 flex items-center justify-center text-xs', styles.barBg)}>{up.total}</div>\n </div>\n <Bar {...down} />\n </div>\n );\n};\n\nconst Bar = ({ classNames, count, total }: ThemedClassName<Progress>) => {\n let p = (count / total) * 100;\n if (count < total) {\n p = Math.min(p, 95);\n }\n\n return (\n <div className={mx('relative flex w-full', styles.barBg, classNames)}>\n <div className={mx('shrink-0', styles.barFg)} style={{ width: `${p}%` }}></div>\n {count !== total && (\n <div className='absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs'>{count}</div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type UnsubscribeCallback } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space, type SpaceId } from '@dxos/client/echo';\nimport { Context } from '@dxos/context';\n\nexport const createClientSaveTracker = (client: Client, cb: (state: 'saved' | 'saving') => void) => {\n const unsubscribeCallbacks: Record<SpaceId, UnsubscribeCallback> = {};\n const state: Record<SpaceId, 'saved' | 'saving'> = {};\n\n const install = (spaces: Space[]) => {\n for (const space of spaces) {\n if (state[space.id]) {\n continue;\n }\n\n state[space.id] = 'saved';\n unsubscribeCallbacks[space.id] = createSpaceSaveTracker(space, (s) => {\n state[space.id] = s;\n cb(Object.values(state).some((s) => s === 'saving') ? 'saving' : 'saved');\n });\n }\n };\n client.spaces.subscribe((spaces) => {\n install(spaces);\n });\n install(client.spaces.get());\n\n return () => {\n for (const unsubscribe of Object.values(unsubscribeCallbacks)) {\n unsubscribe();\n }\n };\n};\n\nconst createSpaceSaveTracker = (space: Space, cb: (state: 'saved' | 'saving') => void): UnsubscribeCallback => {\n const ctx = new Context();\n\n void space.waitUntilReady().then(() => {\n if (ctx.disposed) {\n return;\n }\n\n let hasUnsavedChanges = false;\n let lastFlushPromise: Promise<void> | undefined;\n space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {\n hasUnsavedChanges = unsavedDocuments.length > 0;\n });\n space.crud.saveStateChanged.debounce(500).on(ctx, () => {\n if (hasUnsavedChanges) {\n lastFlushPromise = undefined;\n cb('saving');\n } else {\n const flushPromise = space.crud.flush();\n lastFlushPromise = flushPromise;\n void flushPromise.then(() => {\n if (lastFlushPromise === flushPromise) {\n cb('saved');\n }\n });\n }\n });\n });\n\n return () => {\n void ctx.dispose();\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport type Status = 'saving locally' | 'downloading' | 'uploading' | 'offline persisted' | 'remote synced';\n\nexport const getStatus = ({\n offline,\n saved,\n needsToUpload,\n needsToDownload,\n}: {\n offline: Boolean;\n saved: Boolean;\n needsToUpload: Boolean;\n needsToDownload: Boolean;\n}): Status => {\n if (!saved) {\n return 'saving locally';\n } else if (!offline && needsToDownload) {\n return 'downloading';\n } else if (!offline && needsToUpload) {\n return 'uploading';\n } else if (offline && !needsToUpload && !needsToDownload) {\n return 'offline persisted';\n } else {\n return 'remote synced';\n }\n};\n\nexport const getIcon = (status: Status) => {\n switch (status) {\n case 'saving locally':\n return 'ph--download--regular';\n case 'downloading':\n return 'ph--cloud-arrow-down--regular';\n case 'uploading':\n return 'ph--cloud-arrow-up--regular';\n case 'offline persisted':\n return 'ph--check-circle--regular';\n case 'remote synced':\n return 'ph--cloud-check--regular';\n }\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAIA,OAAOA,UAASC,eAAAA,cAAaC,gBAAgB;AAE7C,SAA0BC,wBAAwB;AAClD,SAASC,eAAwC;AACjD,SAASC,cAAAA,aAAYC,kBAAAA,iBAAgBC,iBAAiB;AACtD,SAASC,YAAY;;;ACLrB,OAAOC,SAASC,mBAAmB;AAGnC,SAASC,YAAYC,MAAMC,UAAUC,sBAAsB;AAUpD,IAAMC,cAAc,CAAC,EAAEC,MAAMC,SAAQ,MAAoB;AAC9D,SACE,sBAAA,cAACC,MAAAA;IAAKC,YAAW;KACdH,KAAKI,IAAI,CAACC,QACT,sBAAA,cAACC,SAAAA;IAAQD,KAAKA,IAAIE;IAAIC,WAAWH;IAAKJ;;AAI9C;AAOA,IAAMK,UAAU,CAAC,EAAEE,WAAWP,SAAQ,MAAgB;AACpD,QAAM,EAAEQ,EAAC,IAAKC,eAAeC,YAAAA;AAE7B,QAAMC,eAAeC,YAAY,MAAA;AAC/BZ,eAAWO,SAAAA;EACb,GAAG;IAACA;IAAWP;GAAS;AAExB,SACE,sBAAA,cAACa,SAASC,MAAI;IAACZ,YAAW;KACxB,sBAAA,cAACW,SAASE,SAAO;IAACb,YAAW;KAC3B,sBAAA,cAACc,OAAAA,MAAKT,UAAUU,MAAM,GACtB,sBAAA,cAACD,OAAAA;IAAIE,WAAU;KAAqCX,UAAUD,EAAE,CAAA,GAElE,sBAAA,cAACO,SAASM,QAAM,MACd,sBAAA,cAACC,YAAAA;IAAWC,UAAAA;IAASC,MAAK;IAAiBC,SAAQ;IAAQC,OAAOhB,EAAE,YAAA;IAAeiB,SAASd;;AAIpG;;;ADpCA,IAAMe,gBAAgB;EACpBC,QAAQ;EACRC,IAAI;AACN;AAMO,IAAMC,yBAAyB,CAAC,EAAEC,OAAM,MAA+B;AAC5E,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,YAAAA;AAC7B,QAAM,CAACC,QAAQC,SAAAA,IAAaC,SAAS,KAAA;AACrC,QAAMC,OAAOC,QAAQR,MAAAA,EAAQO;AAE7B,QAAME,YAAYC,aAAY,MAAML,UAAU,IAAA,GAAO,CAAA,CAAE;AACvD,QAAMM,eAAeD,aAAY,MAAML,UAAU,KAAA,GAAQ,CAAA,CAAE;AAC3D,QAAMO,aAAaF,aACjB,CAACG,QAAAA;AACC,UAAMC,QAAQP,KAAKQ,UAAU,CAAC,EAAElB,QAAQC,GAAE,MAAOD,WAAWgB,IAAIhB,UAAUC,OAAOe,IAAIf,EAAE;AACvF,QAAIgB,UAAU,IAAI;AAChBP,WAAKS,KAAKH,GAAAA;IACZ;AACAR,cAAU,KAAA;EACZ,GACA;IAACE;GAAK;AAER,QAAMU,eAAeP,aACnB,CAACG,QAAAA;AACC,UAAMC,QAAQP,KAAKQ,UAAU,CAAC,EAAElB,QAAQC,GAAE,MAAOD,WAAWgB,IAAIhB,UAAUC,OAAOe,IAAIf,EAAE;AACvF,QAAIgB,UAAU,IAAI;AAChBP,WAAKW,OAAOJ,OAAO,CAAA;IACrB;EACF,GACA;IAACP;GAAK;AAIR,SACE,gBAAAY,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,WAAAA,IAAAA,GACD,gBAAAD,OAAA,cAACE,OAAAA;IAAIC,WAAU;KACb,gBAAAH,OAAA,cAACI,MAAAA,MAAItB,EAAE,yBAAA,CAAA,GACP,gBAAAkB,OAAA,cAACE,OAAAA;IAAIC,WAAU;KACb,gBAAAH,OAAA,cAACK,MAAAA;IAAGF,WAAU;KAAyBrB,EAAE,cAAA,CAAA,GACzC,gBAAAkB,OAAA,cAACE,OAAAA;IAAIC,WAAU;MACf,gBAAAH,OAAA,cAACM,aAAAA;IACCC,YAAYtB,UAAU;IACtBuB,MAAK;IACLC,OAAO3B,EAAE,SAAA;IACT4B,SAASpB;OAGZ,CAACL,UAAU,gBAAAe,OAAA,cAACW,aAAAA;IAAYvB;IAAYwB,UAAUd;OAEhDb,UAAU,gBAAAe,OAAA,cAACa,MAAAA;IAAKC,QAAQC;IAAkBC,QAAQvC;IAAewC,QAAQxB;IAAYyB,UAAU1B;;AAGtG;;;AEnEA,SAAS2B,aAAaC,cAAcC,mBAAmB;AACvD,OAAOC,UAASC,eAAAA,cAAaC,WAAWC,YAAAA,iBAAgB;AAExD,SAASC,cAAcC,cAAcC,qBAAqBC,iBAAiB;AAC3E,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,kBAAkBC,gBAAgB;AACnD,SAASC,QAAQC,OAAOC,kBAAAA,uBAAsB;AAC9C,SAASC,SAASC,UAAU;AAK5B,IAAMC,0BAA0B;AAChC,IAAMC,gBAAgB;AAEf,IAAMC,iBAAiB,CAAC,EAAEC,GAAE,MAAkB;AACnD,QAAM,CAACC,MAAMC,OAAAA,IAAWC,UAAS,IAAA;AACjC,QAAM,CAACC,SAASC,UAAAA,IAAcF,UAAS,IAAA;AACvC,QAAM,CAACG,OAAOC,QAAAA,IAAYJ,UAAS,KAAA;AACnC,QAAM,EAAEK,EAAC,IAAKC,gBAAeC,YAAAA;AAC7B,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,QAAMC,SAASC,UAAAA;AAEf,QAAMC,SAASC,UAAAA;AACf,QAAMC,UAAUC,SAASH,OAAOI,QAAQC,OAAOC,IAAG,CAAA;AAElDC,YAAU,MAAA;AACR,QAAI,CAACvB,IAAI;AACP;IACF;AAEA,UAAMwB,UAAUC,WAAW,MAAA;AACzBpB,iBAAW,KAAA;IACb,GAAGR,uBAAAA;AAEH,UAAM6B,aAAaF,OAAAA;EACrB,GAAG;IAACxB;GAAG;AAEPuB,YAAU,MAAA;AACR,QAAIL,QAAQS,UAAU,CAACC,WAAWC,iBAAiBD,MAAAA,MAAY5B,EAAAA,IAAM,IAAI;AACvEO,eAAS,IAAA;AAET,UAAIO,OAAOgB,OAAOC,SAAS/B,EAAAA,GAAK;AAC9BE,gBAAQ,KAAA;MACV;IACF;EACF,GAAG;IAACF;IAAIkB;IAASJ;GAAO;AAExB,QAAMkB,cAAcC,aAClB,YAAYrB,SAASsB,aAAaC,YAAYC,eAAe;IAAEpC,IAAIqC;EAAU,CAAA,CAAA,GAC7E;IAACzB;GAAS;AAGZ,QAAM0B,iBAAiBL,aAAY,MAAA;AACjC,SAAKrB,SAASsB,aAAaK,aAAaC,MAAM;MAAEC,MAAM;MAAQC,SAAS;QAAC1C;;IAAI,CAAA,CAAA;AAC5E,SAAKgC,YAAAA;EACP,GAAG;IAAChC;IAAIgC;IAAapB;GAAS;AAE9B,SACE,gBAAA+B,OAAA,cAACC,MAAMC,MAAI;IAAC5C;IAAY6C,UAAUhD;IAAeiD,cAAc7C;KAC7D,gBAAAyC,OAAA,cAACC,MAAMI,MAAI,MACT,gBAAAL,OAAA,cAACC,MAAMK,OAAK;IAACC,YAAW;KACrB5C,QACC,gBAAAqC,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACQ,aAAAA;IAAYC,WAAWC,QAAQ,CAAA;MAChC,gBAAAV,OAAA,cAACW,QAAAA,MAAM9C,EAAE,oBAAA,CAAA,CAAA,IAETJ,UACF,gBAAAuC,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACY,aAAAA;IAAYH,WAAWI,GAAGH,QAAQ,CAAA,GAAI,cAAA;MACvC,gBAAAV,OAAA,cAACW,QAAAA,MAAM9C,EAAE,0BAAA,CAAA,CAAA,IAGX,gBAAAmC,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACc,cAAAA;IAAaL,WAAWC,QAAQ,CAAA;MACjC,gBAAAV,OAAA,cAACW,QAAAA,MAAM9C,EAAE,wBAAA,CAAA,CAAA,CAAA,GAIf,gBAAAmC,OAAA,cAACC,MAAMc,aAAW,MACflD,EACCF,QACI,6BACAF,UACE,mCACA,8BAAA,CAAA,CAAA,GAIZ,gBAAAuC,OAAA,cAACC,MAAMe,SAAO,MACXrD,QACC,gBAAAqC,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,MAAMgB,QAAM;IAACC,SAASrD,EAAE,kBAAA;IAAqBsD,SAAAA;KAC5C,gBAAAnB,OAAA,cAACoB,QAAAA;IAAOC,SAAQ;IAAUC,SAAS3B;KAChC9B,EAAE,oBAAA,CAAA,CAAA,GAGP,gBAAAmC,OAAA,cAACC,MAAMsB,OAAK;IAACJ,SAAAA;KACX,gBAAAnB,OAAA,cAACoB,QAAAA;IAAOE,SAASjC;KAAcxB,EAAE,eAAe;IAAE2D,IAAI;EAAS,CAAA,CAAA,CAAA,CAAA,IAInE,gBAAAxB,OAAA,cAACC,MAAMsB,OAAK;IAACJ,SAAAA;KACX,gBAAAnB,OAAA,cAACoB,QAAAA;IAAOE,SAASjC;KAAcxB,EAAEJ,UAAU,gBAAgB,iBAAiB;IAAE+D,IAAI;EAAS,CAAA,CAAA,CAAA,CAAA,CAAA;AAMvG;;;AC7GA,OAAOC,YAAW;AAGlB,SAASC,OAAOC,kBAAAA,uBAAsB;AAQ/B,IAAMC,qBAAqB,CAAC,EAAEC,OAAM,MAA2B;AACpE,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,YAAAA;AAC7B,QAAMC,WAAWC,OAAMC,OAAyB,IAAA;AAEhD,SACE,gBAAAD,OAAA,cAACE,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAJ,OAAA,cAACK,MAAMC,MAAI,MACT,gBAAAN,OAAA,cAACK,MAAME,OAAK,MAAEX,EAAE,YAAA,CAAA,GAChB,gBAAAI,OAAA,cAACK,MAAMG,WAAS;IACdC,KAAKV;IACLW,aAAad,EAAE,kBAAA;IACfe,OAAOhB,OAAOiB,QAAQ;IACtBC,UAAU,CAACC,UAAAA;AACTnB,aAAOiB,OAAOE,MAAMC,OAAOJ;IAC7B;IACAK,WAAW,CAACF,UAAAA;AACV,UAAIA,MAAMG,QAAQ,SAAS;AACzBlB,iBAASmB,SAASC,KAAAA;MACpB;IACF;;AAKV;;;ACnCA,SAASC,YAAY;AACrB,OAAOC,UAASC,eAAAA,cAAaC,cAAc;AAE3C,SACEC,cACAC,OACAC,gBAAAA,eACAC,gBAAAA,eACAC,iBACAC,uBAAAA,sBACAC,oBAAAA,yBACK;AACP,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,UAAUC,kBAAkBC,SAA8BC,iBAAiB;AACpF,SAASC,UAAAA,SAAQC,QAAQC,QAAAA,OAAMC,kBAAAA,uBAAsB;;;ACfrD,OAAOC,UAASC,eAAAA,cAAaC,YAAAA,iBAAgB;AAE7C,SAASC,SAASC,oBAAoBC,wBAAwB;AAC9D,SAASC,2BAA0D;AACnE,SAASC,iBAAiB;AAE1B,SAASC,MAA4BC,mBAAmBC,kBAAAA,uBAAsB;AAC9E,SAASC,QAAAA,aAA6B;AACtC,SAASC,kBAAkB;AAC3B,SAASC,MAAAA,WAAU;AACnB,SAASC,qBAAwC;;AAYjD,IAAMC,wBAAwB,CAACC,aAAAA;AAC7B,QAAMC,gBAAgBC,iBAAAA;AAEtB,SAAOC,aACL,CAAC,EAAEC,MAAMC,QAAQC,WAAU,MAAmE;AAC5F,UAAMC,eAAe;MAAEH;MAAMC;MAAQ,GAAGL;IAAS;AACjD,QAAI,CAACQ,mBAAmBP,cAAcQ,SAAS;MAAEC,MAAM;MAAcC,MAAMJ;IAAa,CAAA,GAAI;AAC1F,aAAOK;IACT;AAEA,WAAO,gBAAAC,OAAA,cAACC,SAAAA;MAAQJ,MAAK;MAAaC,MAAMJ;MAAe,GAAGD;;EAC5D,GACA;IAACL;IAAeD;GAAS;AAE7B;AAiBO,IAAMe,oBAAoB,CAAC,EAChCC,YACAC,OACAC,QACAC,UAAUC,iBACVC,QAAQC,eACRC,MAAMC,aACNC,gBACAC,SACAC,eAAc,MACS;AACvB,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,YAAAA;AAC7B,QAAM,CAACX,UAAUY,WAAAA,IAAeC,UAA6BZ,eAAAA;AAC7D,QAAM,CAACC,QAAQY,SAAAA,IAAaD,UAA6CV,aAAAA;AACzE,QAAMY,OAAOjB,MAAMkB,KAAK,CAACD,UAASE,oBAAoBF,MAAKG,YAAY,GAAGlB,aAAaA,QAAAA;AACvF,QAAMmB,UAA8BrB,MACjCsB,IAAI,CAACL,UAASE,oBAAoBF,MAAKG,YAAY,CAAA,EACnDG,OAAOC,aAAAA,EACPC,KAAK,CAACC,GAAGC,MAAAA;AACR,UAAMC,QAAQjB,EAAE,kBAAkB;MAAEkB,IAAIH,EAAExB;MAAU4B,cAAcJ,EAAExB;IAAS,CAAA;AAC7E,UAAM6B,QAAQpB,EAAE,kBAAkB;MAAEkB,IAAIF,EAAEzB;MAAU4B,cAAcH,EAAEzB;IAAS,CAAA;AAC7E,WAAO0B,MAAMI,cAAcD,KAAAA;EAC7B,CAAA;AAEF,QAAME,qBAAqB/C,aACzB,OAAOgD,UAAAA;AACL,QAAI,CAACjB,QAAQ,CAACb,QAAQ;AACpB;IACF;AACA,UAAMM,iBAAiB;MAAEO;MAAMb;MAAQV,MAAMwC;IAAM,CAAA;EACrD,GACA;IAACxB;IAAgBO;IAAMb;GAAO;AAGhC,QAAM+B,oBAAoBjD,aACxB,OAAOgB,cAAAA;AACLkC,cAAUhC,QAAQ,sBAAA;;;;;;;;;AAClB,UAAMa,QAAOjB,MAAMkB,KAAK,CAACD,UAASE,oBAAoBF,MAAKG,YAAY,GAAGlB,aAAaA,SAAAA;AACvF,QAAIe,SAAQ,CAACA,MAAKoB,YAAY;AAC5B,YAAM3B,iBAAiB;QAAEO,MAAAA;QAAMb;MAAO,CAAA;IACxC,OAAO;AACLU,kBAAYZ,SAAAA;IACd;EACF,GACA;IAACF;IAAOU;IAAgBN;GAAO;AAGjC,QAAMkC,qBAAqBxD,sBAAsB;IAAEsB;EAAO,CAAA;AAG1D,SACE,gBAAAR,OAAA,cAAC2C,OAAAA;IAAI9C,MAAK;IAAO+C,WAAWC,IAAG,uBAAuB1C,UAAAA;KACnD,CAACkB,OACA,gBAAArB,OAAA,cAAC8C,cAAAA;IAAarB;IAAkBZ;IAAkBkC,UAAUR;OAC1D,CAAC/B,SACH,gBAAAR,OAAA,cAACgD,aAAAA;IAAY3C;IAAgBO;IAAgCmC,UAAU3B;OACrEC,KAAKoB,aACP,gBAAAzC,OAAA,cAACiD,OAAAA;IACC9C,YAAW;IACX+C,WAAAA;IACAC,QAAQ;MAAEzC,MAAMC;IAAY;IAC5BnB,QAAQ6B,KAAKoB;IACbW,QAAO;IACPC,QAAQhB;IACRiB,iBAAiBZ;OAEjB3C,MAAAA;AAGV;AAEA,IAAMiD,cAAc,CAAC,EACnB3C,QACAO,gBACAmC,SAAQ,MACyF;AACjG,QAAM,EAAEhC,EAAC,IAAKC,gBAAeC,YAAAA;AAE7B,SACE,gBAAAjB,OAAA,cAACuD,WAAWC,MAAI;IAACC,OAAO1C,EAAE,mBAAA;IAAsBZ,YAAW;KACzD,gBAAAH,OAAA,cAACuD,WAAWG,OAAK;IACfR,WAAAA;IACAS,eAAY;IACZC,aAAa7C,EAAE,yBAAA;IACfZ,YAAW;MAEb,gBAAAH,OAAA,cAACuD,WAAWM,SAAO;IAAC1D,YAAW;KAC5BE,OACEwB,KAAK,CAACC,GAAGC,MAAAA;AACR,UAAM+B,QAAQC,kBAAkBC,oBAAoBlC,GAAG;MAAEmC,UAAUnC,EAAEoC,OAAOtD;IAAe,CAAA,GAAIG,CAAAA;AAC/F,UAAMoD,QAAQJ,kBAAkBC,oBAAoBjC,GAAG;MAAEkC,UAAUlC,EAAEmC,OAAOtD;IAAe,CAAA,GAAIG,CAAAA;AAC/F,WAAO+C,MAAM1B,cAAc+B,KAAAA;EAC7B,CAAA,EACCzC,IAAI,CAAC0C,UACJ,gBAAApE,OAAA,cAACuD,WAAWc,MAAI;IACdC,KAAKF,MAAMF;IACXK,OAAOR,kBAAkBC,oBAAoBI,OAAO;MAAEH,UAAUG,MAAMF,OAAOtD;IAAe,CAAA,GAAIG,CAAAA;IAChGyD,UAAU,MAAMzB,SAASqB,KAAAA;IACzBjE,YAAW;KAEX,gBAAAH,OAAA,cAACyE,QAAAA;IAAK7B,WAAU;KACbmB,kBAAkBC,oBAAoBI,OAAO;IAAEH,UAAUG,MAAMF,OAAOtD;EAAe,CAAA,GAAIG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAO1G;AAEA,IAAM+B,eAAe,CAAC,EACpBrB,SACAZ,SACAkC,SAAQ,MAIiC;AACzC,QAAM,EAAEhC,EAAC,IAAKC,gBAAeC,YAAAA;AAE7B,SACE,gBAAAjB,OAAA,cAACuD,WAAWC,MAAI;IAACC,OAAO1C,EAAE,oBAAA;IAAuBZ,YAAW;KAC1D,gBAAAH,OAAA,cAACuD,WAAWG,OAAK;IACfR,WAAAA;IACAS,eAAY;IACZC,aAAa7C,EAAE,0BAAA;IACfZ,YAAW;MAEb,gBAAAH,OAAA,cAACuD,WAAWM,SAAO;IAAC1D,YAAW;KAC5BsB,QAAQC,IAAI,CAACgD,WACZ,gBAAA1E,OAAA,cAACuD,WAAWc,MAAI;IACdC,KAAKI,OAAOpE;IACZiE,OAAOxD,EAAE,kBAAkB;MAAEkB,IAAIyC,OAAOpE;MAAU4B,cAAcwC,OAAOpE;IAAS,CAAA;IAChFkE,UAAU,MAAMzB,SAAS2B,OAAOpE,QAAQ;IACxCH,YAAW;KAEX,gBAAAH,OAAA,cAACyE,QAAAA;IAAK7B,WAAU;KACd,gBAAA5C,OAAA,cAAC2E,MAAAA;IAAKC,MAAM/D,UAAU6D,OAAOpE,QAAQ,EAAEsE,QAAQ;IAA4BC,MAAM;MAChF9D,EAAE,kBAAkB;IAAEkB,IAAIyC,OAAOpE;IAAU4B,cAAcwC,OAAOpE;EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAOxF;;;ACtMA,SAASwE,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,qBAAqBD,KAAK,MAAM,OAAO,qCAAA,CAAA;AAC7C,IAAME,kBAAkBF,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC1C,IAAMG,iBAAiBH,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMI,YAAYJ,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMK,eAAeL,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMM,SAASN,KAAK,MAAM,OAAO,uBAAA,CAAA;AACjC,IAAMO,gBAAgBP,KAAK,MAAM,OAAO,yBAAA,CAAA;AACxC,IAAMQ,aAAaR,KAAK,MAAM,OAAO,sBAAA,CAAA;AACrC,IAAMS,cAAcT,KAAK,MAAM,OAAO,6BAAA,CAAA;;;;AFWtC,IAAMU,uBAAuB,GAAGC,YAAAA;AAMhC,IAAMC,qBAAqB,CAAC,EACjCC,QACAC,UACAC,MACAC,gBAAgBC,gBAAe,MACP;AACxB,QAAMC,WAAWC,OAAiC,IAAA;AAClD,QAAMC,UAAUC,kBAAAA;AAChB,QAAM,EAAEC,EAAC,IAAKC,gBAAeZ,YAAAA;AAC7B,QAAMa,SAASC,WAAAA;AACf,QAAMC,SAASC,UAAAA;AACf,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,QAAMC,QAAQC,gBAAgBC,kBAAkBC,UAAU;AAE1D,QAAMC,UAAUC,aACd,CAACtB,cACCM,QAAQiB,QAAQC,oBAAoBC,aAAaC,QAAQ,EAAEC,KAAK,CAAC,EAAEC,GAAE,MAAOA,OAAO5B,SAAAA,GAAW6B,YAAY,CAAC,GAC7G;IAACvB;GAAQ;AAGX,QAAMwB,qBAAqBR,aACzB,OAAO,EACLS,MACAhC,QAAQiC,SACRC,OAAO,CAAC,EAAC,MAKV;AACC,UAAMlC,UAASmC,QAAQF,OAAAA,IAClBA,QAAQG,WAAWC,eAAepC,QAAQ,GAAGD,SAC9CiC;AACJ,QAAI,CAACjC,SAAQ;AAEX;IACF;AAGAK,aAASiC,SAASC,MAAAA;AAElB,UAAMC,QAAQL,QAAQnC,OAAAA,IAAUA,UAASyC,SAASzC,OAAAA;AAClD0C,IAAAA,WAAUF,OAAO,iBAAA;;;;;;;;;AACjB,UAAMG,SAAS,MAAM3B,SAASgB,KAAKY,UAAUV,MAAM;MAAEM;IAAM,CAAA,CAAA;AAC3D,UAAMK,SAASF,OAAOT,MAAMW;AAC5B,QAAIC,iBAAiBD,MAAAA,GAAS;AAC5B,YAAME,kBAAkBC,cAAaC,YAAYC,WAAW;QAAElD,QAAAA;QAAQ6C;MAAO,CAAA;AAC7E,YAAM1C,iBAAiBC,oBAAoB,MAAM;AACjD,UAAID,eAAe0C,MAAAA,GAAS;AAC1B,cAAM7B,SAASmC,KAAKJ,iBAAiBK,MAAMC,cAAaC,MAAM;UAAEC,MAAM;QAAO,CAAA,CAAA,CAAA;MAC/E,OAAO;AACL,cAAMvC,SAAS+B,eAAAA;MACjB;IACF;EACF,GACA;IAAC/B;IAAUM;GAAQ;AAGrB;;;IAGE,gBAAAkC,OAAA,cAACC,OAAOC,SAAO;MAACC,YAAW;OACzB,gBAAAH,OAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,OAAA,cAACC,OAAOM,OAAK,MAAEtD,EAAE,4BAAA,CAAA,GACjB,gBAAA+C,OAAA,cAACC,OAAOO,OAAK;MAACC,SAAAA;OACZ,gBAAAT,OAAA,cAACU,SAAAA;MAAOC,KAAK9D;MAAU+D,SAAQ;MAAOC,SAAQ;MAAQC,WAAAA;OACpD,gBAAAd,OAAA,cAACe,OAAAA;MAAKC,MAAK;MAAiBC,MAAM;WAKxC,gBAAAjB,OAAA,cAACkB,mBAAAA;MACCf,YAAW;MACXzC;MACAL;MACAb;MACAC;MACAC;MACAyE,gBAAgBhE,OAAOE,OAAO+D,QAAQ/C;MACtCP;MACAuD,gBAAgB9C;;;AAIxB;;;AGhHA,SAAS+C,cAAc;AACvB,OAAOC,UAASC,eAAAA,cAAaC,UAAAA,eAAc;AAE3C,SAASC,gBAAAA,eAAcC,gBAAAA,eAAcC,uBAAAA,4BAA2B;AAEhE,SAASC,UAAAA,SAAQC,UAAAA,SAAQC,QAAAA,OAAMC,kBAAAA,uBAAsB;AACrD,SAASC,QAAAA,aAAY;AAKd,IAAMC,sBAAsB,GAAGC,YAAAA;AAGtC,IAAMC,iBAA4B;EAAEC,iBAAiB;AAAK;AAEnD,IAAMC,oBAAoB,MAAA;AAC/B,QAAMC,WAAWC,QAAiC,IAAA;AAClD,QAAM,EAAEC,EAAC,IAAKC,gBAAeP,YAAAA;AAC7B,QAAM,EAAEQ,SAAQ,IAAKC,qBAAAA;AAErB,QAAMC,oBAAoBC,aACxB,OAAOC,SAAAA;AACL,UAAMC,UAAUC,OAAOC,IAAI,aAAA;AACzB,YAAM,EAAEC,MAAK,IAAK,OAAOR,SAASS,cAAaC,YAAYC,QAAQP,IAAAA,CAAAA;AACnE,aAAOJ,SAASS,cAAaG,cAAaC,iBAAiB;QAAEC,MAAM;QAAaC,SAASP,MAAMQ;MAAG,CAAA,CAAA;AAClG,aAAOhB,SAASS,cAAaC,YAAYO,kBAAkB;QAAEC,QAAQV;MAAM,CAAA,CAAA;IAC7E,CAAA;AACA,UAAMF,OAAOa,WAAWd,OAAAA;EAC1B,GACA;IAACL;GAAS;AAGZ;;;IAGE,gBAAAoB,OAAA,cAACC,QAAOC,SAAO;MAACC,YAAW;OACzB,gBAAAH,OAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,OAAA,cAACC,QAAOM,OAAK,MAAE7B,EAAE,2BAAA,CAAA,GACjB,gBAAAsB,OAAA,cAACC,QAAOO,OAAK;MAACC,SAAAA;OACZ,gBAAAT,OAAA,cAACU,SAAAA;MAAOC,KAAKnC;MAAUoC,SAAQ;MAAOC,SAAQ;MAAQC,WAAAA;OACpD,gBAAAd,OAAA,cAACe,OAAAA;MAAKC,MAAK;MAAiBC,MAAM;WAIxC,gBAAAjB,OAAA,cAACI,OAAAA;MAAIE,WAAU;OACb,gBAAAN,OAAA,cAACkB,OAAAA;MACCC,QAAO;MACPhB,YAAW;MACXW,WAAAA;MACAM,QAAQ/C;MACRgD,QAAQC;MACRC,QAAQzC;;;AAKlB;;;ACzDA,OAAO0C,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,iBAAiBC,MAAAA,WAAU;AAK1C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAkC;AAC3E,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,YAAAA;AAE7B,SACE,gBAAAC,OAAA,cAACC,OAAAA;IACCC,MAAK;IACLC,WAAWC,IAAGC,aAAa,4DAAA;IAC3BC,eAAY;KAEZ,gBAAAN,OAAA,cAACO,KAAAA;IACCL,MAAK;IACLC,WAAWC,IACTI,iBACA,0GAAA;KAGDZ,WAAWa,QAAQZ,EAAE,0BAAA,CAAA,CAAA;AAI9B;;;AC5BA,OAAOa,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAKxB,IAAMC,oBAAoB,CAAC,EAAEC,WAAU,MAAkC;AAC9E,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,YAAAA;AAE7B,SACE,gBAAAC,OAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,gBAAAF,OAAA,cAACG,QAAAA;IAAKD,WAAU;KAAYN,WAAWQ,QAAQP,EAAE,0BAAA,CAAA,CAAA;AAGvD;;;ACfA,OAAOQ,WAASC,eAAAA,oBAAmB;AAEnC,SAASC,gBAAAA,eAAcC,gBAAAA,eAAcC,aAAaC,uBAAAA,4BAA2B;AAC7E,SAASC,WAAW;AACpB,SAASC,2BAA2B;AACpC,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,UAAAA,SAAQC,kBAAAA,wBAAsB;AACvC,SAASC,iBAAsC;;AAIxC,IAAMC,cAAc,GAAGC,YAAAA;AAMvB,IAAMC,aAAa,CAAC,EAAEC,sBAAsBC,QAAQ,GAAGC,MAAAA,MAAwB;AACpF,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,QAAMC,SAASC,WAAAA;AACf,QAAM,EAAEC,MAAK,IAAKC,YAAAA;AAClB,QAAM,EAAEC,EAAC,IAAKC,iBAAeb,YAAAA;AAE7B,QAAMc,aAAaC,aACjB,OAAOC,WAAAA;AACL,QAAIA,QAAQC,UAAU;AACpB,YAAMC,QAAQC,IAAI;QAChBb,SACEc,cAAaC,cAAaC,UAAU;UAClCC,MAAM;UACNC,SAAS;YACPC,IAAI,GAAGzB,YAAAA;YACP0B,UAAU;YACVC,OAAO;cAAC;cAAsB;gBAAEC,IAAI5B;cAAa;;YACjD6B,YAAY;cAAC;cAAiB;gBAAED,IAAI5B;cAAa;;UACnD;QACF,CAAA,CAAA;QAEFM,SACEc,cAAaC,cAAaS,cAAc;UACtCP,MAAM;UACNQ,SAAS;YACPC,OAAO;UACT;QACF,CAAA,CAAA;OAEH;IACH;AAEA,UAAMC,QAAQjB,QAAQC,WAAWT,OAAO0B,OAAOC,IAAInB,OAAOC,QAAQ,IAAImB;AACtE,QAAI,CAACH,OAAO;AACVI,UAAIC,KAAK,mBAAmBtB,QAAQC,UAAAA;;;;;;AACpC;IACF;AAEA,UAAMX,SAASc,cAAaC,cAAakB,iBAAiB;MAAEhB,MAAM;MAAaC,SAASS,MAAMR;IAAG,CAAA,CAAA;AAKjG,UAAMe,SAASxB,QAAQwB,WAAWtC,uBAAuB+B,OAAOR,KAAKW;AACrE,QAAII,QAAQ;AAGV,YAAM9B,MAAM+B,YAAY;QAAED;MAAO,CAAA,EAAGE,MAAM,MAAA;MAAO,CAAA;AACjD,YAAMxB,QAAQC,IAAI;QAChBb,SAASc,cAAaC,cAAasB,MAAM;UAAEpB,MAAM;UAAQC,SAAS;YAACgB;;QAAQ,CAAA,CAAA;QAC3ElC,SAASc,cAAaC,cAAauB,QAAQ;UAAErB,MAAM;UAAcC,SAASgB;QAAO,CAAA,CAAA;OAClF;IACH;AAEA,UAAMrC,SAASa,MAAAA;AAEf,QAAIiB,OAAO;AACT,YAAM3B,SACJc,cAAayB,oBAAoBC,WAAW;QAAEC,MAAM;QAAcC,YAAY;UAAEC,SAAShB,MAAMR;QAAG;MAAE,CAAA,CAAA;IAExG;EACF,GACA;IAACnB;IAAUE;IAAQE;GAAM;AAG3B,SACE,gBAAAwC,QAAA,cAACC,QAAOC,SAAO,MACb,gBAAAF,QAAA,cAACC,QAAOE,OAAK;IAACC,YAAW;KAAW1C,EAAE,oBAAoB;IAAEgB,IAAI;EAAK,CAAA,CAAA,GACrE,gBAAAsB,QAAA,cAACK,WAAAA;IACE,GAAGnD;IACJoD,kBAAkB,gBAAAN,QAAA,cAACC,QAAOM,OAAK;MAACC,SAAAA;;IAChCC,kBAAkB,gBAAAT,QAAA,cAACC,QAAOM,OAAK;MAACC,SAAAA;;IAChCvD,QAAQW;;AAIhB;;;AC9FA,SAAS8C,cAAc;AACvB,OAAOC,aAAW;AAElB,SAAkCC,YAAAA,iBAAgB;AAClD,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,cAAcC,qBAAAA,oBAAmBC,kBAAAA,wBAAsB;AAKzD,IAAMC,aAAa,CAAC,EAAEC,OAAM,MAAuC;AACxE,QAAM,EAAEC,EAAC,IAAKC,iBAAeC,YAAAA;AAC7B,QAAMC,SAASC,WAAAA;AACf,QAAMC,QAAQC,UAASP,MAAAA;AACvB,QAAMQ,YAAYF,QAAQG,oBAAoBH,OAAO;IAAEI,UAAUN,OAAOO,OAAOC,YAAYN;EAAM,CAAA,IAAK;AACtG,SAAOA,QACL,gBAAAO,QAAA,cAAAA,QAAA,UAAA,MACE,gBAAAA,QAAA,cAACC,aAAaC,WAAS,IAAA,GACvB,gBAAAF,QAAA,cAACC,aAAaE,YAAU,MAAEf,EAAE,mBAAA,CAAA,GAC5B,gBAAAY,QAAA,cAACI,MAAAA;IAAGC,WAAU;KACZ,gBAAAL,QAAA,cAACM,MAAAA;IAAGD,WAAU;KAAsEjB,EAAE,gBAAA,CAAA,GACtF,gBAAAY,QAAA,cAACO,MAAAA;IAAGF,WAAU;KACZ,gBAAAL,QAAA,cAACQ,QAAAA;IAAOH,WAAU;MACjBI,mBAAkBd,WAAWP,CAAAA,CAAAA,CAAAA,CAAAA,IAIlC;AACN;;;AC5BA,SAASsB,wBAAwBC,eAAAA,cAAaC,eAAe;AAC7D,OAAOC,WAASC,aAAAA,YAAWC,YAAAA,iBAAgB;AAE3C,SAASC,gBAAgB;AAEzB,SAASC,SAASC,kBAAAA,wBAAsB;AACxC,SAASC,WAAAA,UAASC,MAAAA,KAAIC,uBAAuBC,mBAAmB;;UAI3DC,SAAAA;;;;GAAAA,WAAAA,SAAAA,CAAAA,EAAAA;AAOE,IAAMC,oBAAoB,CAAC,EAAEC,GAAE,MAAwB;AAC5D,QAAM,EAAEC,EAAC,IAAKC,iBAAeC,YAAAA;AAC7B,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,UAAS,KAAA;AACrD,QAAM,CAACC,QAAQC,gBAAAA,IAAoBF,UAAAA,CAAAA;AACnC,QAAM,CAACG,YAAYC,aAAAA,IAAiBJ,UAAAA,CAAAA;AACpC,QAAMK,aAAaC,SAASJ,kBAAkB,GAAA;AAe9CK,EAAAA,WAAU,MAAA;AAERH,kBAAcH,MAAAA;AAEd,QAAIE,eAAeF,UAAUA,WAAAA,GAAqC;AAChEF,wBAAkB,IAAA;AAClB,YAAMS,UAAUC,WAAW,MAAMV,kBAAkB,KAAA,GAAQ,GAAA;AAC3D,aAAO,MAAMW,aAAaF,OAAAA;IAC5B;EACF,GAAG;IAACP;GAAO;AAEX,UAAQA,QAAAA;IACN,KAAA;AACE,aACE,gBAAAU,QAAA,cAACC,OAAAA;QAAIC,WAAU;SACb,gBAAAF,QAAA,cAACG,SAAAA;QAAQD,WAAWE,IAAGC,SAAQ,CAAA,GAAI,MAAA;UACnC,gBAAAL,QAAA,cAACM,QAAAA;QAAKJ,WAAWE,IAAG,WAAWG,WAAAA;SAAevB,EAAE,yBAAA,CAAA,CAAA;IAGtD,KAAA;AACE,aACE,gBAAAgB,QAAA,cAACC,OAAAA;QAAIC,WAAU;SACb,gBAAAF,QAAA,cAACQ,wBAAAA;QAAuBN,WAAWE,IAAGC,SAAQ,CAAA,GAAI,MAAA;UAClD,gBAAAL,QAAA,cAACM,QAAAA;QAAKJ,WAAWE,IAAG,WAAWK,qBAAAA;SAAyBzB,EAAE,2BAAA,CAAA,CAAA;IAGhE,KAAA;IACA;AACE,aACE,gBAAAgB,QAAA,cAACU,QAAQC,MAAI;QAACC,eAAe;SAC3B,gBAAAZ,QAAA,cAACU,QAAQG,SAAO;QAACC,MAAK;QAASZ,WAAU;SACvC,gBAAAF,QAAA,cAACe,cAAAA;QAAYb,WAAWE,IAAGC,SAAQ,CAAA,GAAI,MAAA;UACtClB,kBACC,gBAAAa,QAAA,cAACM,QAAAA;QAAKJ,WAAWE,IAAG,WAAWK,qBAAAA;SAAyBzB,EAAE,yBAAA,CAAA,CAAA,GAG9D,gBAAAgB,QAAA,cAACU,QAAQM,QAAM,MACb,gBAAAhB,QAAA,cAACU,QAAQO,SAAO,MACbjC,EAAE,2BAAA,GACH,gBAAAgB,QAAA,cAACU,QAAQQ,OAAK,IAAA,CAAA,CAAA,CAAA;EAK1B;AACF;;;AClFA,OAAOC,aAAW;AAElB,SAASC,gBAAAA,eAAcC,gBAAAA,eAAcC,uBAAAA,4BAA2B;AAChE,SAASC,cAAAA,aAAYC,kBAAAA,wBAAsB;AAKpC,IAAMC,oBAAoB,GAAGC,YAAAA;AAE7B,IAAMC,kBAAkB,MAAA;AAC7B,QAAM,EAAEC,EAAC,IAAKC,iBAAeH,YAAAA;AAC7B,QAAM,EAAEI,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,SACE,gBAAAC,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,QAAA,cAACI,aAAAA;IACCC,SAAQ;IACRC,OAAOX,EAAE,oBAAA;IACTY,MAAK;IACLC,SAAS,MAAA;AACP,WAAKV,SAASW,cAAaC,YAAYC,eAAe,CAAA;AACtD,WAAKb,SACHW,cAAaG,cAAaC,eAAe;QAAEC,MAAM;QAAWC,SAAS;UAAEC,UAAU;UAAIC,OAAO;QAAM;MAAE,CAAA,CAAA;IAExG;IACAC,eAAY;MAEd,gBAAAlB,QAAA,cAACI,aAAAA;IACCC,SAAQ;IACRC,OAAOX,EAAE,kBAAA;IACTY,MAAK;IACLC,SAAS,MAAA;AACP,WAAKV,SAASW,cAAaC,YAAYS,IAAI,CAAA;AAC3C,WAAKrB,SACHW,cAAaG,cAAaC,eAAe;QAAEC,MAAM;QAAWC,SAAS;UAAEC,UAAU;UAAIC,OAAO;QAAM;MAAE,CAAA,CAAA;IAExG;IACAC,eAAY;;AAIpB;;;ACzCA,OAAOE,WAASC,eAAAA,cAAaC,UAAAA,SAAQC,YAAAA,iBAAgB;AAGrD,SAASC,OAAAA,YAAW;AACpB,SAASC,UAAAA,SAAQC,SAAAA,QAAOC,SAASC,kBAAAA,wBAAsB;;AAIhD,IAAMC,wBAAwB,GAAGC,YAAAA;AAEjC,IAAMC,sBAAsB,CAAC,EAAEC,QAAQC,IAAG,MAAmC;AAClF,QAAM,EAAEC,EAAC,IAAKC,iBAAeL,YAAAA;AAC7B,QAAMM,aAAaC,QAA0B,IAAA;AAE7C,QAAML,SAASC;AAEf,QAAM,CAACK,MAAMC,OAAAA,IAAWC,UAASR,OAAOM,QAAQN,OAAOS,SAAS,EAAA;AAEhE,QAAMC,aAAaC,aAAY,MAAA;AAC7B,QAAI;AACFX,aAAOM,OAAOA;IAChB,QAAQ;AACN,UAAI;AACFN,eAAOS,QAAQH;MACjB,SAASM,KAAK;AACZC,QAAAA,KAAIC,MAAM,2BAA2B;UAAEF;QAAI,GAAA;;;;;;MAC7C;IACF;EACF,GAAG;IAACZ;IAAQM;GAAK;AAEjB,SACE,gBAAAS,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,QAAA,cAACI,OAAMC,MAAI,MACT,gBAAAL,QAAA,cAACI,OAAME,OAAK;IAACC,QAAAA;KAAQpB,EAAE,mBAAA,CAAA,GACvB,gBAAAa,QAAA,cAACI,OAAMI,WAAS;IACdC,aAAatB,EAAE,0BAAA;IACfuB,OAAOnB;IACPoB,eAAY;IACZC,UAAU,CAAC,EAAEC,QAAQ,EAAEH,MAAK,EAAE,MAAOlB,QAAQkB,KAAAA;IAC7CI,WAAW,CAAC,EAAEC,IAAG,MAAOA,QAAQ,WAAW1B,WAAW2B,SAASC,MAAAA;QAIrE,gBAAAjB,QAAA,cAACkB,QAAQC,OAAK;IAACC,SAAAA;KACb,gBAAApB,QAAA,cAACqB,SAAAA;IAAOC,KAAKjC;IAAYkC,YAAW;IAAeC,SAAS7B;KACzDR,EAAE,cAAc;IAAEsC,IAAI;EAAK,CAAA,CAAA,CAAA,CAAA;AAKtC;;;ACnDA,OAAOC,WAASC,eAAAA,cAAaC,UAAAA,SAAQC,YAAAA,iBAAgB;AAGrD,SAASC,UAAAA,SAAQC,SAAAA,QAAOC,WAAAA,UAASC,kBAAAA,wBAAsB;AAIhD,IAAMC,uBAAuB,GAAGC,YAAAA;AAEhC,IAAMC,qBAAqB,CAAC,EAAEC,MAAK,MAAoB;AAC5D,QAAM,EAAEC,EAAC,IAAKC,iBAAeJ,YAAAA;AAC7B,QAAMK,aAAaC,QAA0B,IAAA;AAC7C,QAAM,CAACC,MAAMC,OAAAA,IAAWC,UAASP,MAAMQ,WAAWH,QAAQ,EAAA;AAE1D,QAAMI,aAAaC,aAAY,MAAA;AAC7BV,UAAMQ,WAAWH,OAAOA;EAC1B,GAAG;IAACL;IAAOK;GAAK;AAGhB,SACE,gBAAAM,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB,gBAAAH,QAAA,cAACI,OAAMC,MAAI,MACT,gBAAAL,QAAA,cAACI,OAAME,OAAK;IAACC,QAAAA;KAAQjB,EAAE,kBAAA,CAAA,GACvB,gBAAAU,QAAA,cAACI,OAAMI,WAAS;IACdC,cAAcpB,MAAMQ,WAAWH,QAAQ;IACvCgB,aAAapB,EAAE,qBAAA;IACfqB,UAAU,CAAC,EAAEC,QAAQ,EAAEC,MAAK,EAAE,MAAOlB,QAAQkB,KAAAA;;;IAG7CC,WAAW,CAAC,EAAEC,IAAG,MAAOA,QAAQ,WAAWvB,WAAWwB,SAASC,MAAAA;QAIrE,gBAAAjB,QAAA,cAACkB,SAAQC,OAAK;IAACC,SAAAA;KACb,gBAAApB,QAAA,cAACqB,SAAAA;IAAOC,KAAK9B;IAAY+B,YAAW;IAAeC,SAAS1B;KACzDR,EAAE,cAAc;IAAEmC,IAAI;EAAK,CAAA,CAAA,CAAA,CAAA;AAKtC;;;ACzCA,OAAOC,aAAW;AAElB,SAASC,gBAAAA,eAAcC,uBAAAA,4BAA2B;AAElD,SAASC,cAAAA,aAAYC,kBAAAA,wBAAsB;AAKpC,IAAMC,mBAAmB,CAAC,EAAEC,MAAK,MAAoB;AAC1D,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AAEtC,SAAO,gBAAAC,QAAA,cAACC,sBAAAA;IAAqBC,SAAS,MAAMJ,SAASK,cAAaC,YAAYC,OAAO;MAAET;IAAM,CAAA,CAAA;;AAC/F;AAGO,IAAMK,uBAAuB,CAAC,EAAEC,QAAO,MAA2B;AACvE,QAAM,EAAEI,EAAC,IAAKC,iBAAeC,YAAAA;AAE7B,SACE,gBAAAR,QAAA,cAACS,aAAAA;IACCC,eAAY;IACZC,MAAK;IACLC,OAAON,EAAE,mBAAA;IACTJ;;AAGN;;;AC3BA,OAAOW,WAASC,eAAAA,eAAaC,aAAAA,YAAWC,YAAAA,iBAAgB;AAExD,SAASC,eAAAA,cAAaC,qBAAqB;AAC3C,SAASC,oBAAoB;AAE7B,SAASC,WAAWC,aAAAA,kBAAiB;AACrC,SAASC,YAAAA,WAAUC,YAA8BC,oBAAAA,yBAAwB;AACzE,SAAwBC,mBAAmB;AAC3C,SACEC,QACAC,aACAC,iBAGAC,WAAAA,UACAC,kBAAAA,kBACAC,QAAAA,OACAC,YAAAA,WACAC,uBACK;AACP,SAASC,gBAAgBC,aAAaC,oBAA8C;AACpF,SAASC,YAAYC,qBAAqB;;;ACrB1C,SAASC,aAAAA,YAAWC,YAAAA,iBAAgB;AAa7B,IAAMC,UAAU,CAACC,OAAcC,IAAaC,YAAAA;AACjD,QAAM,CAACC,WAAWC,YAAAA,IAAgBC,UAA+BJ,KAAKD,MAAMM,QAAQ;IAAEC,QAAQN;EAAG,CAAA,IAAKO,MAAAA;AAEtGC,EAAAA,WAAU,MAAA;AACR,QAAI,CAACR,MAAME,WAAW;AACpBC,mBAAaI,MAAAA;IACf;AAEA,QAAIL,WAAWO,GAAG,EAAC,MAAOT,MAAM,CAACA,IAAI;AACnC;IACF;AAGA,UAAMU,QAAQC,sBAAsB,YAAA;AAClC,UAAI;AACF,cAAMC,OAAO,MAAMb,MAAMc,YAAY;UAAEP,QAAQN;QAAG,GAAG;UAAEC;QAAQ,CAAA;AAC/D,YAAIW,MAAM;AACRT,uBAAaS,IAAAA;QACf;MACF,QAAQ;MAAC;IACX,CAAA;AAEA,WAAO,MAAME,qBAAqBJ,KAAAA;EACpC,GAAG;IAACX;IAAOC;IAAIC;IAASC;GAAU;AAElC,SAAOA;AACT;;;ADVA,IAAMa,mBAAmB;AACzB,IAAMC,oBAAoB;AAG1B,IAAMC,YAAY,IAAIC,WAAyCC,UAAUC,IAAI;AAG7E,IAAMC,UAAU,CAACC,aAAuBA,SAASC,SAASC,eAAeC,aAAaH,SAASI,YAAYC,MAAK,CAAA;AAEzG,IAAMC,gBAAgB,CAAC,EAAEC,QAAQC,SAAQ,MAA6C;AAE3F,QAAMC,aAAaC,cAAcC,kBAAkBC,YAAY;AAC/D,QAAMC,SAASC,WAAAA;AACf,QAAMd,WAAWe,YAAAA;AACjB,QAAMC,QAAQR,WAAWK,OAAOI,OAAOC,IAAIV,QAAAA,IAAYW,UAASZ,MAAAA;AAChE,QAAMa,eAAeC,WAAWL,OAAOM,GAAAA;AAEvC,QAAM,CAACC,SAASC,SAAAA,IAAaC,UAASC,KAAKC,IAAG,CAAA;AAG9CC,EAAAA,WAAU,MAAA;AACR,UAAMC,WAAWC,YAAY,MAAMN,UAAUE,KAAKC,IAAG,CAAA,GAAKlC,gBAAAA;AAC1D,WAAO,MAAMsC,cAAcF,QAAAA;EAC7B,GAAG,CAAA,CAAE;AAEL,QAAMG,eAAeC,cAAY,CAACC,WAAwBA,OAAOC,aAAa,GAAG,CAAA,CAAE;AACnF,QAAMC,kBAAkBH,cACtB,CAACC,WAAwB,CAAClC,UAAUI,YAAYiC,OAAOH,OAAOlC,SAASI,WAAW,GAClF;IAACJ,UAAUI;GAAY;AAKzB,MAAI,CAACJ,YAAY,CAACS,cAAc,CAACO,OAAO;AACtC,WAAO;EACT;AAEA,QAAMsB,uBAAuB7B,WAAW8B,gBAAgBC,kBAAiBjC,MAAAA,CAAAA,KAAYZ;AAErF,QAAM8C,mBAAmBrB,aACtBsB,OAAO,CAACR,WAAWF,aAAaE,MAAAA,KAAWE,gBAAgBF,MAAAA,CAAAA,EAC3DQ,OAAO,CAACR,WAAWI,qBAAqBK,IAAIT,OAAOlC,SAASI,WAAW,CAAA,EACvEwC,IAAI,CAACV,WAAAA;AACJ,UAAMW,aAAaP,qBAAqBpB,IAAIgB,OAAOlC,SAASI,WAAW;AACvE,UAAM0C,WAAWD,YAAYC,YAAY;AACzC,UAAMC,oBAAoBF,YAAYE,qBAAqB;AAE3D,WAAO;MACL,GAAGb;MACHa;MACAD;IACF;EACF,CAAA,EACCE,SAAS,CAACC,GAAGC,MAAMD,EAAEH,WAAWI,EAAEJ,QAAQ;AAE7C,SAAO,gBAAAK,QAAA,cAACC,cAAAA;IAAaC,SAASZ;;AAChC;AAiBO,IAAMW,eAAe,CAACE,UAAAA;AAC3B,QAAM,EAAEC,OAAO,GAAGC,cAAa,IAAKF;AACpC,QAAMD,UAAUI,gBAAgBH,MAAMD,SAAS,MAAM,CAAA,CAAE;AAEvD,MAAIA,QAAQK,WAAW,GAAG;AACxB,WAAO;EACT;AAEA,SACE,gBAAAP,QAAA,cAACQ,YAAYC,MAAI;IAACL;IAAYM,YAAW;IAAcC,eAAY;KAChET,QAAQU,MAAM,GAAG,CAAA,EAAGnB,IAAI,CAACV,QAAQ8B,MAChC,gBAAAb,QAAA,cAACc,SAAQL,MAAI;IAACtC,KAAKY,OAAOlC,SAASI,YAAYC,MAAK;KAClD,gBAAA8C,QAAA,cAACc,SAAQC,SAAO,MACd,gBAAAf,QAAA,cAACgB,iBAAAA;IACCnE,UAAUkC,OAAOlC;IACjBoE,OAAAA;IACAC,OAAOnC,OAAOa;IACduB,OAAOjB,QAAQK,SAASM;IACxBO,SAAS,MAAMf,gBAAgBtB,MAAAA;OAGnC,gBAAAiB,QAAA,cAACc,SAAQO,QAAM,MACb,gBAAArB,QAAA,cAACc,SAAQQ,SAAO;IAACC,MAAK;KACpB,gBAAAvB,QAAA,cAACwB,QAAAA,MAAM5E,QAAQmC,OAAOlC,QAAQ,CAAA,GAC9B,gBAAAmD,QAAA,cAACc,SAAQW,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,GAMrBvB,QAAQK,SAAS,KAChB,gBAAAP,QAAA,cAACc,SAAQL,MAAI,MACX,gBAAAT,QAAA,cAACc,SAAQC,SAAO,MACd,gBAAAf,QAAA,cAAC0B,gBAAgBjB,MAAI;IAACkB,QAAO;KAC3B,gBAAA3B,QAAA,cAAC4B,OAAOC,OAAK;IAACC,OAAO;MAAEC,QAAQ7B,QAAQK,SAAS;IAAE;KAEhD,gBAAAP,QAAA,cAAC4B,OAAOI,UAAQ;IAACC,MAAM,IAAI/B,QAAQK,SAAS,CAAA;SAIlD,gBAAAP,QAAA,cAACc,SAAQO,QAAM,MACb,gBAAArB,QAAA,cAACc,SAAQQ,SAAO;IAACC,MAAK;KACpB,gBAAAvB,QAAA,cAACc,SAAQW,OAAK,IAAA,GACd,gBAAAzB,QAAA,cAACkC,OAAAA;IAAKxB,YAAW;KACdR,QAAQT,IAAI,CAACV,WACZ,gBAAAiB,QAAA,cAACmC,UAAS1B,MAAI;IACZtC,KAAKY,OAAOlC,SAASI,YAAYC,MAAK;IACtCwD,YAAW;IACXU,SAAS,MAAMf,gBAAgBtB,MAAAA;IAC/B4B,eAAY;KAGZ,gBAAAX,QAAA,cAACgB,iBAAAA;IAAgBnE,UAAUkC,OAAOlC;IAAUuF,UAAAA;IAASlB,OAAOnC,OAAOa;;AAUvF;AAWA,IAAMoB,kBAAkB,CAAC,EAAEnE,UAAUuF,UAAUlB,OAAOD,OAAOE,OAAOC,QAAO,MAAuB;AAChG,QAAMX,OAAOQ,QAAQS,gBAAgBjB,OAAOmB,OAAOnB;AACnD,QAAMkB,SAAST,QAAQ,YAAY;AACnC,QAAMmB,gBAAgBC,cAAczF,SAASI,WAAW;AACxD,SACE,gBAAA+C,QAAA,cAACS,MAAAA;IAAKkB;IAAgBY,KAAK1F,SAASC,SAAS0F,MAAMD,OAAOF,cAAcE;KACtE,gBAAAvC,QAAA,cAAC4B,OAAOC,OAAK;IACXlB,eAAY;IACZ8B,eAAad;IACZ,GAAIR,QAAQ;MAAEW,OAAO;QAAEC,QAAQZ;MAAM;IAAE,IAAI,CAAC;IAC7CC,SAAS,MAAMA,UAAAA;KAEf,gBAAApB,QAAA,cAAC4B,OAAOI,UAAQ;IAACC,MAAMpF,SAASC,SAAS0F,MAAME,SAASL,cAAcK;OAEvEN,YAAY,gBAAApC,QAAA,cAAC4B,OAAOe,OAAK;IAACjC,YAAW;KAA0B9D,QAAQC,QAAAA,CAAAA,CAAAA;AAG9E;AAQO,IAAM+F,oBAAoB,CAAC,EAAEC,IAAIC,MAAMC,QAAO,MAA0B;AAC7E,QAAM,EAAEC,cAAcC,YAAYC,UAAS,IAAKC,aAAaN,EAAAA;AAC7D,QAAMO,aAAaJ,gBAAgBC,cAAcC;AAKjD,QAAM,EAAEG,MAAK,IAAKC,aAAAA;AAClB,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,mBAAmBF,SAASG,GAAG,EAAC;AACtC,QAAMC,OAAOC,QAAQP,OAAOI,gBAAAA;AAC5B,QAAMI,mBAAmB,CAACf,QAAQ,CAACM,cAAcP,MAAMc,OAAOA,KAAKG,SAASjB,EAAAA,IAAM;AAElF,QAAMkB,mBAAmB,CAAChB,aAAAA;AACxB,UAAMiB,SAASzF,KAAKC,IAAG;AACvB,WAAOyF,MAAMC,KAAwBnB,SAAQoB,OAAM,CAAA,EAAI5E,OACrD,CAAC6E,WAAWJ,SAASI,OAAOzE,WAAWpD,iBAAAA;EAE3C;AAEA,QAAM,CAAC8H,eAAeC,gBAAAA,IAAoBhG,UAASyE,UAAUgB,iBAAiBhB,OAAAA,IAAW,CAAA,CAAE;AAE3FtE,EAAAA,WAAU,MAAA;AACR,QAAIsE,SAAS;AACXuB,uBAAiBP,iBAAiBhB,OAAAA,CAAAA;AAClC,YAAMrE,WAAWC,YAAY,MAAA;AAC3B2F,yBAAiBP,iBAAiBhB,OAAAA,CAAAA;MACpC,GAAGzG,gBAAAA;AACH,aAAO,MAAMsC,cAAcF,QAAAA;IAC7B;EACF,GAAG;IAACqE;GAAQ;AAEZ,SAAO,gBAAA/C,QAAA,cAACuE,eAAAA;IAAcC,OAAOH,cAAc9D;IAAQgD,UAAUH;IAAYS;;AAC3E;AAMO,IAAMU,gBAAgB,CAAC,EAAEC,QAAQ,GAAGjB,UAAUM,iBAAgB,MAAsB;AACzF,QAAM,EAAEY,EAAC,IAAKC,iBAAeC,YAAAA;AAE7B,SACE,gBAAA3E,QAAA,cAACc,SAAQL,MAAI,MACX,gBAAAT,QAAA,cAACc,SAAQC,SAAO;IAAC6D,SAAAA;KACf,gBAAA5E,QAAA,cAAC6E,gBAAAA;IACCtB;IACAM;IACA7E,UAAUwF,QAAQ,IAAI,SAASA,UAAU,IAAI,QAAQ;IACrD9D,YAAW;OAGf,gBAAAV,QAAA,cAACc,SAAQO,QAAM,MACb,gBAAArB,QAAA,cAACc,SAAQQ,SAAO;IAACC,MAAK;KACpB,gBAAAvB,QAAA,cAACwB,QAAAA,MAAMiD,EAAE,kBAAkB;IAAED;EAAM,CAAA,CAAA,GACnC,gBAAAxE,QAAA,cAACc,SAAQW,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;;;AEpQA,OAAOqD,aAAW;AAElB,SAASC,SAAAA,QAAOC,kBAAAA,wBAAsB;AACtC,SAASC,yBAAyBC,2BAA2B;AAKtD,IAAMC,sBAAsB,CAAC,EAAEC,SAAQ,MAAoC;AAChF,QAAM,EAAEC,EAAC,IAAKC,iBAAeC,YAAAA;AAE7B,SACE,gBAAAC,QAAA,cAACC,yBAAAA,MACC,gBAAAD,QAAA,cAACE,qBAAAA;IAAoBC,OAAON,EAAE,0BAAA;KAC5B,gBAAAG,QAAA,cAACI,OAAMC,QAAM;IAACC,SAASV,SAASW;IAAYC,iBAAiB,CAACF,YAAaV,SAASW,aAAa,CAAC,CAACD;;AAI3G;;;AClBA,OAAOG,WAASC,eAAAA,eAAaC,YAAAA,iBAAgB;AAE7C,SAASC,OAAAA,YAAW;AACpB,SAASC,8BAA8B;AACvC,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,SAAAA,QAAOC,SAASC,kBAAAA,wBAAsB;AAC/C,SAASC,2BAAAA,0BAAyBC,uBAAAA,4BAA2B;AAC7D,SAASC,WAAWC,kBAAkB;;AAQ/B,IAAMC,qBAAqB,CAAC,EAAEC,MAAK,MAA2B;AACnE,QAAM,EAAEC,EAAC,IAAKC,iBAAeC,YAAAA;AAE7B,QAAMC,SAASC,WAAAA;AACf,QAAMC,cAAcC,QAAQH,OAAOI,OAAOC,OAAOC,SAASN,QAAQO,cAAcC,cAAAA;AAEhF,QAAM,CAACC,iBAAiBC,kBAAAA,IAAsBC,UAC5Cf,MAAMgB,SAASC,KAAKJ,oBAAoBK,uBAAuBC,OAAO;AAExE,QAAMC,wBAAwBC,cAC5B,OAAOC,SAAAA;AACLR,uBAAmBQ,IAAAA;AACnB,UAAMtB,OAAOgB,SACVO,6BAA6BD,OAAOJ,uBAAuBC,UAAUD,uBAAuBM,QAAQ,EACpGC,MAAM,CAACC,QAAAA;AACNC,MAAAA,KAAIF,MAAMC,KAAAA,QAAAA;;;;;;AACVZ,yBAAmB,CAACQ,IAAAA;IACtB,CAAA;EACJ,GACA;IAACtB;GAAM;AAGT,SACE,gBAAA4B,QAAA,cAACC,0BAAAA,MACC,gBAAAD,QAAA,cAACE,sBAAAA;IAAoBC,OAAO9B,EAAE,YAAA;KAC5B,gBAAA2B,QAAA,cAACI,OAAMC,WAAS;IACdC,aAAajC,EAAE,qBAAA;IACfkC,OAAOnC,MAAMoC,WAAWC,QAAQ;IAChCC,UAAU,CAACC,UAAAA;AACTvC,YAAMoC,WAAWC,OAAOE,MAAMC,OAAOL;IACvC;OAGJ,gBAAAP,QAAA,cAACE,sBAAAA;IAAoBC,OAAO9B,EAAE,YAAA;KAC5B,gBAAA2B,QAAA,cAACa,QAAQC,MAAI,MACX,gBAAAd,QAAA,cAACe,YAAAA;IACCR,OAAOnC,MAAMoC,WAAWQ;IACxBN,UAAU,CAACO,aAAc7C,MAAMoC,WAAWQ,OAAOC;IACjDC,SAAS,MAAA;AACP9C,YAAMoC,WAAWQ,OAAOG;IAC1B;QAIN,gBAAAnB,QAAA,cAACE,sBAAAA;IAAoBC,OAAO9B,EAAE,WAAA;KAC5B,gBAAA2B,QAAA,cAACa,QAAQC,MAAI,MACX,gBAAAd,QAAA,cAACoB,WAAAA;IACCb,OAAOnC,MAAMoC,WAAWa;IACxBX,UAAU,CAACY,YAAalD,MAAMoC,WAAWa,MAAMC;IAC/CJ,SAAS,MAAA;AACP9C,YAAMoC,WAAWa,MAAMF;IACzB;QAILzC,eACC,gBAAAsB,QAAA,cAACE,sBAAAA;IAAoBC,OAAO9B,EAAE,wBAAA;KAC5B,gBAAA2B,QAAA,cAACI,OAAMmB,QAAM;IAACC,SAASvC;IAAiBwC,iBAAiBjC;;AAKnE;;;AC9EA,OAAOkC,WAASC,SAASC,YAAAA,kBAAgB;AAEzC,SAASC,WAAAA,UAASC,mBAAAA,wBAAuB;AACzC,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,UAAAA,SAAQC,WAAWC,UAAAA,SAAQC,QAAAA,OAAMC,qBAAAA,oBAAmBC,kBAAAA,wBAAsB;AACnF,SAASC,YAAqD;AAC9D,SAASC,kBAAwC;AAO1C,IAAMC,wBAAwB,GAAGC,YAAAA;AAUjC,IAAMC,sBAAsB,CAAC,EAClCC,OACAC,QACAC,qBACAC,aAAa,WACbC,WAAU,MACe;AACzB,QAAM,EAAEC,EAAC,IAAKC,iBAAeR,YAAAA;AAC7B,QAAMS,SAASC,WAAAA;AACf,QAAM,CAACC,gBAAgBC,iBAAAA,IAAqBC,WAAyB,MAAA;AACrE,QAAM,CAACC,UAAUC,WAAAA,IAAeF,WAA2BR,UAAAA;AAC3D,QAAMW,SAASd,MAAMe,WAAWC,mBAAAA;AAChC,QAAMC,OAAOC,oBAAoBlB,OAAO;IAAEmB,UAAUZ,OAAOa,OAAOC,YAAYrB;IAAOI;EAAW,CAAA;AAChG,QAAMkB,SAASC,iBAAgBC,kBAAkBC,aAAa;AAC9D,QAAMC,OAAOC,QAAQ,OAAO;IAAEC,SAAS5B;EAAM,IAAI;IAACA;GAAM;AAExD;;;IAGE,gBAAA6B,QAAA,cAACC,QAAOC,SAAO;MAACC,YAAW;OACzB,gBAAAH,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAACC,QAAOM,OAAK;MACXC,SAAS,MAAM3B,kBAAkB,MAAA;MACjC4B,oBAAkBjC,EAAE,wCAAA;MACpB2B,YAAW;OAEX,gBAAAH,QAAA,cAACU,OAAAA;MACCC,MAAK;MACLC,MAAM;MACNT,YAAY;QAAC;QAAcvB,mBAAmB,UAAU;;QAE1D,gBAAAoB,QAAA,cAACa,QAAAA;MACCP,WACE1B,mBAAmB,SACf,mGACA;OAGLkC,mBAAkB1B,MAAMZ,CAAAA,CAAAA,CAAAA,GAG7B,gBAAAwB,QAAA,cAACC,QAAOc,OAAK;MAACC,SAAAA;OACZ,gBAAAhB,QAAA,cAACiB,SAAAA;MAAOC,SAAQ;MAAOC,SAAQ;MAAQC,WAAAA;OACrC,gBAAApB,QAAA,cAACU,OAAAA;MAAKC,MAAK;MAAiBC,MAAM;WAIxC,gBAAAZ,QAAA,cAACqB,KAAKC,MAAI;MACRC,aAAY;MACZC,OAAOzC;MACP0C,eAAezC;MACf0C,YAAY9C;MACZ+C,oBAAoB9C;MACpBsB,YAAW;OAEX,gBAAAH,QAAA,cAACqB,KAAKO,UAAQ;MAACzB,YAAW;OACxB,gBAAAH,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAACqB,KAAKQ,SAAO;MAAC1B,YAAW;OACvB,gBAAAH,QAAA,cAACI,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAN,QAAA,cAACqB,KAAKS,KAAG;MAACN,OAAM;OAAYhD,EAAE,oBAAA,CAAA,GAC9B,gBAAAwB,QAAA,cAACqB,KAAKS,KAAG;MAACN,OAAM;MAAUO,UAAU9C;OACjCT,EAAE,mBAAA,CAAA,GAEJiB,OAAOuC,IAAI,CAACC,UACX,gBAAAjC,QAAA,cAACqB,KAAKS,KAAG;MAACI,KAAKD,MAAME;MAAIX,OAAOS,MAAME;OACnCrB,mBAAkBmB,MAAMG,OAAO5D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAO1C,gBAAAwB,QAAA,cAACqB,KAAKgB,UAAQ;MAACb,OAAM;MAAWrB,YAAW;OACzC,gBAAAH,QAAA,cAACsC,oBAAAA;MAAmBnE;SAItB,gBAAA6B,QAAA,cAACqB,KAAKgB,UAAQ;MAACb,OAAM;MAAUrB,YAAW;OACxC,gBAAAH,QAAA,cAACuC,UAAUC,UAAQ,MACjB,gBAAAxC,QAAA,cAACyC,YAAAA;MAAWtE;MAAcuE,aAAAA;MAAYtE;MAAgBC;UAIzDoB,OAAOuC,IAAI,CAACC,UACX,gBAAAjC,QAAA,cAACqB,KAAKgB,UAAQ;MAACH,KAAKD,MAAME;MAAIX,OAAOS,MAAME;MAAIhC,YAAW;OACxD,gBAAAH,QAAA,cAAC2C,UAAAA;MAAQtC,MAAM,mBAAmB4B,MAAME,EAAE;MAAItC;;;AAO5D;;;ACnHA,OAAO+C,WAASC,aAAAA,YAAWC,YAAAA,kBAAgB;AAE3C,SAASC,eAAAA,oBAAmB;AAC5B,SAASC,+BAA+B;AACxC,SAASC,0BAAAA,+BAA8B;AACvC,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,WAAAA,UAASC,kBAAAA,wBAAsB;AACxC,SAASC,kBAAAA,iBAAgBC,eAAAA,cAAaC,gBAAAA,qBAAoB;;;ACR1D,SAASC,aAAAA,YAAWC,YAAAA,kBAAgB;AAGpC,SAASC,eAAe;AACxB,SAASC,mBAAmB;AAC5B,SAASC,aAAAA,kBAAiB;;AAQnB,IAAMC,2BAA2B,OAAsB;EAC5DC,gBAAgB;EAChBC,iBAAiB;EACjBC,oBAAoB;EACpBC,qBAAqB;EACrBC,oBAAoB;AACtB;AAEO,IAAMC,iBAAiB,CAACC,YAAAA;AAC7B,SAAOC,OAAOC,QAAQF,OAAAA,EAASG,OAAsB,CAACC,SAAS,CAACC,UAAUC,SAAAA,MAAU;AAClFF,YAAQV,kBAAkBY,UAAUZ;AACpCU,YAAQT,mBAAmBW,UAAUX;AACrCS,YAAQR,sBAAsBU,UAAUV;AACxCQ,YAAQP,uBAAuBS,UAAUT;AACzCO,YAAQN,sBAAsBQ,UAAUR;AACxC,WAAOM;EACT,GAAGX,yBAAAA,CAAAA;AACL;AAEA,IAAMc,eAAe,CAACC,QAAgBC,YACpCD,OAAOE,WAAW,GAAGnB,YAAYoB,oBAAoB,IAAIF,OAAAA,EAAS;AAK7D,IAAMG,eAAe,MAAA;AAC1B,QAAMC,SAASrB,WAAAA;AACf,QAAM,CAACsB,YAAYC,aAAAA,IAAiB1B,WAA4B,CAAC,CAAA;AAEjED,EAAAA,WAAU,MAAA;AACR,UAAM4B,MAAM,IAAI1B,QAAAA,QAAAA;;;;AAChB,UAAM2B,sBAAsB,CAACC,WAAAA;AAC3B,iBAAWC,SAASD,QAAQ;AAC1B,YAAIJ,WAAWK,MAAMC,EAAE,GAAG;AACxB;QACF;AAEAJ,YAAIK,UACFF,MAAMG,KAAKC,qBAAqBP,KAAK,CAAC,EAAEQ,QAAQ,CAAA,EAAE,MAAE;AAClD,gBAAMC,YAAYD,MAAME,KAAK,CAACC,UAAUpB,aAAaoB,MAAMnB,QAAQW,MAAMC,EAAE,CAAA;AAC3E,cAAIK,WAAW;AACbV,0BAAc,CAACD,iBAAgB;cAAE,GAAGA;cAAY,CAACK,MAAMC,EAAE,GAAGK;YAAU,EAAA;UACxE;QACF,CAAA,CAAA;MAEJ;IACF;AAEAR,wBAAoBJ,OAAOK,OAAOU,IAAG,CAAA;AACrCf,WAAOK,OAAOW,UAAU,CAACX,WAAAA;AACvBD,0BAAoBC,MAAAA;IACtB,CAAA;AAEA,WAAO,MAAA;AACL,WAAKF,IAAIc,QAAO;IAClB;EACF,GAAG;IAACjB;GAAO;AAEX,SAAOC;AACT;AAMO,IAAMiB,oBAAoB,CAACZ,UAAAA;AAChC,QAAM,CAACL,YAAYC,aAAAA,IAAiB1B,WAAAA;AAEpCD,EAAAA,WAAU,MAAA;AACR,UAAM4B,MAAM,IAAI1B,QAAAA,QAAAA;;;;AAChB6B,UAAMG,KAAKC,qBAAqBP,KAAK,CAAC,EAAEQ,QAAQ,CAAA,EAAE,MAAE;AAClD,YAAMC,YAAYD,MAAME,KAAK,CAACC,UAAUpB,aAAaoB,MAAMnB,QAAQW,MAAMC,EAAE,CAAA;AAC3E,UAAIK,WAAW;AACbV,sBAAcU,SAAAA;MAChB;IACF,CAAA;AAEA,WAAO,MAAA;AACL,WAAKT,IAAIc,QAAO;IAClB;EACF,GAAG;IAACX;GAAM;AAEV,SAAOL;AACT;;;ADlFA,IAAMkB,gBAAgB,MAAA;AACpB,QAAM,CAACC,QAAQC,SAAAA,IAAaC,WAASC,wBAAwBC,WAAWC,aAAa;AACrF,QAAMC,SAASC,WAAAA;AAEfC,EAAAA,WAAU,MAAA;AACRF,WAAOG,SAASA,SAASC,kBAAkBC,gBAAAA,EAAkBC,UAAU,CAAC,EAAEZ,QAAAA,QAAM,MAAE;AAChFC,gBAAUD,OAAAA;IACZ,CAAA;EACF,GAAG;IAACM;GAAO;AAEX,SAAON;AACT;AAEO,IAAMa,mBAAmB,CAAC,EAAEC,OAAOC,KAAI,MAAoC;AAChF,QAAM,EAAEC,EAAC,IAAKC,iBAAeC,YAAAA;AAC7B,QAAMC,KAAKL,MAAMK;AACjB,QAAM,EAAEC,cAAcC,YAAYC,UAAS,IAAKC,cAAaJ,EAAAA;AAC7D,QAAMK,aAAaJ,gBAAgBC,cAAcC;AAKjD,QAAM,EAAEG,MAAK,IAAKC,aAAAA;AAClB,QAAMC,WAAWC,aAAAA;AACjB,QAAMC,mBAAmBF,SAASG,GAAG,EAAC;AACtC,QAAMC,OAAOC,QAAQP,OAAOI,gBAAAA;AAC5B,QAAMI,mBAAmB,CAAClB,QAAQ,CAACS,cAAcL,MAAMY,OAAOA,KAAKG,SAASf,EAAAA,IAAM;AAElF,QAAMgB,kBAAkBpC,cAAAA,MAAoBI,wBAAwBC,WAAWgC;AAE/E,QAAMC,kBAAkBvB,MAAMwB,SAASC,KAAKC,oBAAoBC,wBAAuBC;AACvF,QAAMC,YAAYC,kBAAkB9B,KAAAA;AACpC,QAAM+B,UAAUV,mBAAmBE,mBAAmBM,aAAaA,UAAUG,iBAAiB;AAE9F,SACE,gBAAAC,QAAA,cAACC,SAAQC,MAAI,MACX,gBAAAF,QAAA,cAACC,SAAQE,SAAO;IAACC,SAAAA;KACf,gBAAAJ,QAAA,cAACK,iBAAAA;IACCP;IACAlB,UAAUH;IACVS;IACAoB,YAAW;OAGf,gBAAAN,QAAA,cAACC,SAAQM,QAAM,MACb,gBAAAP,QAAA,cAACC,SAAQO,SAAO;IAACC,MAAK;IAASH,YAAW;KACxC,gBAAAN,QAAA,cAACU,QAAAA,MAAMzC,EAAE,eAAA,CAAA,GACT,gBAAA+B,QAAA,cAACC,SAAQU,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;;;AElEA,OAAOC,WAASC,eAAAA,eAAaC,aAAAA,YAAWC,YAAAA,kBAAgB;AAExD,SAASC,iBAAiB;AAC1B,SAASC,aAAAA,mBAAiB;AAE1B,SAASC,QAAAA,OAAMC,SAAAA,QAAOC,WAAAA,UAASC,kBAAAA,wBAAsB;AAErD,SAASC,yBAAyB;AAClC,SAASC,MAAAA,WAAU;;;ACRnB,OAAOC,WAA8BC,aAAAA,YAAWC,YAAAA,kBAAgB;AAEhE,SAASC,aAAAA,mBAAiB;AAC1B,SAAuBC,gBAAgB;AACvC,SAASC,QAAAA,OAAMC,qBAAAA,oBAAmBC,kBAAAA,wBAAsB;AAExD,SAASC,MAAAA,WAAU;AAMZ,IAAMC,uBAAuB;AAGpC,IAAMC,SAAS;EACbC,OAAO;EACPC,OAAO;EACPC,UAAU;AACZ;AAEA,IAAMC,YAAY,CAACC,UAAAA;AACjB,QAAM,CAACC,SAASC,UAAAA,IAAcC,WAASH,KAAAA;AACvC,QAAM,CAACI,QAAQC,SAAAA,IAAaF,WAAS,KAAA;AACrCG,EAAAA,WAAU,MAAA;AACR,QAAIC;AACJ,QAAIP,UAAUC,SAAS;AACrBI,gBAAU,IAAA;AACVH,iBAAWF,KAAAA;AACXO,WAAKC,aAAaD,CAAAA;AAClBA,UAAIE,WAAW,MAAA;AACbJ,kBAAU,KAAA;MACZ,GAAGX,oBAAAA;IACL;AAEA,WAAO,MAAA;AACLW,gBAAU,KAAA;AACVG,mBAAaD,CAAAA;IACf;EACF,GAAG;IAACP;IAAOC;GAAQ;AACnB,SAAOG;AACT;AAIO,IAAMM,oBAAoB,CAAC,EAAEC,SAASC,MAAK,MAA0B;AAC1E,QAAM,EAAEL,EAAC,IAAKM,iBAAeC,YAAAA;AAC7B,QAAMC,SAASC,YAAAA;AACf,QAAMC,QAAQC,SAASP,OAAAA;AACvB,MAAI,CAACM,OAAO;AACV,WAAO;EACT;AAEA,QAAME,YAAYC,mBAAkBC,oBAAoBJ,OAAO;IAAEK,UAAUL,UAAUF,OAAOQ,OAAOC;EAAQ,CAAA,GAAIjB,CAAAA;AAE/G,SAAO,gBAAAkB,QAAA,cAACC,UAAAA;IAASf;IAAkBQ;IAAsBP;;AAC3D;AAQO,IAAMc,WAAW,CAAC,EACvBf,SACAQ,WACAP,OAAO,EAAEe,oBAAoBC,qBAAqBC,gBAAgBC,gBAAe,EAAE,MACrE;AACd,QAAMC,aAAahC,UAAU4B,kBAAAA;AAC7B,QAAMK,WAAWjC,UAAU6B,mBAAAA;AAE3B,SACE,gBAAAH,QAAA,cAACQ,OAAAA;IACCC,WAAU;IACVC,OAAOxB;IACPyB,SAAS,MAAA;AACP,WAAKC,UAAUC,UAAUC,UAAU5B,OAAAA;IACrC;KAEA,gBAAAc,QAAA,cAACe,QAAAA;IAAKN,WAAU;KAAmBf,SAAAA,GACnC,gBAAAM,QAAA,cAACgB,OAAAA;IACCC,MAAK;IACLC,MAAM;IACNC,YAAYC,IAAGd,cAAc,6BAAA;MAE/B,gBAAAN,QAAA,cAACqB,QAAAA;IACCC,IAAI;MAAE/C,OAAO4B;MAAqBoB,OAAOpB,sBAAsBE;IAAgB;IAC/EmB,MAAM;MAAEjD,OAAO2B;MAAoBqB,OAAOrB,qBAAqBE;IAAe;IAC9EM,OAAOxB;MAET,gBAAAc,QAAA,cAACgB,OAAAA;IACCC,MAAK;IACLC,MAAM;IACNC,YAAYC,IAAGb,YAAY,wCAAA;;AAInC;AAIA,IAAMc,SAAS,CAAC,EAAEF,YAAYG,IAAIE,KAAI,MAAe;AACnD,SACE,gBAAAxB,QAAA,cAACQ,OAAAA;IAAIC,WAAWW,IAAG,4CAA4CD,UAAAA;KAC7D,gBAAAnB,QAAA,cAACyB,KAAAA;IAAIN,YAAW;IAAe,GAAGG;MAClC,gBAAAtB,QAAA,cAACQ,OAAAA;IAAIC,WAAU;KACb,gBAAAT,QAAA,cAACQ,OAAAA;IAAIC,WAAWW,IAAG,6DAA6DlD,OAAOC,KAAK;KAAImD,GAAGC,KAAK,CAAA,GAE1G,gBAAAvB,QAAA,cAACyB,KAAQD,IAAAA,CAAAA;AAGf;AAEA,IAAMC,MAAM,CAAC,EAAEN,YAAY5C,OAAOgD,MAAK,MAA6B;AAClE,MAAIG,IAAKnD,QAAQgD,QAAS;AAC1B,MAAIhD,QAAQgD,OAAO;AACjBG,QAAIC,KAAKC,IAAIF,GAAG,EAAA;EAClB;AAEA,SACE,gBAAA1B,QAAA,cAACQ,OAAAA;IAAIC,WAAWW,IAAG,wBAAwBlD,OAAOC,OAAOgD,UAAAA;KACvD,gBAAAnB,QAAA,cAACQ,OAAAA;IAAIC,WAAWW,IAAG,YAAYlD,OAAOE,KAAK;IAAGyD,OAAO;MAAEC,OAAO,GAAGJ,CAAAA;IAAK;MACrEnD,UAAUgD,SACT,gBAAAvB,QAAA,cAACQ,OAAAA;IAAIC,WAAU;KAAuElC,KAAAA,CAAAA;AAI9F;;;AC7HA,SAASwD,WAAAA,gBAAe;;AAEjB,IAAMC,0BAA0B,CAACC,QAAgBC,OAAAA;AACtD,QAAMC,uBAA6D,CAAC;AACpE,QAAMC,QAA6C,CAAC;AAEpD,QAAMC,UAAU,CAACC,WAAAA;AACf,eAAWC,SAASD,QAAQ;AAC1B,UAAIF,MAAMG,MAAMC,EAAE,GAAG;AACnB;MACF;AAEAJ,YAAMG,MAAMC,EAAE,IAAI;AAClBL,2BAAqBI,MAAMC,EAAE,IAAIC,uBAAuBF,OAAO,CAACG,MAAAA;AAC9DN,cAAMG,MAAMC,EAAE,IAAIE;AAClBR,WAAGS,OAAOC,OAAOR,KAAAA,EAAOS,KAAK,CAACH,OAAMA,OAAM,QAAA,IAAY,WAAW,OAAA;MACnE,CAAA;IACF;EACF;AACAT,SAAOK,OAAOQ,UAAU,CAACR,WAAAA;AACvBD,YAAQC,MAAAA;EACV,CAAA;AACAD,UAAQJ,OAAOK,OAAOS,IAAG,CAAA;AAEzB,SAAO,MAAA;AACL,eAAWC,eAAeL,OAAOC,OAAOT,oBAAAA,GAAuB;AAC7Da,kBAAAA;IACF;EACF;AACF;AAEA,IAAMP,yBAAyB,CAACF,OAAcL,OAAAA;AAC5C,QAAMe,MAAM,IAAIlB,SAAAA,QAAAA;;;;AAEhB,OAAKQ,MAAMW,eAAc,EAAGC,KAAK,MAAA;AAC/B,QAAIF,IAAIG,UAAU;AAChB;IACF;AAEA,QAAIC,oBAAoB;AACxB,QAAIC;AACJf,UAAMgB,KAAKC,iBAAiBC,GAAGR,KAAK,CAAC,EAAES,iBAAgB,MAAE;AACvDL,0BAAoBK,iBAAiBC,SAAS;IAChD,CAAA;AACApB,UAAMgB,KAAKC,iBAAiBI,SAAS,GAAA,EAAKH,GAAGR,KAAK,MAAA;AAChD,UAAII,mBAAmB;AACrBC,2BAAmBO;AACnB3B,WAAG,QAAA;MACL,OAAO;AACL,cAAM4B,eAAevB,MAAMgB,KAAKQ,MAAK;AACrCT,2BAAmBQ;AACnB,aAAKA,aAAaX,KAAK,MAAA;AACrB,cAAIG,qBAAqBQ,cAAc;AACrC5B,eAAG,OAAA;UACL;QACF,CAAA;MACF;IACF,CAAA;EACF,CAAA;AAEA,SAAO,MAAA;AACL,SAAKe,IAAIe,QAAO;EAClB;AACF;;;AChEO,IAAMC,YAAY,CAAC,EACxBC,SACAC,OACAC,eACAC,gBAAe,MAMhB;AACC,MAAI,CAACF,OAAO;AACV,WAAO;EACT,WAAW,CAACD,WAAWG,iBAAiB;AACtC,WAAO;EACT,WAAW,CAACH,WAAWE,eAAe;AACpC,WAAO;EACT,WAAWF,WAAW,CAACE,iBAAiB,CAACC,iBAAiB;AACxD,WAAO;EACT,OAAO;AACL,WAAO;EACT;AACF;AAEO,IAAMC,UAAU,CAACC,WAAAA;AACtB,UAAQA,QAAAA;IACN,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;IACT,KAAK;AACH,aAAO;EACX;AACF;;;AHvBO,IAAMC,aAAa,MAAA;AACxB,QAAMC,SAASC,YAAAA;AACf,QAAMC,QAAQC,aAAAA;AACd,QAAM,CAACC,OAAOC,QAAAA,IAAYC,WAAS,IAAA;AAEnCC,EAAAA,WAAU,MAAA;AACR,WAAOC,wBAAwBR,QAAQ,CAACE,WAAAA;AACtCG,eAASH,WAAU,OAAA;IACrB,CAAA;EACF,GAAG,CAAA,CAAE;AAEL,SAAO,gBAAAO,QAAA,cAACC,qBAAAA;IAAoBR;IAAcE;;AAC5C;AAEO,IAAMM,sBAAsB,CAAC,EAAER,OAAOE,MAAK,MAAgD;AAChG,QAAM,EAAEO,EAAC,IAAKC,iBAAeC,YAAAA;AAC7B,QAAMC,UAAUC,eAAeb,KAAAA;AAC/B,QAAMc,UAAUC,OAAOC,OAAOhB,KAAAA,EAAOiB,WAAW;AAChD,QAAMC,gBAAgBN,QAAQO,qBAAqB,KAAKP,QAAQQ,kBAAkB;AAClF,QAAMC,kBAAkBT,QAAQO,qBAAqB,KAAKP,QAAQU,iBAAiB;AACnF,QAAMC,SAASC,UAAU;IAAEV;IAASZ;IAAOgB;IAAeG;EAAgB,CAAA;AAE1E,QAAM,CAACI,YAAYC,aAAAA,IAAiBtB,WAAAA;AACpCC,EAAAA,WAAU,MAAA;AACRqB,kBAAcC,MAAAA;AACd,QAAIb,WAAY,CAACI,iBAAiB,CAACG,iBAAkB;AACnD;IACF;AAEA,UAAMZ,KAAImB,WAAW,MAAA;AAEnBF,oBAAc,iBAAA;IAChB,GAAGG,oBAAAA;AACH,WAAO,MAAMC,aAAarB,EAAAA;EAC5B,GAAG;IAACK;IAASI;IAAeG;GAAgB;AAE5C,QAAMU,QAAQtB,EAAE,GAAGc,MAAAA,QAAc;AACjC,QAAMS,OAAO,gBAAAzB,QAAA,cAAC0B,OAAAA;IAAKD,MAAME,QAAQX,MAAAA;IAASY,MAAM;IAAGV;;AAEnD,MAAIX,SAAS;AACX,WAAO,gBAAAP,QAAA,cAAC6B,UAAUC,MAAI;MAACN;OAAeC,IAAAA;EACxC,OAAO;AACL,WACE,gBAAAzB,QAAA,cAAC+B,SAAQC,MAAI,MACX,gBAAAhC,QAAA,cAAC+B,SAAQE,SAAO;MAACC,SAAAA;OACf,gBAAAlC,QAAA,cAAC6B,UAAUM,QAAM;MAACX;OAAeC,IAAAA,CAAAA,GAEnC,gBAAAzB,QAAA,cAAC+B,SAAQK,QAAM,MACb,gBAAApC,QAAA,cAAC+B,SAAQM,SAAO,MACd,gBAAArC,QAAA,cAACsC,kBAAAA;MAAiB7C;MAAcY;MAAkBkC,OAAO;QACzD,gBAAAvC,QAAA,cAAC+B,SAAQS,OAAK,IAAA,CAAA,CAAA,CAAA;EAKxB;AACF;AASO,IAAMF,mBAAmB,CAAC,EAAEpB,YAAYzB,OAAOY,SAASkC,MAAK,MAAyB;AAC3F,QAAM,CAACE,SAASC,UAAAA,IAAc7C,WAAS,KAAA;AACvC,QAAM,EAAEK,EAAC,IAAKC,iBAAeC,YAAAA;AAC7B,QAAMuC,UAAUnC,OAAOmC,QAAQlD,KAAAA,EAC5BmD,OAAO,CAAC,CAACC,GAAGC,KAAAA,MAAWL,WAAWK,MAAM/B,iBAAiB+B,MAAMjC,kBAAkB,CAAA,EACjFkC,SAAS,CAAC,CAACC,CAAAA,GAAI,CAACC,CAAAA,MAAQD,IAAIC,IAAI,KAAKD,IAAIC,IAAI,IAAI,CAAA;AAEpD,QAAMC,sBAAsBC,cAAY,CAAC1D,WAAmBiD,WAAWjD,MAAAA,GAAQ;IAACiD;GAAW;AAG3F,SACE,gBAAA1C,QAAA,cAACoD,OAAAA;IAAIC,WAAWC,IAAG,4CAA4CpC,UAAAA;KAC7D,gBAAAlB,QAAA,cAACoD,OAAAA;IAAIG,MAAK;IAAOF,WAAU;KACzB,gBAAArD,QAAA,cAACwD,MAAAA;IAAGH,WAAU;KAAUnD,EAAE,mBAAA,CAAA,GAC1B,gBAAAF,QAAA,cAACoD,OAAAA;IAAIC,WAAU;KACb,gBAAArD,QAAA,cAACyD,OAAMzB,MAAI,MACT,gBAAAhC,QAAA,cAACyD,OAAMC,OAAK;IAACxC,YAAW;KAAWhB,EAAE,gBAAA,CAAA,GACrC,gBAAAF,QAAA,cAACyD,OAAME,UAAQ;IAACC,SAASnB;IAASoB,iBAAiBX;SAIzD,gBAAAlD,QAAA,cAACoD,OAAAA;IAAIC,WAAU;KACZV,QAAQjC,WAAW,KAClB,gBAAAV,QAAA,cAACoD,OAAAA;IAAIG,MAAK;IAAOF,WAAU;KAExBnD,EAAE,sBAAA,CAAA,GAGNyC,QAAQmB,IAAI,CAAC,CAACC,SAAStE,MAAAA,MACtB,gBAAAO,QAAA,cAACgE,mBAAAA;IAAkBC,KAAKF;IAASA;IAA6BtE,OAAOA;QAGxE8C,SAAS,gBAAAvC,QAAA,cAACkE,mBAAAA;IAAkBC,UAAS;KAAQC,KAAKC,UAAUhE,SAAS,MAAM,CAAA,CAAA,CAAA;AAGlF;",
6
- "names": ["React", "useCallback", "useState", "ForeignKeySchema", "getMeta", "IconButton", "useTranslation", "Separator", "Form", "React", "useCallback", "IconButton", "List", "ListItem", "useTranslation", "ForeignKeys", "keys", "onDelete", "List", "classNames", "map", "key", "KeyItem", "id", "forignKey", "t", "useTranslation", "SPACE_PLUGIN", "handleDelete", "useCallback", "ListItem", "Root", "Heading", "div", "source", "className", "Endcap", "IconButton", "iconOnly", "icon", "variant", "label", "onClick", "initialValues", "source", "id", "AdvancedObjectSettings", "object", "t", "useTranslation", "SPACE_PLUGIN", "adding", "setAdding", "useState", "keys", "getMeta", "handleNew", "useCallback", "handleCancel", "handleSave", "key", "index", "findIndex", "push", "handleDelete", "splice", "React", "Separator", "div", "className", "h2", "h3", "IconButton", "classNames", "icon", "label", "onClick", "ForeignKeys", "onDelete", "Form", "schema", "ForeignKeySchema", "values", "onSave", "onCancel", "CheckCircle", "CircleDashed", "CircleNotch", "React", "useCallback", "useEffect", "useState", "createIntent", "LayoutAction", "useIntentDispatcher", "useLayout", "useClient", "Filter", "fullyQualifiedId", "useQuery", "Button", "Toast", "useTranslation", "getSize", "mx", "WAIT_FOR_OBJECT_TIMEOUT", "TOAST_TIMEOUT", "AwaitingObject", "id", "open", "setOpen", "useState", "waiting", "setWaiting", "found", "setFound", "t", "useTranslation", "SPACE_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "layout", "useLayout", "client", "useClient", "objects", "useQuery", "spaces", "Filter", "all", "useEffect", "timeout", "setTimeout", "clearTimeout", "findIndex", "object", "fullyQualifiedId", "active", "includes", "handleClose", "useCallback", "createIntent", "SpaceAction", "WaitForObject", "undefined", "handleNavigate", "LayoutAction", "Open", "part", "subject", "React", "Toast", "Root", "duration", "onOpenChange", "Body", "Title", "classNames", "CheckCircle", "className", "getSize", "span", "CircleNotch", "mx", "CircleDashed", "Description", "Actions", "Action", "altText", "asChild", "Button", "variant", "onClick", "Close", "ns", "React", "Input", "useTranslation", "BaseObjectSettings", "object", "t", "useTranslation", "SPACE_PLUGIN", "inputRef", "React", "useRef", "div", "role", "className", "Input", "Root", "Label", "TextInput", "ref", "placeholder", "value", "name", "onChange", "event", "target", "onKeyDown", "key", "current", "blur", "pipe", "React", "useCallback", "useRef", "Capabilities", "chain", "createIntent", "LayoutAction", "useCapabilities", "useIntentDispatcher", "usePluginManager", "invariant", "useClient", "getSpace", "isReactiveObject", "isSpace", "useSpaces", "Button", "Dialog", "Icon", "useTranslation", "React", "useCallback", "useState", "Surface", "isSurfaceAvailable", "usePluginManager", "getObjectAnnotation", "invariant", "Icon", "toLocalizedString", "useTranslation", "Form", "SearchList", "mx", "isNonNullable", "useInputSurfaceLookup", "baseData", "pluginManager", "usePluginManager", "useCallback", "prop", "schema", "inputProps", "composedData", "isSurfaceAvailable", "context", "role", "data", "undefined", "React", "Surface", "CreateObjectPanel", "classNames", "forms", "spaces", "typename", "initialTypename", "target", "initialTarget", "name", "initialName", "defaultSpaceId", "resolve", "onCreateObject", "t", "useTranslation", "SPACE_PLUGIN", "setTypename", "useState", "setTarget", "form", "find", "getObjectAnnotation", "objectSchema", "options", "map", "filter", "isNonNullable", "sort", "a", "b", "nameA", "ns", "defaultValue", "nameB", "localeCompare", "handleCreateObject", "props", "handleSetTypename", "invariant", "formSchema", "inputSurfaceLookup", "div", "className", "mx", "SelectSchema", "onChange", "SelectSpace", "Form", "autoFocus", "values", "testId", "onSave", "lookupComponent", "SearchList", "Root", "label", "Input", "data-testid", "placeholder", "Content", "aName", "toLocalizedString", "getSpaceDisplayName", "personal", "id", "bName", "space", "Item", "key", "value", "onSelect", "span", "option", "Icon", "icon", "size", "lazy", "AppGraphBuilder", "lazy", "AppGraphSerializer", "IdentityCreated", "IntentResolver", "ReactRoot", "ReactSurface", "Schema", "SpaceSettings", "SpaceState", "SpacesReady", "CREATE_OBJECT_DIALOG", "SPACE_PLUGIN", "CreateObjectDialog", "target", "typename", "name", "shouldNavigate", "_shouldNavigate", "closeRef", "useRef", "manager", "usePluginManager", "t", "useTranslation", "client", "useClient", "spaces", "useSpaces", "dispatchPromise", "dispatch", "useIntentDispatcher", "forms", "useCapabilities", "SpaceCapabilities", "ObjectForm", "resolve", "useCallback", "context", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "handleCreateObject", "form", "_target", "data", "isSpace", "properties", "CollectionType", "current", "click", "space", "getSpace", "invariant", "result", "getIntent", "object", "isReactiveObject", "addObjectIntent", "createIntent", "SpaceAction", "AddObject", "pipe", "chain", "LayoutAction", "Open", "part", "React", "Dialog", "Content", "classNames", "div", "role", "className", "Title", "Close", "asChild", "Button", "ref", "density", "variant", "autoFocus", "Icon", "icon", "size", "CreateObjectPanel", "defaultSpaceId", "default", "onCreateObject", "Effect", "React", "useCallback", "useRef", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "Dialog", "Icon", "useTranslation", "Form", "CREATE_SPACE_DIALOG", "SPACE_PLUGIN", "initialValues", "edgeReplication", "CreateSpaceDialog", "closeRef", "useRef", "t", "useTranslation", "dispatch", "useIntentDispatcher", "handleCreateSpace", "useCallback", "data", "program", "Effect", "gen", "space", "createIntent", "SpaceAction", "Create", "LayoutAction", "SwitchWorkspace", "part", "subject", "id", "OpenCreateObject", "target", "runPromise", "React", "Dialog", "Content", "classNames", "div", "role", "className", "Title", "Close", "asChild", "Button", "ref", "density", "variant", "autoFocus", "Icon", "icon", "size", "Form", "testId", "values", "schema", "SpaceForm", "onSave", "React", "useTranslation", "baseSurface", "descriptionText", "mx", "CollectionMain", "collection", "t", "useTranslation", "SPACE_PLUGIN", "React", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionText", "name", "React", "useTranslation", "CollectionSection", "collection", "t", "useTranslation", "SPACE_PLUGIN", "React", "div", "className", "span", "name", "React", "useCallback", "createIntent", "LayoutAction", "useAppGraph", "useIntentDispatcher", "log", "ObservabilityAction", "useClient", "Dialog", "useTranslation", "JoinPanel", "JOIN_DIALOG", "SPACE_PLUGIN", "JoinDialog", "navigableCollections", "onDone", "props", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "graph", "useAppGraph", "t", "useTranslation", "handleDone", "useCallback", "result", "spaceKey", "Promise", "all", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "duration", "title", "ns", "closeLabel", "UpdateDialog", "options", "state", "space", "spaces", "get", "undefined", "log", "warn", "SwitchWorkspace", "target", "waitForPath", "catch", "Open", "Expose", "ObservabilityAction", "SendEvent", "name", "properties", "spaceId", "React", "Dialog", "Content", "Title", "classNames", "JoinPanel", "exitActionParent", "Close", "asChild", "doneActionParent", "Planet", "React", "getSpace", "useClient", "DropdownMenu", "toLocalizedString", "useTranslation", "MenuFooter", "object", "t", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "space", "getSpace", "spaceName", "getSpaceDisplayName", "personal", "spaces", "default", "React", "DropdownMenu", "Separator", "GroupLabel", "dl", "className", "dt", "dd", "Planet", "toLocalizedString", "ArrowsCounterClockwise", "CheckCircle", "Warning", "React", "useEffect", "useState", "debounce", "Tooltip", "useTranslation", "getSize", "mx", "staticPlaceholderText", "warningText", "Status", "PersistenceStatus", "db", "t", "useTranslation", "SPACE_PLUGIN", "displayMessage", "setDisplayMessage", "useState", "status", "naturalSetStatus", "prevStatus", "setPrevStatus", "_setStatus", "debounce", "useEffect", "timeout", "setTimeout", "clearTimeout", "React", "div", "className", "Warning", "mx", "getSize", "span", "warningText", "ArrowsCounterClockwise", "staticPlaceholderText", "Tooltip", "Root", "delayDuration", "Trigger", "role", "CheckCircle", "Portal", "Content", "Arrow", "React", "createIntent", "LayoutAction", "useIntentDispatcher", "IconButton", "useTranslation", "POPOVER_ADD_SPACE", "SPACE_PLUGIN", "PopoverAddSpace", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "div", "role", "className", "IconButton", "variant", "label", "icon", "onClick", "createIntent", "SpaceAction", "OpenCreateSpace", "LayoutAction", "UpdatePopover", "part", "options", "anchorId", "state", "data-testid", "Join", "React", "useCallback", "useRef", "useState", "log", "Button", "Input", "Popover", "useTranslation", "POPOVER_RENAME_OBJECT", "SPACE_PLUGIN", "PopoverRenameObject", "object", "obj", "t", "useTranslation", "doneButton", "useRef", "name", "setName", "useState", "title", "handleDone", "useCallback", "err", "log", "error", "React", "div", "role", "className", "Input", "Root", "Label", "srOnly", "TextInput", "placeholder", "value", "data-testid", "onChange", "target", "onKeyDown", "key", "current", "click", "Popover", "Close", "asChild", "Button", "ref", "classNames", "onClick", "ns", "React", "useCallback", "useRef", "useState", "Button", "Input", "Popover", "useTranslation", "POPOVER_RENAME_SPACE", "SPACE_PLUGIN", "PopoverRenameSpace", "space", "t", "useTranslation", "doneButton", "useRef", "name", "setName", "useState", "properties", "handleDone", "useCallback", "React", "div", "role", "className", "Input", "Root", "Label", "srOnly", "TextInput", "defaultValue", "placeholder", "onChange", "target", "value", "onKeyDown", "key", "current", "click", "Popover", "Close", "asChild", "Button", "ref", "classNames", "onClick", "ns", "React", "createIntent", "useIntentDispatcher", "IconButton", "useTranslation", "ShareSpaceButton", "space", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "ShareSpaceButtonImpl", "onClick", "createIntent", "SpaceAction", "Share", "t", "useTranslation", "SPACE_PLUGIN", "IconButton", "data-testid", "icon", "label", "React", "useCallback", "useEffect", "useState", "useAppGraph", "useCapability", "generateName", "PublicKey", "useClient", "getSpace", "useMembers", "fullyQualifiedId", "useIdentity", "Avatar", "AvatarGroup", "AvatarGroupItem", "Tooltip", "useTranslation", "List", "ListItem", "useDefaultValue", "AttentionGlyph", "useAttended", "useAttention", "ComplexMap", "keyToFallback", "useEffect", "useState", "usePath", "graph", "id", "timeout", "pathState", "setPathState", "useState", "getPath", "target", "undefined", "useEffect", "at", "frame", "requestAnimationFrame", "path", "waitForPath", "cancelAnimationFrame", "REFRESH_INTERVAL", "ACTIVITY_DURATION", "noViewers", "ComplexMap", "PublicKey", "hash", "getName", "identity", "profile", "displayName", "generateName", "identityKey", "toHex", "SpacePresence", "object", "spaceKey", "spaceState", "useCapability", "SpaceCapabilities", "MutableState", "client", "useClient", "useIdentity", "space", "spaces", "get", "getSpace", "spaceMembers", "useMembers", "key", "_moment", "setMoment", "useState", "Date", "now", "useEffect", "interval", "setInterval", "clearInterval", "memberOnline", "useCallback", "member", "presence", "memberIsNotSelf", "equals", "currentObjectViewers", "viewersByObject", "fullyQualifiedId", "membersForObject", "filter", "has", "map", "objectView", "lastSeen", "currentlyAttended", "toSorted", "a", "b", "React", "FullPresence", "members", "props", "size", "onMemberClick", "useDefaultValue", "length", "AvatarGroup", "Root", "classNames", "data-testid", "slice", "i", "Tooltip", "Trigger", "PrensenceAvatar", "group", "match", "index", "onClick", "Portal", "Content", "side", "span", "Arrow", "AvatarGroupItem", "status", "Avatar", "Frame", "style", "zIndex", "Fallback", "text", "List", "ListItem", "showName", "fallbackValue", "keyToFallback", "hue", "data", "data-status", "emoji", "Label", "SmallPresenceLive", "id", "open", "viewers", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "graph", "useAppGraph", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "includes", "getActiveViewers", "moment", "Array", "from", "values", "viewer", "activeViewers", "setActiveViewers", "SmallPresence", "count", "t", "useTranslation", "SPACE_PLUGIN", "asChild", "AttentionGlyph", "React", "Input", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "SpacePluginSettings", "settings", "t", "useTranslation", "SPACE_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "showHidden", "onCheckedChange", "React", "useCallback", "useState", "log", "EdgeReplicationSetting", "useClient", "Input", "Toolbar", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "HuePicker", "IconPicker", "SpaceSettingsPanel", "space", "t", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "edgeEnabled", "Boolean", "config", "values", "runtime", "edgeFeatures", "echoReplicator", "edgeReplication", "setEdgeReplication", "useState", "internal", "data", "EdgeReplicationSetting", "ENABLED", "toggleEdgeReplication", "useCallback", "next", "setEdgeReplicationPreference", "DISABLED", "catch", "err", "log", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "TextInput", "placeholder", "value", "properties", "name", "onChange", "event", "target", "Toolbar", "Root", "IconPicker", "icon", "nextIcon", "onReset", "undefined", "HuePicker", "hue", "nextHue", "Switch", "checked", "onCheckedChange", "React", "useMemo", "useState", "Surface", "useCapabilities", "useClient", "Button", "Clipboard", "Dialog", "Icon", "toLocalizedString", "useTranslation", "Tabs", "SpacePanel", "SPACE_SETTINGS_DIALOG", "SPACE_PLUGIN", "SpaceSettingsDialog", "space", "target", "createInvitationUrl", "initialTab", "namesCache", "t", "useTranslation", "client", "useClient", "tabsActivePart", "setTabsActivePart", "useState", "selected", "setSelected", "locked", "properties", "COMPOSER_SPACE_LOCK", "name", "getSpaceDisplayName", "personal", "spaces", "default", "panels", "useCapabilities", "SpaceCapabilities", "SettingsPanel", "data", "useMemo", "subject", "React", "Dialog", "Content", "classNames", "div", "role", "className", "Title", "onClick", "aria-description", "Icon", "icon", "size", "span", "toLocalizedString", "Close", "asChild", "Button", "density", "variant", "autoFocus", "Tabs", "Root", "orientation", "value", "onValueChange", "activePart", "onActivePartChange", "Viewport", "Tablist", "Tab", "disabled", "map", "panel", "key", "id", "label", "Tabpanel", "SpaceSettingsPanel", "Clipboard", "Provider", "SpacePanel", "hideHeading", "Surface", "React", "useEffect", "useState", "useAppGraph", "QueryEdgeStatusResponse", "EdgeReplicationSetting", "useClient", "Tooltip", "useTranslation", "AttentionGlyph", "useAttended", "useAttention", "useEffect", "useState", "Context", "EdgeService", "useClient", "createEmptyEdgeSyncState", "missingOnLocal", "missingOnRemote", "localDocumentCount", "remoteDocumentCount", "differentDocuments", "getSyncSummary", "syncMap", "Object", "entries", "reduce", "summary", "_spaceId", "peerState", "isEdgePeerId", "peerId", "spaceId", "startsWith", "AUTOMERGE_REPLICATOR", "useSyncState", "client", "spaceState", "setSpaceState", "ctx", "createSubscriptions", "spaces", "space", "id", "onDispose", "crud", "subscribeToSyncState", "peers", "syncState", "find", "state", "get", "subscribe", "dispose", "useSpaceSyncState", "useEdgeStatus", "status", "setStatus", "useState", "QueryEdgeStatusResponse", "EdgeStatus", "NOT_CONNECTED", "client", "useClient", "useEffect", "services", "EdgeAgentService", "queryEdgeStatus", "subscribe", "InlineSyncStatus", "space", "open", "t", "useTranslation", "SPACE_PLUGIN", "id", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "graph", "useAppGraph", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "includes", "connectedToEdge", "CONNECTED", "edgeSyncEnabled", "internal", "data", "edgeReplication", "EdgeReplicationSetting", "ENABLED", "syncState", "useSpaceSyncState", "syncing", "missingOnLocal", "React", "Tooltip", "Root", "Trigger", "asChild", "AttentionGlyph", "classNames", "Portal", "Content", "side", "span", "Arrow", "React", "useCallback", "useEffect", "useState", "StatusBar", "useClient", "Icon", "Input", "Popover", "useTranslation", "SyntaxHighlighter", "mx", "React", "useEffect", "useState", "useClient", "useSpace", "Icon", "toLocalizedString", "useTranslation", "mx", "SYNC_STALLED_TIMEOUT", "styles", "barBg", "barFg", "barHover", "useActive", "count", "current", "setCurrent", "useState", "active", "setActive", "useEffect", "t", "clearTimeout", "setTimeout", "SpaceRowContainer", "spaceId", "state", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "space", "useSpace", "spaceName", "toLocalizedString", "getSpaceDisplayName", "personal", "spaces", "default", "React", "SpaceRow", "localDocumentCount", "remoteDocumentCount", "missingOnLocal", "missingOnRemote", "downActive", "upActive", "div", "className", "title", "onClick", "navigator", "clipboard", "writeText", "span", "Icon", "icon", "size", "classNames", "mx", "Candle", "up", "total", "down", "Bar", "p", "Math", "min", "style", "width", "Context", "createClientSaveTracker", "client", "cb", "unsubscribeCallbacks", "state", "install", "spaces", "space", "id", "createSpaceSaveTracker", "s", "Object", "values", "some", "subscribe", "get", "unsubscribe", "ctx", "waitUntilReady", "then", "disposed", "hasUnsavedChanges", "lastFlushPromise", "crud", "saveStateChanged", "on", "unsavedDocuments", "length", "debounce", "undefined", "flushPromise", "flush", "dispose", "getStatus", "offline", "saved", "needsToUpload", "needsToDownload", "getIcon", "status", "SyncStatus", "client", "useClient", "state", "useSyncState", "saved", "setSaved", "useState", "useEffect", "createClientSaveTracker", "React", "SyncStatusIndicator", "t", "useTranslation", "SPACE_PLUGIN", "summary", "getSyncSummary", "offline", "Object", "values", "length", "needsToUpload", "differentDocuments", "missingOnRemote", "needsToDownload", "missingOnLocal", "status", "getStatus", "classNames", "setClassNames", "undefined", "setTimeout", "SYNC_STALLED_TIMEOUT", "clearTimeout", "title", "icon", "Icon", "getIcon", "size", "StatusBar", "Item", "Popover", "Root", "Trigger", "asChild", "Button", "Portal", "Content", "SyncStatusDetail", "debug", "Arrow", "showAll", "setShowAll", "entries", "filter", "_", "value", "toSorted", "a", "b", "handleCheckedChange", "useCallback", "div", "className", "mx", "role", "h1", "Input", "Label", "Checkbox", "checked", "onCheckedChange", "map", "spaceId", "SpaceRowContainer", "key", "SyntaxHighlighter", "language", "JSON", "stringify"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SPACE_PLUGIN = 'dxos.org/plugin/space';\n\nexport const meta = {\n id: SPACE_PLUGIN,\n name: 'Spaces',\n icon: 'ph--planet--regular',\n} satisfies PluginMeta;\n"],
5
- "mappings": ";AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,MAAM;AACR;",
6
- "names": ["SPACE_PLUGIN", "meta", "id", "name", "icon"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { SPACE_PLUGIN } from './meta';\nimport { CollectionType } from './types';\n\nexport default [\n {\n 'en-US': {\n [CollectionType.typename]: {\n 'typename label': 'Collection',\n },\n [SPACE_PLUGIN]: {\n 'plugin name': 'Spaces',\n 'first run message': 'Nothing selected.',\n 'add space label': 'Create or join a space',\n 'create space label': 'Create space',\n 'join space label': 'Join space',\n 'empty space message': 'No documents',\n 'empty tree message': 'No spaces',\n 'unnamed space label': 'New space',\n 'closed space label': 'Closed',\n 'loading space label': 'Loading space…',\n 'lock space label': 'Lock space',\n 'unlock space label': 'Unlock space',\n 'rename space label': 'Rename space',\n 'active space label': 'Active space:',\n 'space name label': 'Space name',\n 'object name label': 'Object name',\n 'close space label': 'Close space',\n 'open space label': 'Open space',\n 'export data label': 'Export data',\n 'import data label': 'Import data',\n 'migrate space label': 'Migrate space',\n 'share space': 'Share space',\n 'save space to disk label': 'Save to disk',\n 'load space from disk label': 'Load from disk',\n 'confirm restore title': 'Overwrite files in this space?',\n 'confirm restore body': 'Restoring from a backup will overwrite the contents of any documents that match.',\n 'upload file message': 'Drag file here or click to browse',\n 'object title placeholder': 'Type a title here…',\n 'personal space label': 'Personal Space',\n 'spaces label': 'Spaces',\n 'show hidden spaces label': 'Show closed spaces',\n 'save files to directory label': 'Save files to disk',\n 'select path label': 'Select path',\n 'rename collection label': 'Rename collection',\n 'rename object label': 'Rename item',\n 'duplicate object label': 'Duplicate item',\n 'delete collection label': 'Delete collection',\n 'delete object label': 'Delete item',\n 'collection deleted label': 'Collection deleted',\n 'object deleted label': 'Item deleted',\n 'objects deleted label': 'Items deleted',\n 'go to object label': 'Open item',\n 'found object label': 'Ready.',\n 'found object description': 'The requested object is now available.',\n 'waiting for object label': 'Loading…',\n 'waiting for object description': 'The requested object is still being synchronized.',\n 'object not found label': 'Nothing found.',\n 'object not found description':\n 'The requested object has not been found yet. Ensure there are enough peers online in the space with an updated copy.',\n 'missing object message': 'Object not available.',\n 'missing object description':\n 'The requested object has not been found yet. Ensure there are enough peers online in the space with an updated copy.',\n 'create collection label': 'Create collection',\n 'unnamed object label': 'New object',\n 'unnamed collection label': 'New collection',\n 'create object in space label': 'Add to space',\n 'create object in collection label': 'Add to collection',\n 'share space label': 'Share',\n 'space members label': 'Space members',\n 'active space members heading': 'Online ({{count}})',\n 'inactive space members heading': 'Offline ({{count}})',\n 'presence label_zero': 'No other viewers',\n 'presence label_one': '1 other viewer',\n 'presence label_other': '{{count}} other viewers',\n 'persisted locally label': 'Changes saved locally.',\n 'persisted locally message': 'All changes have been saved to disk on this device.',\n 'persistence pending label': 'Saving…',\n 'persistence error label': 'Error saving changes.',\n 'more actions label': 'More actions',\n 'invitations heading': 'Invitations',\n 'keyshortcuts label': 'Keyboard shortcuts',\n 'menu footer label': 'Details',\n 'location label': 'Located in',\n 'space limit label': 'Space Limit Reached',\n 'space limit description':\n 'This space has reached the maximum number of objects for the beta. This limit includes deleted objects currently, but those can be permanently removed with the cleanup action.',\n 'space limit close label': 'Close',\n 'remove deleted objects label': 'Cleanup',\n 'remove deleted objects alt': 'Permanently remove deleted objects to free up space.',\n 'copy link label': 'Copy link',\n 'default on space create label': 'On space create',\n 'sync status title': 'Sync status',\n 'dismiss label': 'Dismiss',\n 'join success label': 'Successfully joined space',\n 'name label': 'Name',\n 'name placeholder': 'Name',\n 'unnamed object settings label': 'Settings',\n 'edge replication label': 'Enable EDGE Replication',\n 'saving locally label': 'Writing to disk',\n 'downloading label': 'Replicating from peers',\n 'uploading label': 'Replicating to peers',\n 'offline persisted label': 'Saved to disk (offline)',\n 'remote synced label': 'Synced with peers',\n 'open settings panel label': 'Show Settings',\n 'settings panel label': 'Settings',\n 'open space settings label': 'Space Settings',\n 'members tab label': 'Members',\n 'settings tab label': 'Settings',\n 'syncing label': 'Space syncing',\n 'show all label': 'Show all',\n 'no sync status label': 'No space with missing objects.',\n 'create space dialog title': 'Create Space',\n 'create object dialog title': 'Create Object',\n 'space input placeholder': 'Select space',\n 'schema input placeholder': 'Select object type',\n 'creating object type label': 'Type',\n 'creating in space label': 'Location',\n 'creating in collection label': 'In Collection',\n 'clear input label': 'Clear',\n 'expose object label': 'Expose in navtree',\n 'advanced settings label': 'Advanced',\n 'foreign keys': 'Foreign Keys',\n 'add key': 'Add Key',\n 'icon label': 'Icon',\n 'hue label': 'Color',\n },\n },\n },\n];\n"],
5
- "mappings": ";;;;;;;;AAOA,IAAA,uBAAe;EACb;IACE,SAAS;MACP,CAACA,eAAeC,QAAQ,GAAG;QACzB,kBAAkB;MACpB;MACA,CAACC,YAAAA,GAAe;QACd,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,sBAAsB;QACtB,oBAAoB;QACpB,uBAAuB;QACvB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,uBAAuB;QACvB,oBAAoB;QACpB,sBAAsB;QACtB,sBAAsB;QACtB,sBAAsB;QACtB,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,oBAAoB;QACpB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,eAAe;QACf,4BAA4B;QAC5B,8BAA8B;QAC9B,yBAAyB;QACzB,wBAAwB;QACxB,uBAAuB;QACvB,4BAA4B;QAC5B,wBAAwB;QACxB,gBAAgB;QAChB,4BAA4B;QAC5B,iCAAiC;QACjC,qBAAqB;QACrB,2BAA2B;QAC3B,uBAAuB;QACvB,0BAA0B;QAC1B,2BAA2B;QAC3B,uBAAuB;QACvB,4BAA4B;QAC5B,wBAAwB;QACxB,yBAAyB;QACzB,sBAAsB;QACtB,sBAAsB;QACtB,4BAA4B;QAC5B,4BAA4B;QAC5B,kCAAkC;QAClC,0BAA0B;QAC1B,gCACE;QACF,0BAA0B;QAC1B,8BACE;QACF,2BAA2B;QAC3B,wBAAwB;QACxB,4BAA4B;QAC5B,gCAAgC;QAChC,qCAAqC;QACrC,qBAAqB;QACrB,uBAAuB;QACvB,gCAAgC;QAChC,kCAAkC;QAClC,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,6BAA6B;QAC7B,6BAA6B;QAC7B,2BAA2B;QAC3B,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,kBAAkB;QAClB,qBAAqB;QACrB,2BACE;QACF,2BAA2B;QAC3B,gCAAgC;QAChC,8BAA8B;QAC9B,mBAAmB;QACnB,iCAAiC;QACjC,qBAAqB;QACrB,iBAAiB;QACjB,sBAAsB;QACtB,cAAc;QACd,oBAAoB;QACpB,iCAAiC;QACjC,0BAA0B;QAC1B,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,2BAA2B;QAC3B,uBAAuB;QACvB,6BAA6B;QAC7B,wBAAwB;QACxB,6BAA6B;QAC7B,qBAAqB;QACrB,sBAAsB;QACtB,iBAAiB;QACjB,kBAAkB;QAClB,wBAAwB;QACxB,6BAA6B;QAC7B,8BAA8B;QAC9B,2BAA2B;QAC3B,4BAA4B;QAC5B,8BAA8B;QAC9B,2BAA2B;QAC3B,gCAAgC;QAChC,qBAAqB;QACrB,uBAAuB;QACvB,2BAA2B;QAC3B,gBAAgB;QAChB,WAAW;QACX,cAAc;QACd,aAAa;MACf;IACF;EACF;;",
6
- "names": ["CollectionType", "typename", "SPACE_PLUGIN"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/collection.ts", "../../../src/types/thread.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Expando, Ref, S, TypedObject } from '@dxos/echo-schema';\n\nexport class CollectionType extends TypedObject({ typename: 'dxos.org/type/Collection', version: '0.1.0' })({\n name: S.optional(S.String),\n objects: S.mutable(S.Array(Ref(Expando))),\n // Key is schema typename and value is reference to a view object of the associated schema.\n // Having collection reference the views rather than vice versa ensures that the state converges to a single view per key (i.e. type).\n // This also leaves open a future where this key could be changed to allow for multiple stack views per section.\n // TODO(wittjosiah): Any way to make this more type safe?\n // TODO(wittjosiah): Should the views be separate objects or just be schemas for view data in this record?\n views: S.mutable(S.Record({ key: S.String, value: Ref(Expando) })),\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Expando, Ref, S, TypedObject } from '@dxos/echo-schema';\n\n// TODO(wittjosiah): These types were placed here rather than in @dxos/plugin-thread\n// in order to avoid a circular dependency between threads and other objects that use threads.\n\n// TODO(wittjosiah): Factor out to halo?\nexport class ContactType extends TypedObject({ typename: 'dxos.org/type/Contact', version: '0.1.0' })({\n name: S.optional(S.String),\n identifiers: S.mutable(\n S.Array(\n S.Struct({\n type: S.String,\n value: S.String,\n }),\n ),\n ),\n}) {}\n\nexport const ActorSchema = S.mutable(\n S.Struct({\n contact: S.optional(Ref(ContactType)),\n // TODO(wittjosiah): Should the below fields just be the contact schema?\n // i.e. it should either be a reference to an existing contact or an inline contact schema.\n identityKey: S.optional(S.String),\n // TODO(burdon): Generalize to handle/identifier?\n email: S.optional(S.String),\n name: S.optional(S.String),\n }),\n);\n\nexport type ActorType = S.Schema.Type<typeof ActorSchema>;\n\nexport enum MessageState {\n NONE = 0,\n ARCHIVED = 1,\n DELETED = 2,\n SPAM = 3,\n}\n\nexport class MessageType extends TypedObject({ typename: 'dxos.org/type/Message', version: '0.1.0' })({\n /** ISO date string when the message was sent. */\n timestamp: S.String,\n /** Message state. */\n state: S.optional(S.Enums(MessageState)),\n /** Identity of the message sender. */\n sender: ActorSchema,\n /** Text content of the message. */\n text: S.String,\n /** Non-text content sent with a message (e.g., files, polls, etc.) */\n parts: S.optional(S.mutable(S.Array(Ref(Expando)))),\n /** Custom properties for specific message types (e.g. email subject or cc fields). */\n properties: S.optional(S.mutable(S.Record({ key: S.String, value: S.Any }))),\n // TODO(wittjosiah): Add read status:\n // - Read receipts need to be per space member.\n // - Read receipts don't need to be added to schema until they being implemented.\n /** Context of the application when message was created. */\n // TODO(burdon): Evolve \"attention object\" to be current UX state? E.g., of Deck?\n context: S.optional(Ref(Expando)),\n}) {}\n\nexport const ThreadStatus = S.Union(S.Literal('staged'), S.Literal('active'), S.Literal('resolved'));\n\nexport class ThreadType extends TypedObject({ typename: 'dxos.org/type/Thread', version: '0.1.0' })({\n name: S.optional(S.String),\n /** AM cursor-range: 'from:to'. */\n anchor: S.optional(S.String),\n status: S.optional(ThreadStatus),\n messages: S.mutable(S.Array(Ref(MessageType))),\n}) {}\n\nexport class ChannelType extends TypedObject({ typename: 'dxos.org/type/Channel', version: '0.1.0' })({\n name: S.optional(S.String),\n threads: S.mutable(S.Array(Ref(ThreadType))),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type AnyIntentChain } from '@dxos/app-framework';\nimport { AST, S, type Expando, type BaseObject, type TypedObject } from '@dxos/echo-schema';\nimport { type PublicKey } from '@dxos/react-client';\n// TODO(wittjosiah): This pulls in full client.\nimport { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';\nimport { type ComplexMap } from '@dxos/util';\n\nimport { CollectionType } from './collection';\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';\n\nexport type ObjectViewerProps = {\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type ObjectId = string;\n\nexport type PluginState = {\n /**\n * Which objects are currently being viewed by which peers.\n */\n viewersByObject: Record<ObjectId, ComplexMap<PublicKey, ObjectViewerProps>>;\n\n /**\n * Which peers are currently viewing which objects.\n */\n viewersByIdentity: ComplexMap<PublicKey, Set<ObjectId>>;\n\n /**\n * Object that was linked to directly but not found and is being awaited.\n */\n awaiting: string | undefined;\n\n /**\n * Cached space names, used when spaces are closed or loading.\n */\n spaceNames: Record<string, string>;\n\n /**\n * Which spaces have an SDK migration running currently.\n */\n // TODO(wittjosiah): Factor out to sdk. Migration running should probably be a space state.\n sdkMigrationRunning: Record<string, boolean>;\n\n /**\n * Whether or not the user can navigate to collections in the graph.\n * Determined by whether or not there is an available plugin that can render a collection.\n */\n navigableCollections: boolean;\n\n /**\n * Tracks whether setting edge replication as default has been run on spaces.\n */\n // TODO(wittjosiah): Systematic way to handle migrations of state outside of spaces.\n enabledEdgeReplication: boolean;\n};\n\nexport const SpaceSettingsSchema = S.mutable(\n S.Struct({\n /**\n * Show closed spaces.\n */\n showHidden: S.Boolean,\n }),\n);\n\nexport type SpaceSettingsProps = S.Schema.Type<typeof SpaceSettingsSchema>;\n\n// TODO(wittjosiah): Reconcile with graph export serializers.\n\nexport type SerializerMap = Record<string, TypedObjectSerializer>;\n\nexport interface TypedObjectSerializer<T extends Expando = Expando> {\n serialize(params: { object: T }): Promise<string>;\n\n /**\n * @param params.content\n * @param params.space Space to use for deserializing schema references.\n * @param params.newId Generate new ID for deserialized object.\n */\n deserialize(params: { content: string; space: Space; newId?: boolean }): Promise<T>;\n}\n\nexport const SpaceForm = S.Struct({\n name: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Name' })),\n // TODO(wittjosiah): Make optional with default value.\n edgeReplication: S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enable EDGE Replication' }),\n});\n\nexport type ObjectForm<T extends BaseObject = BaseObject> = {\n objectSchema: TypedObject;\n formSchema?: S.Schema<T, any>;\n getIntent: (props: T, options: { space: Space }) => AnyIntentChain;\n};\n\nexport const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;\n\nexport const SPACE_ACTION = `${SPACE_PLUGIN}/action`;\n\nexport namespace SpaceAction {\n export class OpenCreateSpace extends S.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {\n input: S.Void,\n output: S.Void,\n }) {}\n\n export class Create extends S.TaggedClass<Create>()(`${SPACE_ACTION}/create`, {\n input: SpaceForm,\n output: S.Struct({\n id: S.String,\n subject: S.Array(S.String),\n space: SpaceSchema,\n }),\n }) {}\n\n export class Join extends S.TaggedClass<Join>()(`${SPACE_ACTION}/join`, {\n input: S.Struct({\n invitationCode: S.optional(S.String),\n onDone: S.optional(S.Any),\n }),\n output: S.Void,\n }) {}\n\n export class Share extends S.TaggedClass<Share>()(`${SPACE_ACTION}/share`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Lock extends S.TaggedClass<Lock>()(`${SPACE_ACTION}/lock`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Unlock extends S.TaggedClass<Unlock>()(`${SPACE_ACTION}/unlock`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Rename extends S.TaggedClass<Rename>()(`${SPACE_ACTION}/rename`, {\n input: S.Struct({\n space: SpaceSchema,\n caller: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n export class AddSpace extends S.TaggedClass<AddSpace>()(`${SPACE_ACTION}/add-space`, {\n input: S.Void,\n output: S.Void,\n }) {}\n\n export class AddSpaceMenuGroup extends S.TaggedClass<AddSpaceMenuGroup>()(`${SPACE_ACTION}/add-space-menu-group`, {\n input: S.Void,\n output: S.Void,\n }) {}\n\n export class OpenSettings extends S.TaggedClass<OpenSettings>()(`${SPACE_ACTION}/open-settings`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Open extends S.TaggedClass<Open>()(`${SPACE_ACTION}/open`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Close extends S.TaggedClass<Close>()(`${SPACE_ACTION}/close`, {\n input: S.Struct({\n space: SpaceSchema,\n }),\n output: S.Void,\n }) {}\n\n export class Migrate extends S.TaggedClass<Migrate>()(`${SPACE_ACTION}/migrate`, {\n input: S.Struct({\n space: SpaceSchema,\n version: S.optional(S.String),\n }),\n output: S.Boolean,\n }) {}\n\n export class OpenCreateObject extends S.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {\n input: S.Struct({\n target: S.Union(SpaceSchema, CollectionType),\n navigable: S.optional(S.Boolean),\n }),\n output: S.Void,\n }) {}\n\n export class AddObject extends S.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {\n input: S.Struct({\n object: ReactiveObjectSchema,\n target: S.Union(SpaceSchema, CollectionType),\n }),\n output: S.Struct({\n id: S.String,\n subject: S.Array(S.String),\n object: EchoObjectSchema,\n }),\n }) {}\n\n export const DeletionData = S.Struct({\n objects: S.Array(EchoObjectSchema),\n parentCollection: CollectionType,\n indices: S.Array(S.Number),\n nestedObjectsList: S.Array(S.Array(EchoObjectSchema)),\n wasActive: S.Array(S.String),\n });\n\n export type DeletionData = S.Schema.Type<typeof DeletionData>;\n\n export class RemoveObjects extends S.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {\n input: S.Struct({\n objects: S.Array(EchoObjectSchema),\n target: S.optional(CollectionType),\n deletionData: S.optional(DeletionData),\n }),\n output: S.Void,\n }) {}\n\n export class RenameObject extends S.TaggedClass<RenameObject>()(`${SPACE_ACTION}/rename-object`, {\n input: S.Struct({\n object: EchoObjectSchema,\n caller: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n\n export class DuplicateObject extends S.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {\n input: S.Struct({\n object: EchoObjectSchema,\n target: S.Union(SpaceSchema, CollectionType),\n }),\n output: S.Void,\n }) {}\n\n export class WaitForObject extends S.TaggedClass<WaitForObject>()(`${SPACE_ACTION}/wait-for-object`, {\n input: S.Struct({\n id: S.optional(S.String),\n }),\n output: S.Void,\n }) {}\n}\n\nexport namespace CollectionAction {\n export class Create extends S.TaggedClass<Create>()('dxos.org/plugin/collection/action/create', {\n input: S.Struct({\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: CollectionType,\n }),\n }) {}\n}\n"],
5
- "mappings": "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",
6
- "names": ["Expando", "Ref", "S", "TypedObject", "CollectionType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "objects", "mutable", "Array", "Ref", "Expando", "views", "Record", "key", "value", "Expando", "Ref", "S", "TypedObject", "ContactType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "identifiers", "mutable", "Array", "Struct", "type", "value", "ActorSchema", "contact", "Ref", "identityKey", "email", "MessageState", "MessageType", "timestamp", "state", "Enums", "sender", "text", "parts", "Expando", "properties", "Record", "key", "Any", "context", "ThreadStatus", "Union", "Literal", "ThreadType", "anchor", "status", "messages", "ChannelType", "threads", "AST", "S", "EchoObjectSchema", "ReactiveObjectSchema", "SpaceSchema", "SPACE_DIRECTORY_HANDLE", "SpaceSettingsSchema", "S", "mutable", "Struct", "showHidden", "Boolean", "SpaceForm", "name", "optional", "String", "annotations", "AST", "TitleAnnotationId", "edgeReplication", "defineObjectForm", "form", "SPACE_ACTION", "SPACE_PLUGIN", "SpaceAction", "OpenCreateSpace", "TaggedClass", "input", "Void", "output", "Create", "id", "subject", "Array", "space", "SpaceSchema", "Join", "invitationCode", "onDone", "Any", "Share", "Lock", "Unlock", "Rename", "caller", "AddSpace", "AddSpaceMenuGroup", "OpenSettings", "Open", "Close", "Migrate", "version", "OpenCreateObject", "target", "Union", "CollectionType", "navigable", "AddObject", "object", "ReactiveObjectSchema", "EchoObjectSchema", "DeletionData", "objects", "parentCollection", "indices", "Number", "nestedObjectsList", "wasActive", "RemoveObjects", "deletionData", "RenameObject", "DuplicateObject", "WaitForObject", "CollectionAction"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, Surface, useCapability } from '@dxos/app-framework';\nimport { SettingsStore } from '@dxos/local-storage';\nimport {\n getSpace,\n isEchoObject,\n isReactiveObject,\n isSpace,\n SpaceState,\n type ReactiveEchoObject,\n type Space,\n} from '@dxos/react-client/echo';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport { SpaceCapabilities } from './capabilities';\nimport {\n AdvancedObjectSettings,\n BaseObjectSettings,\n CollectionMain,\n CollectionSection,\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n CreateObjectDialog,\n CreateSpaceDialog,\n InlineSyncStatus,\n JOIN_DIALOG,\n JoinDialog,\n MenuFooter,\n POPOVER_RENAME_OBJECT,\n POPOVER_RENAME_SPACE,\n PopoverRenameObject,\n PopoverRenameSpace,\n SmallPresenceLive,\n SPACE_SETTINGS_DIALOG,\n SpacePluginSettings,\n SpacePresence,\n SpaceSettingsDialog,\n SpaceSettingsPanel,\n SyncStatus,\n type CreateObjectDialogProps,\n type SpaceSettingsDialogProps,\n POPOVER_ADD_SPACE,\n PopoverAddSpace,\n} from '../components';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, type SpaceSettingsProps } from '../types';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default ({ createInvitationUrl }: ReactSurfaceOptions) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SPACE_PLUGIN}/article`,\n role: 'article',\n filter: (data): data is { subject: Space } =>\n // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.\n isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,\n component: ({ data, role, ...rest }) => (\n <Surface\n data={{ id: data.subject.id, subject: data.subject.properties[CollectionType.typename]?.target }}\n role={role}\n {...rest}\n />\n ),\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: CollectionType } => data.subject instanceof CollectionType,\n component: ({ data }) => <CollectionMain collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/settings-panel`,\n // TODO(burdon): Add role name syntax to minimal plugin docs.\n role: 'complementary--settings',\n filter: (data): data is { subject: Space } => isSpace(data.subject),\n component: ({ data }) => <SpaceSettingsPanel space={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/object-settings-base-panel`,\n role: 'complementary--settings',\n position: 'hoist',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => <BaseObjectSettings object={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/object-settings-advanced-panel`,\n role: 'complementary--settings',\n position: 'fallback',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => <AdvancedObjectSettings object={data.subject} />,\n }),\n createSurface({\n id: SPACE_SETTINGS_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: SpaceSettingsDialogProps } => data.component === SPACE_SETTINGS_DIALOG,\n component: ({ data }) => <SpaceSettingsDialog {...data.props} createInvitationUrl={createInvitationUrl} />,\n }),\n createSurface({\n id: JOIN_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,\n component: ({ data }) => <JoinDialog {...data.props} />,\n }),\n createSurface({\n id: CREATE_SPACE_DIALOG,\n role: 'dialog',\n filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,\n component: () => <CreateSpaceDialog />,\n }),\n createSurface({\n id: CREATE_OBJECT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,\n component: ({ data }) => <CreateObjectDialog {...data.props} />,\n }),\n createSurface({\n id: POPOVER_RENAME_SPACE,\n role: 'popover',\n filter: (data): data is { props: Space } => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),\n component: ({ data }) => <PopoverRenameSpace space={data.props} />,\n }),\n createSurface({\n id: POPOVER_RENAME_OBJECT,\n role: 'popover',\n filter: (data): data is { props: ReactiveEchoObject<any> } =>\n data.component === POPOVER_RENAME_OBJECT && isReactiveObject(data.props),\n component: ({ data }) => <PopoverRenameObject object={data.props} />,\n }),\n createSurface({\n id: POPOVER_ADD_SPACE,\n role: 'popover',\n filter: (data): data is any => data.component === POPOVER_ADD_SPACE,\n component: () => <PopoverAddSpace />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: ReactiveEchoObject<any>; open?: boolean } =>\n typeof data.id === 'string' && isEchoObject(data.subject),\n component: ({ data }) => {\n // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.\n const state = useCapability(SpaceCapabilities.MutableState);\n return <SmallPresenceLive id={data.id} open={data.open} viewers={state.viewersByObject[data.id]} />;\n },\n }),\n createSurface({\n // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.\n id: `${SPACE_PLUGIN}/navtree-presence-fallback`,\n role: 'navtree-item-end',\n position: 'fallback',\n filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',\n component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-sync-status`,\n role: 'navtree-item-end',\n filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),\n component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | ReactiveEchoObject<any> } =>\n isSpace(data.subject) || isEchoObject(data.subject),\n component: ({ data }) => {\n const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);\n const object = isSpace(data.subject)\n ? data.subject.state.get() === SpaceState.SPACE_READY\n ? (space?.properties[CollectionType.typename]?.target as CollectionType)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-section`,\n role: 'section',\n filter: (data): data is { subject: CollectionType } => data.subject instanceof CollectionType,\n component: ({ data }) => <CollectionSection collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,\n component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n"],
5
- "mappings": "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",
6
- "names": ["React", "Capabilities", "contributes", "createSurface", "Surface", "useCapability", "SettingsStore", "getSpace", "isEchoObject", "isReactiveObject", "isSpace", "SpaceState", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SPACE_PLUGIN", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "Surface", "properties", "CollectionType", "typename", "target", "position", "CollectionMain", "collection", "SpaceSettingsPanel", "space", "isEchoObject", "BaseObjectSettings", "object", "AdvancedObjectSettings", "SPACE_SETTINGS_DIALOG", "SpaceSettingsDialog", "props", "JOIN_DIALOG", "JoinDialog", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "POPOVER_RENAME_SPACE", "PopoverRenameSpace", "POPOVER_RENAME_OBJECT", "isReactiveObject", "PopoverRenameObject", "POPOVER_ADD_SPACE", "PopoverAddSpace", "useCapability", "SpaceCapabilities", "MutableState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "getSpace", "undefined", "SpacePresence", "CollectionSection", "SettingsStore", "prefix", "SpacePluginSettings", "settings", "value", "MenuFooter", "SyncStatus"]
7
- }