@dxos/plugin-space 0.8.4-main.72ec0f3 → 0.8.4-main.7ace549

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 (187) hide show
  1. package/dist/lib/browser/{ObjectDetailsPanel-2BRUBHP6.mjs → ObjectDetailsPanel-ACGHWPDX.mjs} +2 -2
  2. package/dist/lib/browser/{ObjectDetailsPanel-2BRUBHP6.mjs.map → ObjectDetailsPanel-ACGHWPDX.mjs.map} +3 -3
  3. package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs → ObjectSettings-U3IH7BMV.mjs} +2 -2
  4. package/dist/lib/browser/{ObjectSettings-5LLWCVEK.mjs.map → ObjectSettings-U3IH7BMV.mjs.map} +3 -3
  5. package/dist/lib/browser/{RecordArticle-SXDRWTTU.mjs → RecordArticle-2PFEBPXY.mjs} +1 -1
  6. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-VQAB3GCQ.mjs → app-graph-builder-HABMCWAI.mjs} +140 -151
  8. package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs → app-graph-serializer-G3VFEGTN.mjs} +4 -4
  10. package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
  11. package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-K5J7ZB5P.mjs → chunk-C6DAPIFF.mjs} +3 -3
  13. package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-ERQMHU7L.mjs → chunk-GJOZILGC.mjs} +163 -105
  15. package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-J2BUK5E6.mjs → chunk-KCZ527AM.mjs} +169 -101
  17. package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-PU5IOFMG.mjs → chunk-P25R3AOK.mjs} +4 -47
  19. package/dist/lib/browser/{chunk-PU5IOFMG.mjs.map → chunk-P25R3AOK.mjs.map} +4 -4
  20. package/dist/lib/browser/{chunk-OLBBSOVI.mjs → chunk-POFUXISV.mjs} +53 -59
  21. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +47 -94
  23. package/dist/lib/browser/index.mjs.map +3 -3
  24. package/dist/lib/browser/{intent-resolver-Q2XWHAVA.mjs → intent-resolver-RZEWNJ2K.mjs} +51 -40
  25. package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
  26. package/dist/lib/browser/meta.json +1 -1
  27. package/dist/lib/browser/{react-root-MM4HADPE.mjs → react-root-JCRD74GI.mjs} +6 -6
  28. package/dist/lib/browser/{react-surface-SGZC3Y4U.mjs → react-surface-VOETEAG3.mjs} +28 -14
  29. package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
  30. package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
  31. package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
  32. package/dist/lib/browser/{settings-WKLGKUHQ.mjs → settings-TRLI52I5.mjs} +2 -2
  33. package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs → spaces-ready-OHGCWZHQ.mjs} +13 -7
  34. package/dist/lib/browser/{spaces-ready-C5QC2UFL.mjs.map → spaces-ready-OHGCWZHQ.mjs.map} +2 -2
  35. package/dist/lib/browser/{state-Q7YRE5KG.mjs → state-C7N6EDDZ.mjs} +2 -2
  36. package/dist/lib/browser/types/index.mjs +9 -3
  37. package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs → ObjectDetailsPanel-6OFTT3GG.mjs} +2 -2
  38. package/dist/lib/node-esm/{ObjectDetailsPanel-6PZQIQG3.mjs.map → ObjectDetailsPanel-6OFTT3GG.mjs.map} +3 -3
  39. package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs → ObjectSettings-YXPJQMJ5.mjs} +2 -2
  40. package/dist/lib/node-esm/{ObjectSettings-OQSBOH7K.mjs.map → ObjectSettings-YXPJQMJ5.mjs.map} +3 -3
  41. package/dist/lib/node-esm/{RecordArticle-NACBH42P.mjs → RecordArticle-SSJ7PULS.mjs} +1 -1
  42. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
  43. package/dist/lib/node-esm/{app-graph-builder-24JCLJPX.mjs → app-graph-builder-T6VJKIOA.mjs} +140 -151
  44. package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs → app-graph-serializer-2NLWWFUB.mjs} +4 -4
  46. package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs → chunk-7EV4SN47.mjs} +4 -47
  47. package/dist/lib/node-esm/{chunk-TJPQDQNI.mjs.map → chunk-7EV4SN47.mjs.map} +4 -4
  48. package/dist/lib/node-esm/{chunk-WC4VBFMA.mjs → chunk-AX3UGL5D.mjs} +53 -59
  49. package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-VH2EBZEV.mjs → chunk-I6FZP42D.mjs} +163 -105
  51. package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-ITQFSFQ3.mjs → chunk-JAMGJUFU.mjs} +169 -101
  53. package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-Z7BB6HC2.mjs → chunk-WWGV5FJM.mjs} +3 -3
  55. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
  57. package/dist/lib/node-esm/chunk-X34VDVMY.mjs.map +7 -0
  58. package/dist/lib/node-esm/index.mjs +47 -94
  59. package/dist/lib/node-esm/index.mjs.map +3 -3
  60. package/dist/lib/node-esm/{intent-resolver-YK4ESSET.mjs → intent-resolver-4PHJWDXW.mjs} +51 -40
  61. package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
  62. package/dist/lib/node-esm/meta.json +1 -1
  63. package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs → react-root-O5I5CDJ7.mjs} +6 -6
  64. package/dist/lib/node-esm/{react-surface-V7J2QB44.mjs → react-surface-J3XDMU2D.mjs} +28 -14
  65. package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
  66. package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
  67. package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
  68. package/dist/lib/node-esm/{settings-RBB5633M.mjs → settings-MNQTKHL7.mjs} +2 -2
  69. package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs → spaces-ready-ZPU24DA2.mjs} +13 -7
  70. package/dist/lib/node-esm/{spaces-ready-SJCXV6YH.mjs.map → spaces-ready-ZPU24DA2.mjs.map} +2 -2
  71. package/dist/lib/node-esm/{state-362I5BMK.mjs → state-45TXZQJ6.mjs} +2 -2
  72. package/dist/lib/node-esm/types/index.mjs +9 -3
  73. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/capabilities.d.ts +9 -4
  76. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/index.d.ts +1 -1
  78. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/repair.d.ts +4 -0
  82. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  84. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  85. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +147 -253
  86. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  87. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +14 -7
  88. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  89. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +147 -253
  90. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  92. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +147 -253
  93. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
  95. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  96. package/dist/types/src/components/RecordArticle.stories.d.ts +147 -253
  97. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
  98. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  99. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  100. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts +2 -2
  101. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
  102. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +147 -253
  103. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  105. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +147 -253
  106. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +147 -253
  108. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  109. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  110. package/dist/types/src/components/index.d.ts +2 -2
  111. package/dist/types/src/helpers/query.d.ts +1 -1
  112. package/dist/types/src/helpers/query.d.ts.map +1 -1
  113. package/dist/types/src/hooks/useTypeOptions.d.ts +2 -2
  114. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -1
  115. package/dist/types/src/translations.d.ts +147 -253
  116. package/dist/types/src/translations.d.ts.map +1 -1
  117. package/dist/types/src/types/form.d.ts +24 -0
  118. package/dist/types/src/types/form.d.ts.map +1 -0
  119. package/dist/types/src/types/index.d.ts +1 -0
  120. package/dist/types/src/types/index.d.ts.map +1 -1
  121. package/dist/types/src/types/types.d.ts +29 -72
  122. package/dist/types/src/types/types.d.ts.map +1 -1
  123. package/dist/types/src/util.d.ts +16 -32
  124. package/dist/types/src/util.d.ts.map +1 -1
  125. package/dist/types/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +54 -50
  127. package/src/SpacePlugin.ts +34 -84
  128. package/src/capabilities/app-graph-builder.ts +130 -227
  129. package/src/capabilities/capabilities.ts +10 -5
  130. package/src/capabilities/index.ts +1 -1
  131. package/src/capabilities/intent-resolver.ts +31 -35
  132. package/src/capabilities/react-surface.tsx +34 -8
  133. package/src/capabilities/repair.ts +57 -0
  134. package/src/capabilities/spaces-ready.ts +7 -1
  135. package/src/components/CreateDialog/CreateObjectDialog.tsx +33 -23
  136. package/src/components/CreateDialog/CreateObjectPanel.tsx +32 -25
  137. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +1 -1
  138. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -5
  139. package/src/components/ObjectSettings/BaseObjectSettings.tsx +1 -1
  140. package/src/components/ObjectSettings/ForeignKeys.tsx +5 -5
  141. package/src/components/RecordArticle.tsx +6 -6
  142. package/src/components/SchemaContainer.tsx +2 -2
  143. package/src/components/SpacePresence/SpacePresence.tsx +2 -2
  144. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +25 -6
  145. package/src/components/ViewEditor.tsx +9 -3
  146. package/src/helpers/query.ts +1 -1
  147. package/src/hooks/useTypeOptions.ts +3 -35
  148. package/src/translations.ts +52 -57
  149. package/src/types/form.ts +75 -0
  150. package/src/types/index.ts +1 -0
  151. package/src/types/types.ts +26 -36
  152. package/src/util.tsx +165 -107
  153. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +0 -7
  154. package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +0 -7
  156. package/dist/lib/browser/chunk-J2BUK5E6.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +0 -7
  158. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs +0 -349
  159. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +0 -7
  160. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +0 -7
  161. package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +0 -7
  162. package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +0 -7
  163. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs +0 -26
  164. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +0 -7
  165. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +0 -7
  166. package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +0 -7
  167. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs +0 -350
  168. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +0 -7
  169. package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +0 -7
  170. package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +0 -7
  171. package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +0 -7
  172. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +0 -7
  173. package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +0 -7
  174. package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +0 -7
  175. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs +0 -27
  176. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +0 -7
  177. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  178. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  179. package/src/capabilities/schema-defs.ts +0 -31
  180. /package/dist/lib/browser/{app-graph-serializer-KSLKMEPP.mjs.map → app-graph-serializer-G3VFEGTN.mjs.map} +0 -0
  181. /package/dist/lib/browser/{react-root-MM4HADPE.mjs.map → react-root-JCRD74GI.mjs.map} +0 -0
  182. /package/dist/lib/browser/{settings-WKLGKUHQ.mjs.map → settings-TRLI52I5.mjs.map} +0 -0
  183. /package/dist/lib/browser/{state-Q7YRE5KG.mjs.map → state-C7N6EDDZ.mjs.map} +0 -0
  184. /package/dist/lib/node-esm/{app-graph-serializer-R723K764.mjs.map → app-graph-serializer-2NLWWFUB.mjs.map} +0 -0
  185. /package/dist/lib/node-esm/{react-root-5ANDLQMX.mjs.map → react-root-O5I5CDJ7.mjs.map} +0 -0
  186. /package/dist/lib/node-esm/{settings-RBB5633M.mjs.map → settings-MNQTKHL7.mjs.map} +0 -0
  187. /package/dist/lib/node-esm/{state-362I5BMK.mjs.map → state-45TXZQJ6.mjs.map} +0 -0
@@ -2,18 +2,18 @@ import {
2
2
  useInputSurfaceLookup,
3
3
  usePath,
4
4
  useTypeOptions
5
- } from "./chunk-PU5IOFMG.mjs";
5
+ } from "./chunk-P25R3AOK.mjs";
6
6
  import {
7
7
  SpaceCapabilities
8
- } from "./chunk-K5J7ZB5P.mjs";
8
+ } from "./chunk-C6DAPIFF.mjs";
9
9
  import {
10
10
  COMPOSER_SPACE_LOCK,
11
11
  getSpaceDisplayName
12
- } from "./chunk-ERQMHU7L.mjs";
12
+ } from "./chunk-GJOZILGC.mjs";
13
13
  import {
14
14
  SpaceAction,
15
15
  SpaceForm
16
- } from "./chunk-M2Z6D4ZI.mjs";
16
+ } from "./chunk-6A3NWBB6.mjs";
17
17
  import {
18
18
  meta
19
19
  } from "./chunk-VZBIIYFM.mjs";
@@ -123,42 +123,42 @@ var AwaitingObject = ({ id }) => {
123
123
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
124
124
  import * as Effect from "effect/Effect";
125
125
  import * as Function2 from "effect/Function";
126
- import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
126
+ import * as Option2 from "effect/Option";
127
+ import React3, { useCallback as useCallback3, useMemo, useRef, useState as useState2 } from "react";
127
128
  import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2 } from "@dxos/app-framework";
128
- import { useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
129
- import { Obj as Obj2, Query, Type as Type2 } from "@dxos/echo";
129
+ import { useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
130
+ import { Obj as Obj2, Type } from "@dxos/echo";
131
+ import { EntityKind, SystemTypeAnnotation, getTypeAnnotation as getTypeAnnotation2 } from "@dxos/echo/internal";
130
132
  import { invariant } from "@dxos/invariant";
131
133
  import { useClient as useClient2 } from "@dxos/react-client";
132
- import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
134
+ import { getSpace, isLiveObject, isSpace, useSpaces } from "@dxos/react-client/echo";
133
135
  import { Dialog, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
134
136
  import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
135
- import { Collection, StoredSchema, getTypenameFromQuery } from "@dxos/schema";
136
- import { isNonNullable as isNonNullable2 } from "@dxos/util";
137
137
 
138
138
  // src/components/CreateDialog/CreateObjectPanel.tsx
139
139
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
140
140
  import * as Option from "effect/Option";
141
141
  import React2, { useCallback as useCallback2 } from "react";
142
- import { Type } from "@dxos/echo";
143
- import { ViewAnnotation, getTypeAnnotation } from "@dxos/echo/internal";
142
+ import { getTypeAnnotation } from "@dxos/echo/internal";
144
143
  import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
145
144
  import { Form } from "@dxos/react-ui-form";
146
145
  import { SearchList } from "@dxos/react-ui-searchlist";
147
146
  import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
147
+ import { ViewAnnotation } from "@dxos/schema";
148
148
  import { isNonNullable } from "@dxos/util";
149
- var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
149
+ var CreateObjectPanel = ({ schemas, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
150
150
  var _effect = _useSignals2();
151
151
  try {
152
152
  const { t } = useTranslation2(meta.id);
153
153
  const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
154
- const form = forms.find((form2) => Type.getTypename(form2.objectSchema) === typename);
155
- const options = forms.filter((form2) => {
154
+ const metadata = typename && resolve?.(typename);
155
+ const options = schemas.filter((schema) => {
156
156
  if (views == null) {
157
157
  return true;
158
158
  } else {
159
- return views === ViewAnnotation.get(form2.objectSchema).pipe(Option.getOrElse(() => false));
159
+ return views === ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false));
160
160
  }
161
- }).map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
161
+ }).map((schema) => getTypeAnnotation(schema)).filter(isNonNullable).sort((a, b) => {
162
162
  const nameA = t("typename label", {
163
163
  ns: a.typename,
164
164
  defaultValue: a.typename
@@ -170,34 +170,34 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormVa
170
170
  return nameA.localeCompare(nameB);
171
171
  });
172
172
  const handleCreateObject = useCallback2(async (props) => {
173
- if (!form) {
173
+ if (!metadata) {
174
174
  return;
175
175
  }
176
176
  await onCreateObject?.({
177
- form,
177
+ metadata,
178
178
  data: props
179
179
  });
180
180
  }, [
181
181
  onCreateObject,
182
- form
182
+ metadata
183
183
  ]);
184
184
  const handleSetTypename = useCallback2(async (typename2) => {
185
- const form2 = forms.find((form3) => getTypeAnnotation(form3.objectSchema)?.typename === typename2);
186
- if (form2 && !form2.formSchema) {
185
+ const metadata2 = resolve?.(typename2);
186
+ if (metadata2 && !metadata2.inputSchema) {
187
187
  await onCreateObject?.({
188
- form: form2
188
+ metadata: metadata2
189
189
  });
190
190
  } else {
191
191
  onTypenameChange?.(typename2);
192
192
  }
193
193
  }, [
194
- forms,
194
+ resolve,
195
195
  onCreateObject
196
196
  ]);
197
197
  const inputSurfaceLookup = useInputSurfaceLookup({
198
198
  target
199
199
  });
200
- return !form ? /* @__PURE__ */ React2.createElement(SelectSchema, {
200
+ return !metadata ? /* @__PURE__ */ React2.createElement(SelectSchema, {
201
201
  options,
202
202
  resolve,
203
203
  onChange: handleSetTypename
@@ -205,13 +205,13 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, views, initialFormVa
205
205
  spaces,
206
206
  defaultSpaceId,
207
207
  onChange: onTargetChange
208
- }) : form.formSchema ? /* @__PURE__ */ React2.createElement("div", {
208
+ }) : metadata.inputSchema ? /* @__PURE__ */ React2.createElement("div", {
209
209
  role: "none",
210
210
  className: cardDialogOverflow
211
211
  }, /* @__PURE__ */ React2.createElement(Form, {
212
212
  autoFocus: true,
213
213
  values: initialFormValues,
214
- schema: form.formSchema,
214
+ schema: metadata.inputSchema,
215
215
  testId: "create-object-form",
216
216
  onSave: handleCreateObject,
217
217
  lookupComponent: inputSurfaceLookup,
@@ -285,7 +285,7 @@ var SelectSchema = ({ options, resolve, onChange }) => {
285
285
  }, /* @__PURE__ */ React2.createElement("span", {
286
286
  className: "flex gap-2 items-center grow truncate"
287
287
  }, /* @__PURE__ */ React2.createElement(Icon2, {
288
- icon: resolve?.(option.typename).icon ?? "ph--placeholder--regular",
288
+ icon: resolve?.(option.typename)?.icon ?? "ph--placeholder--regular",
289
289
  size: 5
290
290
  }), t("typename label", {
291
291
  ns: option.typename,
@@ -305,19 +305,27 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
305
305
  const manager = usePluginManager();
306
306
  const { t } = useTranslation3(meta.id);
307
307
  const { dispatch } = useIntentDispatcher2();
308
- const forms = useCapabilities(SpaceCapabilities.ObjectForm);
309
308
  const [target, setTarget] = useState2(initialTarget);
310
309
  const [typename, setTypename] = useState2(initialTypename);
311
310
  const client = useClient2();
312
311
  const spaces = useSpaces();
313
- const space = isSpace(target) ? target : getSpace(target);
314
- const queryCollections = useQuery2(space, Query.type(Collection.QueryCollection));
315
- const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
316
312
  const closeRef = useRef(null);
317
- const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
313
+ const resolve = useCallback3((typename2) => {
314
+ const metadata = manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata;
315
+ return metadata?.createObjectIntent ? metadata : void 0;
316
+ }, [
318
317
  manager
319
318
  ]);
320
- const handleCreateObject = useCallback3(({ form, data = {} }) => Effect.gen(function* () {
319
+ const space = isSpace(target) ? target : getSpace(target);
320
+ const schemas = space?.db.schemaRegistry.query({
321
+ location: [
322
+ "runtime"
323
+ ]
324
+ }).runSync();
325
+ const userSchemas = useMemo(() => schemas?.filter((schema) => getTypeAnnotation2(schema)?.kind !== EntityKind.Relation).filter((schema) => !!resolve(Type.getTypename(schema))).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option2.getOrElse(() => false))) ?? [], [
326
+ schemas
327
+ ]);
328
+ const handleCreateObject = useCallback3(({ metadata, data = {} }) => Effect.gen(function* () {
321
329
  if (!target) {
322
330
  return;
323
331
  }
@@ -325,18 +333,18 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
325
333
  const space2 = isSpace(target) ? target : getSpace(target);
326
334
  invariant(space2, "Missing space", {
327
335
  F: __dxlog_file,
328
- L: 77,
336
+ L: 87,
329
337
  S: this,
330
338
  A: [
331
339
  "space",
332
340
  "'Missing space'"
333
341
  ]
334
342
  });
335
- const { object } = yield* dispatch(form.getIntent(data, {
343
+ const { object } = yield* dispatch(metadata.createObjectIntent(data, {
336
344
  space: space2
337
345
  }));
338
- if (isLiveObject(object) && !Obj2.instanceOf(StoredSchema, object)) {
339
- const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
346
+ if (isLiveObject(object) && !Obj2.instanceOf(Type.PersistentType, object)) {
347
+ const hidden = !metadata.addToCollectionOnCreate;
340
348
  const addObjectIntent = createIntent2(SpaceAction.AddObject, {
341
349
  target,
342
350
  object,
@@ -356,7 +364,6 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
356
364
  dispatch,
357
365
  target,
358
366
  resolve,
359
- hiddenTypenames,
360
367
  _shouldNavigate
361
368
  ]);
362
369
  return (
@@ -370,7 +377,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
370
377
  }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
371
378
  object: t("typename label", {
372
379
  ns: typename,
373
- defaultValue: views ? "View" : "Item"
380
+ defaultValue: views ? "View" : "Object"
374
381
  })
375
382
  })), /* @__PURE__ */ React3.createElement(Dialog.Close, {
376
383
  asChild: true
@@ -384,7 +391,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
384
391
  variant: "ghost",
385
392
  autoFocus: true
386
393
  }))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
387
- forms,
394
+ schemas: userSchemas,
388
395
  spaces,
389
396
  target,
390
397
  views,
@@ -615,7 +622,7 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
615
622
 
616
623
  // src/components/MembersContainer/MembersContainer.tsx
617
624
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
618
- import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
625
+ import React7, { useCallback as useCallback6, useMemo as useMemo2, useState as useState3 } from "react";
619
626
  import { QR } from "react-qr-rounded";
620
627
  import { createIntent as createIntent5 } from "@dxos/app-framework";
621
628
  import { useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
@@ -627,7 +634,7 @@ import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
627
634
  import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
628
635
  import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
629
636
  import { StackItem } from "@dxos/react-ui-stack";
630
- import { Collection as Collection2 } from "@dxos/schema";
637
+ import { Collection } from "@dxos/schema";
631
638
  import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
632
639
  import { hexToEmoji } from "@dxos/util";
633
640
  var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer/MembersContainer.tsx";
@@ -662,7 +669,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
662
669
  setInternalActiveAction(nextAction);
663
670
  localStorage.setItem(activeActionKey, nextAction);
664
671
  };
665
- const target = space.properties[Collection2.Collection.typename]?.target?.objects[0]?.target;
672
+ const target = space.properties[Collection.Collection.typename]?.target?.objects[0]?.target;
666
673
  const locked = space.properties[COMPOSER_SPACE_LOCK];
667
674
  const handleChangeLocked = useCallback6(() => {
668
675
  space.properties[COMPOSER_SPACE_LOCK] = !locked;
@@ -670,7 +677,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
670
677
  locked,
671
678
  space
672
679
  ]);
673
- const inviteActions = useMemo(() => ({
680
+ const inviteActions = useMemo2(() => ({
674
681
  inviteOne: {
675
682
  label: t("invite one label", {
676
683
  ns: "os"
@@ -1081,7 +1088,7 @@ var useQuerySpaceSchemas = (space) => {
1081
1088
 
1082
1089
  // src/components/SpacePresence/SpacePresence.tsx
1083
1090
  import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1084
- import * as Option2 from "effect/Option";
1091
+ import * as Option3 from "effect/Option";
1085
1092
  import React12, { forwardRef, useCallback as useCallback9, useEffect as useEffect3, useState as useState7 } from "react";
1086
1093
  import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework/react";
1087
1094
  import { generateName } from "@dxos/display-name";
@@ -1092,6 +1099,21 @@ import { useIdentity } from "@dxos/react-client/halo";
1092
1099
  import { Avatar, List, ListItem, Popover as Popover2, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
1093
1100
  import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
1094
1101
  import { ComplexMap, keyToFallback } from "@dxos/util";
1102
+
1103
+ // src/capabilities/index.ts
1104
+ import { lazy } from "@dxos/app-framework";
1105
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-HABMCWAI.mjs"));
1106
+ var AppGraphSerializer = lazy(() => import("./app-graph-serializer-G3VFEGTN.mjs"));
1107
+ var IdentityCreated = lazy(() => import("./identity-created-NAXTPQXE.mjs"));
1108
+ var IntentResolver = lazy(() => import("./intent-resolver-RZEWNJ2K.mjs"));
1109
+ var ReactRoot = lazy(() => import("./react-root-JCRD74GI.mjs"));
1110
+ var ReactSurface = lazy(() => import("./react-surface-VOETEAG3.mjs"));
1111
+ var Repair = lazy(() => import("./repair-CNLE35NF.mjs"));
1112
+ var SpaceSettings = lazy(() => import("./settings-TRLI52I5.mjs"));
1113
+ var SpaceState = lazy(() => import("./state-C7N6EDDZ.mjs"));
1114
+ var SpacesReady = lazy(() => import("./spaces-ready-OHGCWZHQ.mjs"));
1115
+
1116
+ // src/components/SpacePresence/SpacePresence.tsx
1095
1117
  var REFRESH_INTERVAL = 5e3;
1096
1118
  var ACTIVITY_DURATION = 3e4;
1097
1119
  var noViewers = new ComplexMap(PublicKey.hash);
@@ -1219,7 +1241,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
1219
1241
  const attended = useAttended();
1220
1242
  const startOfAttention = attended.at(-1);
1221
1243
  const path = usePath(graph, startOfAttention);
1222
- const containsAttended = !open && !isAttended && id && Option2.isSome(path) ? path.value.includes(id) : false;
1244
+ const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1223
1245
  const getActiveViewers = (viewers2) => {
1224
1246
  const moment = Date.now();
1225
1247
  return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
@@ -1320,13 +1342,13 @@ var SpacePluginSettings = ({ settings }) => {
1320
1342
  import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
1321
1343
  import * as Function3 from "effect/Function";
1322
1344
  import * as Schema from "effect/Schema";
1323
- import React14, { useCallback as useCallback10, useMemo as useMemo2, useState as useState8 } from "react";
1345
+ import React14, { useCallback as useCallback10, useMemo as useMemo3, useState as useState8 } from "react";
1324
1346
  import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9 } from "@dxos/app-framework";
1325
- import { useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
1347
+ import { useCapabilities, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
1326
1348
  import { log as log3 } from "@dxos/log";
1327
1349
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
1328
1350
  import { useClient as useClient7 } from "@dxos/react-client";
1329
- import { SpaceState } from "@dxos/react-client/echo";
1351
+ import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
1330
1352
  import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
1331
1353
  import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
1332
1354
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
@@ -1343,14 +1365,14 @@ var SpaceSettingsContainer = ({ space }) => {
1343
1365
  const { t } = useTranslation14(meta.id);
1344
1366
  const { dispatchPromise: dispatch } = useIntentDispatcher9();
1345
1367
  const client = useClient7();
1346
- const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
1368
+ const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
1347
1369
  const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
1348
1370
  const toggleEdgeReplication = useCallback10(async (next) => {
1349
1371
  setEdgeReplication(next);
1350
1372
  await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
1351
1373
  log3.catch(err, void 0, {
1352
1374
  F: __dxlog_file4,
1353
- L: 57,
1375
+ L: 58,
1354
1376
  S: void 0,
1355
1377
  C: (f, a) => f(...a)
1356
1378
  });
@@ -1387,7 +1409,7 @@ var SpaceSettingsContainer = ({ space }) => {
1387
1409
  toggleEdgeReplication,
1388
1410
  archived
1389
1411
  ]);
1390
- const values = useMemo2(() => ({
1412
+ const values = useMemo3(() => ({
1391
1413
  name: space.properties.name,
1392
1414
  icon: space.properties.icon,
1393
1415
  hue: space.properties.hue,
@@ -1400,7 +1422,7 @@ var SpaceSettingsContainer = ({ space }) => {
1400
1422
  edgeReplication,
1401
1423
  archived
1402
1424
  ]);
1403
- const customElements = useMemo2(() => ({
1425
+ const customElements = useMemo3(() => ({
1404
1426
  name: ({ type, label, getValue, onValueChange }) => {
1405
1427
  const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
1406
1428
  onValueChange,
@@ -1497,6 +1519,17 @@ var SpaceSettingsContainer = ({ space }) => {
1497
1519
  space,
1498
1520
  download
1499
1521
  ]);
1522
+ const repairs = useCapabilities(SpaceCapabilities.Repair);
1523
+ const handleRepair = useCallback10(async () => {
1524
+ await Promise.all(repairs.map((repair) => repair({
1525
+ space,
1526
+ isDefault: client.spaces.default === space
1527
+ })));
1528
+ }, [
1529
+ client,
1530
+ space,
1531
+ repairs
1532
+ ]);
1500
1533
  return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
1501
1534
  scrollable: true
1502
1535
  }, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
@@ -1514,8 +1547,18 @@ var SpaceSettingsContainer = ({ space }) => {
1514
1547
  Custom: customElements,
1515
1548
  outerSpacing: false,
1516
1549
  classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1517
- })), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1518
- title: t("backup space label", {
1550
+ })), /* @__PURE__ */ React14.createElement(ControlSection4, {
1551
+ title: t("space controls title", {
1552
+ ns: meta.id
1553
+ }),
1554
+ description: t("space controls description", {
1555
+ ns: meta.id
1556
+ })
1557
+ }, /* @__PURE__ */ React14.createElement("div", {
1558
+ role: "none",
1559
+ className: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
1560
+ }, /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1561
+ title: t("backup space title", {
1519
1562
  ns: meta.id
1520
1563
  }),
1521
1564
  description: t("backup space description", {
@@ -1523,7 +1566,16 @@ var SpaceSettingsContainer = ({ space }) => {
1523
1566
  })
1524
1567
  }, /* @__PURE__ */ React14.createElement(Button5, {
1525
1568
  onClick: handleBackup
1526
- }, t("download backup")))));
1569
+ }, t("download backup label"))), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
1570
+ title: t("repair space title", {
1571
+ ns: meta.id
1572
+ }),
1573
+ description: t("repair space description", {
1574
+ ns: meta.id
1575
+ })
1576
+ }, /* @__PURE__ */ React14.createElement(Button5, {
1577
+ onClick: handleRepair
1578
+ }, t("repair space label")))))));
1527
1579
  } finally {
1528
1580
  _effect.f();
1529
1581
  }
@@ -1531,7 +1583,7 @@ var SpaceSettingsContainer = ({ space }) => {
1531
1583
 
1532
1584
  // src/components/SyncStatus/InlineSyncStatus.tsx
1533
1585
  import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1534
- import * as Option3 from "effect/Option";
1586
+ import * as Option4 from "effect/Option";
1535
1587
  import React15, { useEffect as useEffect4, useState as useState9 } from "react";
1536
1588
  import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
1537
1589
  import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
@@ -1563,7 +1615,7 @@ var InlineSyncStatus = ({ space, open }) => {
1563
1615
  const attended = useAttended2();
1564
1616
  const startOfAttention = attended.at(-1);
1565
1617
  const path = usePath(graph, startOfAttention);
1566
- const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
1618
+ const containsAttended = !open && !isAttended && id && Option4.isSome(path) ? path.value.includes(id) : false;
1567
1619
  const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
1568
1620
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
1569
1621
  const syncState = useSpaceSyncState(space);
@@ -1825,16 +1877,16 @@ import * as Array2 from "effect/Array";
1825
1877
  import * as Effect3 from "effect/Effect";
1826
1878
  import * as EffectFunction from "effect/Function";
1827
1879
  import * as Match from "effect/Match";
1828
- import * as Option4 from "effect/Option";
1880
+ import * as Option5 from "effect/Option";
1829
1881
  import * as SchemaAST from "effect/SchemaAST";
1830
- import { DXN, Filter as Filter2, Query as Query2 } from "@dxos/echo";
1831
- import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation2, unwrapOptional } from "@dxos/echo/internal";
1882
+ import { DXN, Filter as Filter2, Query } from "@dxos/echo";
1883
+ import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation3, unwrapOptional } from "@dxos/echo/internal";
1832
1884
  import { log as log4 } from "@dxos/log";
1833
1885
  import { Person } from "@dxos/types";
1834
1886
  var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/helpers/query.ts";
1835
1887
  var evalQuery = (queryString) => {
1836
1888
  const globals = {
1837
- Query: Query2,
1889
+ Query,
1838
1890
  Filter: Filter2,
1839
1891
  Person
1840
1892
  };
@@ -1847,26 +1899,26 @@ var evalQuery = (queryString) => {
1847
1899
  S: void 0,
1848
1900
  C: (f, a) => f(...a)
1849
1901
  });
1850
- return Query2.select(Filter2.nothing());
1902
+ return Query.select(Filter2.nothing());
1851
1903
  }
1852
1904
  };
1853
1905
  var resolveSchemaWithClientAndSpace = (client, space, query) => {
1854
1906
  const resolve = Effect3.fn(function* (dxn) {
1855
1907
  const typename = DXN.parse(dxn).asTypeDXN()?.type;
1856
1908
  if (!typename) {
1857
- return Option4.none();
1909
+ return Option5.none();
1858
1910
  }
1859
1911
  const staticSchema = client.graph.schemaRegistry.getSchema(typename);
1860
1912
  if (staticSchema) {
1861
- return Option4.some(staticSchema);
1913
+ return Option5.some(staticSchema);
1862
1914
  }
1863
1915
  const query2 = space.db.schemaRegistry.query({
1864
1916
  typename
1865
1917
  });
1866
1918
  const schemas = yield* Effect3.promise(() => query2.run());
1867
- return Array2.head(schemas).pipe(Option4.map((schema) => schema.snapshot));
1919
+ return Array2.head(schemas);
1868
1920
  });
1869
- return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option4.getOrUndefined(schema)), Effect3.runPromise);
1921
+ return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option5.getOrUndefined(schema)), Effect3.runPromise);
1870
1922
  };
1871
1923
  var resolveSchema = (query, resolve) => {
1872
1924
  return Match.value(query).pipe(
@@ -1874,46 +1926,46 @@ var resolveSchema = (query, resolve) => {
1874
1926
  // TODO(wittjosiah): Reconcile with filter match?
1875
1927
  Match.when({
1876
1928
  type: "select"
1877
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1929
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1878
1930
  Match.when({
1879
1931
  type: "filter"
1880
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1932
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1881
1933
  Match.when({
1882
1934
  type: "reference-traversal"
1883
- }, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option4.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option4.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option4.map((annotation) => annotation.typename))), Effect3.flatMap(Option4.match({
1884
- onNone: () => Effect3.succeed(Option4.none()),
1935
+ }, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option5.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option5.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option5.map((annotation) => annotation.typename))), Effect3.flatMap(Option5.match({
1936
+ onNone: () => Effect3.succeed(Option5.none()),
1885
1937
  onSome: (typename) => resolve(DXN.fromTypename(typename).toString())
1886
1938
  })))),
1887
1939
  Match.when({
1888
1940
  type: "relation",
1889
1941
  filter: Match.defined
1890
- }, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
1942
+ }, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
1891
1943
  Match.when({
1892
1944
  type: "relation-traversal"
1893
- }, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => getTypeAnnotation2(schema)), Option4.flatMap((annotation) => Option4.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option4.match({
1894
- onNone: () => Effect3.succeed(Option4.none()),
1945
+ }, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => getTypeAnnotation3(schema)), Option5.flatMap((annotation) => Option5.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option5.match({
1946
+ onNone: () => Effect3.succeed(Option5.none()),
1895
1947
  onSome: (typename) => resolve(typename)
1896
1948
  })))),
1897
1949
  Match.when({
1898
1950
  type: "options"
1899
1951
  }, ({ query: query2 }) => resolveSchema(query2, resolve)),
1900
1952
  Match.orElse((_q) => {
1901
- return Effect3.succeed(Option4.none());
1953
+ return Effect3.succeed(Option5.none());
1902
1954
  })
1903
1955
  );
1904
1956
  };
1905
1957
  var typenameFromFilter = (filter) => Match.value(filter).pipe(Match.withReturnType(), Match.when({
1906
1958
  type: "object"
1907
- }, ({ typename }) => Option4.fromNullable(typename)), Match.when({
1959
+ }, ({ typename }) => Option5.fromNullable(typename)), Match.when({
1908
1960
  type: "and"
1909
- }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.when({
1961
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.when({
1910
1962
  type: "or"
1911
- }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.orElse(() => Option4.none()));
1963
+ }, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.orElse(() => Option5.none()));
1912
1964
  var getQueryTarget = (query, space) => {
1913
1965
  return Match.value(query).pipe(Match.when({
1914
1966
  type: "options"
1915
1967
  }, ({ options }) => {
1916
- return Option4.fromNullable(options.queues).pipe(Option4.flatMap((queues) => Array2.head(queues)), Option4.flatMap((queueDxn) => Option4.fromNullable(DXN.tryParse(queueDxn))), Option4.flatMap((queueDxn) => Option4.fromNullable(space?.queues.get(queueDxn))), Option4.getOrElse(() => space));
1968
+ return Option5.fromNullable(options.queues).pipe(Option5.flatMap((queues) => Array2.head(queues)), Option5.flatMap((queueDxn) => Option5.fromNullable(DXN.tryParse(queueDxn))), Option5.flatMap((queueDxn) => Option5.fromNullable(space?.queues.get(queueDxn))), Option5.getOrElse(() => space));
1917
1969
  }), Match.orElse(() => space));
1918
1970
  };
1919
1971
 
@@ -1923,9 +1975,9 @@ import * as Schema2 from "effect/Schema";
1923
1975
  import React17, { useCallback as useCallback11, useState as useState11 } from "react";
1924
1976
  import { createIntent as createIntent10 } from "@dxos/app-framework";
1925
1977
  import { useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework/react";
1926
- import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query3, Tag, Type as Type3 } from "@dxos/echo";
1978
+ import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query2, Tag, Type as Type2 } from "@dxos/echo";
1927
1979
  import { useClient as useClient10 } from "@dxos/react-client";
1928
- import { getSpace as getSpace4, useQuery as useQuery3 } from "@dxos/react-client/echo";
1980
+ import { getSpace as getSpace4, useQuery as useQuery2 } from "@dxos/react-client/echo";
1929
1981
  import { useAsyncEffect } from "@dxos/react-ui";
1930
1982
  import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
1931
1983
  import { View } from "@dxos/schema";
@@ -1936,14 +1988,21 @@ var ViewEditor = ({ view }) => {
1936
1988
  const client = useClient10();
1937
1989
  const space = getSpace4(view);
1938
1990
  const [schema, setSchema] = useState11(() => Schema2.Struct({}));
1939
- const tags = useQuery3(space, Filter3.type(Tag.Tag));
1991
+ const tags = useQuery2(space, Filter3.type(Tag.Tag));
1940
1992
  const types = useTypeOptions({
1941
1993
  space,
1942
- annotation: [
1943
- "dynamic",
1944
- "limited-static",
1945
- "object-form"
1946
- ]
1994
+ annotation: {
1995
+ location: [
1996
+ "database",
1997
+ "runtime"
1998
+ ],
1999
+ kind: [
2000
+ "user"
2001
+ ],
2002
+ registered: [
2003
+ "registered"
2004
+ ]
2005
+ }
1947
2006
  });
1948
2007
  useAsyncEffect(async () => {
1949
2008
  if (!view?.query || !space) {
@@ -1964,11 +2023,11 @@ var ViewEditor = ({ view }) => {
1964
2023
  return;
1965
2024
  }
1966
2025
  const queue = target && DXN2.tryParse(target) ? target : void 0;
1967
- const query = queue ? Query3.fromAst(newQuery).options({
2026
+ const query = queue ? Query2.fromAst(newQuery).options({
1968
2027
  queues: [
1969
2028
  queue
1970
2029
  ]
1971
- }) : Query3.fromAst(newQuery);
2030
+ }) : Query2.fromAst(newQuery);
1972
2031
  view.query.ast = query.ast;
1973
2032
  const newSchema = await resolveSchemaWithClientAndSpace(client, space, query.ast);
1974
2033
  if (!newSchema) {
@@ -1976,8 +2035,7 @@ var ViewEditor = ({ view }) => {
1976
2035
  }
1977
2036
  const newView = View.make({
1978
2037
  query,
1979
- jsonSchema: Type3.toJsonSchema(newSchema),
1980
- presentation: Obj6.make(Type3.Expando, {})
2038
+ jsonSchema: Type2.toJsonSchema(newSchema)
1981
2039
  });
1982
2040
  view.projection = Obj6.getSnapshot(newView).projection;
1983
2041
  setSchema(() => newSchema);
@@ -2001,12 +2059,12 @@ var ViewEditor = ({ view }) => {
2001
2059
  registry: space.db.schemaRegistry,
2002
2060
  schema,
2003
2061
  view,
2004
- mode: "query",
2062
+ mode: "tag",
2005
2063
  outerSpacing: false,
2006
2064
  tags,
2007
2065
  types,
2008
2066
  onQueryChanged: handleQueryChanged,
2009
- onDelete: Type3.isMutable(schema) ? handleDelete : void 0
2067
+ onDelete: Type2.isMutable(schema) ? handleDelete : void 0
2010
2068
  });
2011
2069
  } finally {
2012
2070
  _effect.f();
@@ -2014,11 +2072,11 @@ var ViewEditor = ({ view }) => {
2014
2072
  };
2015
2073
 
2016
2074
  // src/components/index.ts
2017
- import { lazy } from "react";
2018
- var CollectionArticle = lazy(() => import("./CollectionArticle-WTHWY4YS.mjs"));
2019
- var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-2BRUBHP6.mjs"));
2020
- var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-5LLWCVEK.mjs"));
2021
- var RecordArticle = lazy(() => import("./RecordArticle-SXDRWTTU.mjs"));
2075
+ import { lazy as lazy2 } from "react";
2076
+ var CollectionArticle = lazy2(() => import("./CollectionArticle-WTHWY4YS.mjs"));
2077
+ var ObjectDetailsPanel = lazy2(() => import("./ObjectDetailsPanel-ACGHWPDX.mjs"));
2078
+ var ObjectSettingsContainer = lazy2(() => import("./ObjectSettings-U3IH7BMV.mjs"));
2079
+ var RecordArticle = lazy2(() => import("./RecordArticle-2PFEBPXY.mjs"));
2022
2080
 
2023
2081
  export {
2024
2082
  AwaitingObject,
@@ -2053,6 +2111,16 @@ export {
2053
2111
  CollectionArticle,
2054
2112
  ObjectDetailsPanel,
2055
2113
  ObjectSettingsContainer,
2056
- RecordArticle
2114
+ RecordArticle,
2115
+ AppGraphBuilder,
2116
+ AppGraphSerializer,
2117
+ IdentityCreated,
2118
+ IntentResolver,
2119
+ ReactRoot,
2120
+ ReactSurface,
2121
+ Repair,
2122
+ SpaceSettings,
2123
+ SpaceState,
2124
+ SpacesReady
2057
2125
  };
2058
- //# sourceMappingURL=chunk-J2BUK5E6.mjs.map
2126
+ //# sourceMappingURL=chunk-KCZ527AM.mjs.map