@dxos/plugin-magazine 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/lib/MagazinePlugin.mjs +36 -0
  2. package/dist/lib/MagazinePlugin.mjs.map +1 -0
  3. package/dist/lib/MagazinePlugin.workerd.mjs +26 -0
  4. package/dist/lib/MagazinePlugin.workerd.mjs.map +1 -0
  5. package/dist/lib/atoms.mjs +175 -0
  6. package/dist/lib/atoms.mjs.map +1 -0
  7. package/dist/lib/capabilities.mjs +12 -0
  8. package/dist/lib/capabilities.mjs.map +1 -0
  9. package/dist/lib/chunk-FeedArticle.mjs +70 -0
  10. package/dist/lib/chunk-FeedArticle.mjs.map +1 -0
  11. package/dist/lib/chunk-FeedProperties.mjs +78 -0
  12. package/dist/lib/chunk-FeedProperties.mjs.map +1 -0
  13. package/dist/lib/chunk-MagazineArticle.mjs +267 -0
  14. package/dist/lib/chunk-MagazineArticle.mjs.map +1 -0
  15. package/dist/lib/chunk-PostArticle.mjs +174 -0
  16. package/dist/lib/chunk-PostArticle.mjs.map +1 -0
  17. package/dist/lib/chunk-PostCard.mjs +62 -0
  18. package/dist/lib/chunk-PostCard.mjs.map +1 -0
  19. package/dist/lib/chunk-app-graph-builder.mjs +91 -0
  20. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  21. package/dist/lib/chunk-clear-magazine.mjs +37 -0
  22. package/dist/lib/chunk-clear-magazine.mjs.map +1 -0
  23. package/dist/lib/chunk-create-object.mjs +59 -0
  24. package/dist/lib/chunk-create-object.mjs.map +1 -0
  25. package/dist/lib/chunk-curate-magazine.mjs +164 -0
  26. package/dist/lib/chunk-curate-magazine.mjs.map +1 -0
  27. package/dist/lib/chunk-date.mjs +25 -0
  28. package/dist/lib/chunk-date.mjs.map +1 -0
  29. package/dist/lib/chunk-fetch-article-content.mjs +26 -0
  30. package/dist/lib/chunk-fetch-article-content.mjs.map +1 -0
  31. package/dist/lib/chunk-load-post-content.mjs +57 -0
  32. package/dist/lib/chunk-load-post-content.mjs.map +1 -0
  33. package/dist/lib/{neutral/chunk-JFPR6OV4.mjs → chunk-meta.mjs} +19 -26
  34. package/dist/lib/chunk-meta.mjs.map +1 -0
  35. package/dist/lib/chunk-operation-handler.mjs +13 -0
  36. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  37. package/dist/lib/chunk-paths.mjs +8 -0
  38. package/dist/lib/chunk-paths.mjs.map +1 -0
  39. package/dist/lib/chunk-post-content.mjs +14 -0
  40. package/dist/lib/chunk-post-content.mjs.map +1 -0
  41. package/dist/lib/chunk-react-surface.mjs +60 -0
  42. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  43. package/dist/lib/chunk-routine-templates.mjs +52 -0
  44. package/dist/lib/chunk-routine-templates.mjs.map +1 -0
  45. package/dist/lib/chunk-skill-definition.mjs +12 -0
  46. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  47. package/dist/lib/chunk-sources.mjs +576 -0
  48. package/dist/lib/chunk-sources.mjs.map +1 -0
  49. package/dist/lib/chunk-sync-feed.mjs +86 -0
  50. package/dist/lib/chunk-sync-feed.mjs.map +1 -0
  51. package/dist/lib/chunk-text.mjs +52 -0
  52. package/dist/lib/chunk-text.mjs.map +1 -0
  53. package/dist/lib/chunk-types.mjs +607 -0
  54. package/dist/lib/chunk-types.mjs.map +1 -0
  55. package/dist/lib/components.mjs +323 -0
  56. package/dist/lib/components.mjs.map +1 -0
  57. package/dist/lib/containers.mjs +11 -0
  58. package/dist/lib/containers.mjs.map +1 -0
  59. package/dist/lib/index.mjs +3 -0
  60. package/dist/lib/meta.mjs +2 -0
  61. package/dist/lib/operations.mjs +7 -0
  62. package/dist/lib/operations.mjs.map +1 -0
  63. package/dist/lib/plugin.mjs +9 -0
  64. package/dist/lib/plugin.mjs.map +1 -0
  65. package/dist/lib/plugin.workerd.mjs +3 -0
  66. package/dist/lib/{neutral/skills/index.mjs → skills.mjs} +15 -28
  67. package/dist/lib/skills.mjs.map +1 -0
  68. package/dist/lib/testing.mjs +71 -0
  69. package/dist/lib/testing.mjs.map +1 -0
  70. package/dist/lib/translations.mjs +74 -0
  71. package/dist/lib/translations.mjs.map +1 -0
  72. package/dist/lib/types.mjs +2 -0
  73. package/dist/types/src/MagazinePlugin.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  75. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  76. package/dist/types/src/capabilities/index.d.ts +0 -1
  77. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  79. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  80. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/routine-templates.d.ts +1 -1
  82. package/dist/types/src/components/PostContent/PostContent.d.ts +1 -13
  83. package/dist/types/src/components/PostContent/PostContent.d.ts.map +1 -1
  84. package/dist/types/src/components/PostContent/dedupe-images.d.ts +13 -0
  85. package/dist/types/src/components/PostContent/dedupe-images.d.ts.map +1 -0
  86. package/dist/types/src/components/PostContent/index.d.ts +1 -0
  87. package/dist/types/src/components/PostContent/index.d.ts.map +1 -1
  88. package/dist/types/src/components/PostStack/PostStack.d.ts +1 -1
  89. package/dist/types/src/components/PostStack/PostStack.d.ts.map +1 -1
  90. package/dist/types/src/components/SubscriptionStack/SubscriptionStack.d.ts +1 -1
  91. package/dist/types/src/components/SubscriptionStack/SubscriptionStack.d.ts.map +1 -1
  92. package/dist/types/src/containers/FeedArticle/FeedArticle.d.ts +4 -1
  93. package/dist/types/src/containers/FeedArticle/FeedArticle.d.ts.map +1 -1
  94. package/dist/types/src/containers/FeedProperties/FeedProperties.d.ts +4 -1
  95. package/dist/types/src/containers/FeedProperties/FeedProperties.d.ts.map +1 -1
  96. package/dist/types/src/containers/MagazineArticle/MagazineArticle.d.ts +4 -1
  97. package/dist/types/src/containers/MagazineArticle/MagazineArticle.d.ts.map +1 -1
  98. package/dist/types/src/containers/MagazineArticle/MagazineArticle.stories.d.ts.map +1 -1
  99. package/dist/types/src/containers/MagazineArticle/MagazineTile.d.ts +4 -1
  100. package/dist/types/src/containers/MagazineArticle/MagazineTile.d.ts.map +1 -1
  101. package/dist/types/src/containers/MagazineArticle/useToolbar.d.ts +4 -8
  102. package/dist/types/src/containers/MagazineArticle/useToolbar.d.ts.map +1 -1
  103. package/dist/types/src/containers/PostArticle/PostArticle.d.ts +4 -1
  104. package/dist/types/src/containers/PostArticle/PostArticle.d.ts.map +1 -1
  105. package/dist/types/src/containers/PostArticle/PostArticle.stories.d.ts.map +1 -1
  106. package/dist/types/src/containers/PostArticle/PostToolbar.d.ts +1 -1
  107. package/dist/types/src/containers/PostArticle/PostToolbar.d.ts.map +1 -1
  108. package/dist/types/src/containers/PostCard/PostCard.d.ts +4 -6
  109. package/dist/types/src/containers/PostCard/PostCard.d.ts.map +1 -1
  110. package/dist/types/src/containers/SubscriptionsArticle/SubscriptionsArticle.d.ts +4 -1
  111. package/dist/types/src/containers/SubscriptionsArticle/SubscriptionsArticle.d.ts.map +1 -1
  112. package/dist/types/src/containers/SubscriptionsArticle/SubscriptionsArticle.stories.d.ts.map +1 -1
  113. package/dist/types/src/stories/ArticleExtractor.stories.d.ts +1 -0
  114. package/dist/types/src/stories/ArticleExtractor.stories.d.ts.map +1 -1
  115. package/dist/types/src/stories/MagazineCurate.stories.d.ts.map +1 -1
  116. package/dist/types/src/templates/magazine-curation.d.ts.map +1 -1
  117. package/dist/types/src/translations.d.ts +1 -0
  118. package/dist/types/src/translations.d.ts.map +1 -1
  119. package/dist/types/tsconfig.tsbuildinfo +1 -1
  120. package/dx.config.ts +1 -1
  121. package/package.json +57 -60
  122. package/src/MagazinePlugin.tsx +0 -3
  123. package/src/atoms/atoms.test.ts +5 -4
  124. package/src/capabilities/app-graph-builder.ts +8 -6
  125. package/src/capabilities/index.ts +0 -1
  126. package/src/capabilities/{react-surface.tsx → react-surface.ts} +10 -12
  127. package/src/components/PostContent/PostContent.test.ts +1 -1
  128. package/src/components/PostContent/PostContent.tsx +1 -41
  129. package/src/components/PostContent/dedupe-images.ts +48 -0
  130. package/src/components/PostContent/index.ts +1 -0
  131. package/src/containers/FeedArticle/FeedArticle.stories.tsx +2 -2
  132. package/src/containers/FeedArticle/FeedArticle.tsx +4 -2
  133. package/src/containers/FeedProperties/FeedProperties.tsx +6 -4
  134. package/src/containers/MagazineArticle/MagazineArticle.stories.tsx +2 -1
  135. package/src/containers/MagazineArticle/MagazineArticle.tsx +8 -6
  136. package/src/containers/MagazineArticle/MagazineTile.tsx +2 -0
  137. package/src/containers/MagazineArticle/useToolbar.tsx +2 -0
  138. package/src/containers/PostArticle/PostArticle.stories.tsx +2 -1
  139. package/src/containers/PostArticle/PostArticle.tsx +6 -3
  140. package/src/containers/PostArticle/PostToolbar.tsx +1 -1
  141. package/src/containers/PostCard/PostCard.tsx +3 -1
  142. package/src/containers/SubscriptionsArticle/SubscriptionsArticle.stories.tsx +2 -1
  143. package/src/containers/SubscriptionsArticle/SubscriptionsArticle.tsx +5 -3
  144. package/src/operations/curate-magazine.test.ts +108 -4
  145. package/src/operations/sync-feed.test.ts +1 -1
  146. package/src/operations/sync-feed.ts +1 -1
  147. package/src/paths.ts +3 -3
  148. package/src/stories/ArticleExtractor.stories.tsx +1 -1
  149. package/src/stories/MagazineCurate.stories.tsx +3 -2
  150. package/src/templates/magazine-curation.ts +3 -2
  151. package/src/types/Magazine.test.ts +1 -1
  152. package/src/types/Subscription.ts +1 -1
  153. package/dist/lib/neutral/FeedArticle-PEWCFFSP.mjs +0 -90
  154. package/dist/lib/neutral/FeedArticle-PEWCFFSP.mjs.map +0 -7
  155. package/dist/lib/neutral/FeedProperties-EIO7IZOA.mjs +0 -97
  156. package/dist/lib/neutral/FeedProperties-EIO7IZOA.mjs.map +0 -7
  157. package/dist/lib/neutral/MagazineArticle-5T7RTIPS.mjs +0 -325
  158. package/dist/lib/neutral/MagazineArticle-5T7RTIPS.mjs.map +0 -7
  159. package/dist/lib/neutral/MagazinePlugin.mjs +0 -62
  160. package/dist/lib/neutral/MagazinePlugin.mjs.map +0 -7
  161. package/dist/lib/neutral/MagazinePlugin.workerd.mjs +0 -12
  162. package/dist/lib/neutral/MagazinePlugin.workerd.mjs.map +0 -7
  163. package/dist/lib/neutral/PostArticle-BGIPU7XA.mjs +0 -230
  164. package/dist/lib/neutral/PostArticle-BGIPU7XA.mjs.map +0 -7
  165. package/dist/lib/neutral/PostCard-VDGN7BBA.mjs +0 -60
  166. package/dist/lib/neutral/PostCard-VDGN7BBA.mjs.map +0 -7
  167. package/dist/lib/neutral/app-graph-builder-JDPRBVHL.mjs +0 -121
  168. package/dist/lib/neutral/app-graph-builder-JDPRBVHL.mjs.map +0 -7
  169. package/dist/lib/neutral/capabilities/index.mjs +0 -21
  170. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  171. package/dist/lib/neutral/chunk-3K4AQKBZ.mjs +0 -12
  172. package/dist/lib/neutral/chunk-3K4AQKBZ.mjs.map +0 -7
  173. package/dist/lib/neutral/chunk-AFPBWBTK.mjs +0 -591
  174. package/dist/lib/neutral/chunk-AFPBWBTK.mjs.map +0 -7
  175. package/dist/lib/neutral/chunk-APQRTYT3.mjs +0 -57
  176. package/dist/lib/neutral/chunk-APQRTYT3.mjs.map +0 -7
  177. package/dist/lib/neutral/chunk-GU725ZF4.mjs +0 -11
  178. package/dist/lib/neutral/chunk-GU725ZF4.mjs.map +0 -7
  179. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  180. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  181. package/dist/lib/neutral/chunk-JFPR6OV4.mjs.map +0 -7
  182. package/dist/lib/neutral/chunk-KTYLUOUG.mjs +0 -36
  183. package/dist/lib/neutral/chunk-KTYLUOUG.mjs.map +0 -7
  184. package/dist/lib/neutral/chunk-LFSQMLPK.mjs +0 -8
  185. package/dist/lib/neutral/chunk-LFSQMLPK.mjs.map +0 -7
  186. package/dist/lib/neutral/chunk-MBPX7RPI.mjs +0 -14
  187. package/dist/lib/neutral/chunk-MBPX7RPI.mjs.map +0 -7
  188. package/dist/lib/neutral/chunk-OYCDRSWB.mjs +0 -624
  189. package/dist/lib/neutral/chunk-OYCDRSWB.mjs.map +0 -7
  190. package/dist/lib/neutral/chunk-SAWKLGJU.mjs +0 -28
  191. package/dist/lib/neutral/chunk-SAWKLGJU.mjs.map +0 -7
  192. package/dist/lib/neutral/chunk-XCNCK47N.mjs +0 -15
  193. package/dist/lib/neutral/chunk-XCNCK47N.mjs.map +0 -7
  194. package/dist/lib/neutral/clear-magazine-KNY4OWY4.mjs +0 -59
  195. package/dist/lib/neutral/clear-magazine-KNY4OWY4.mjs.map +0 -7
  196. package/dist/lib/neutral/components/index.mjs +0 -338
  197. package/dist/lib/neutral/components/index.mjs.map +0 -7
  198. package/dist/lib/neutral/containers/index.mjs +0 -17
  199. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  200. package/dist/lib/neutral/create-object-SYZMRR4H.mjs +0 -98
  201. package/dist/lib/neutral/create-object-SYZMRR4H.mjs.map +0 -7
  202. package/dist/lib/neutral/curate-magazine-7RMKSJC5.mjs +0 -184
  203. package/dist/lib/neutral/curate-magazine-7RMKSJC5.mjs.map +0 -7
  204. package/dist/lib/neutral/fetch-article-content-CXPKXIMR.mjs +0 -31
  205. package/dist/lib/neutral/fetch-article-content-CXPKXIMR.mjs.map +0 -7
  206. package/dist/lib/neutral/index.mjs +0 -18
  207. package/dist/lib/neutral/index.mjs.map +0 -7
  208. package/dist/lib/neutral/load-post-content-H3S4TKVM.mjs +0 -65
  209. package/dist/lib/neutral/load-post-content-H3S4TKVM.mjs.map +0 -7
  210. package/dist/lib/neutral/meta.json +0 -1
  211. package/dist/lib/neutral/meta.mjs +0 -8
  212. package/dist/lib/neutral/meta.mjs.map +0 -7
  213. package/dist/lib/neutral/navigation-resolver-IN4OMCDR.mjs +0 -18
  214. package/dist/lib/neutral/navigation-resolver-IN4OMCDR.mjs.map +0 -7
  215. package/dist/lib/neutral/operation-handler-JE3743BU.mjs +0 -8
  216. package/dist/lib/neutral/operation-handler-JE3743BU.mjs.map +0 -7
  217. package/dist/lib/neutral/operations/index.mjs +0 -8
  218. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  219. package/dist/lib/neutral/plugin.mjs +0 -16
  220. package/dist/lib/neutral/plugin.mjs.map +0 -7
  221. package/dist/lib/neutral/plugin.workerd.mjs +0 -16
  222. package/dist/lib/neutral/plugin.workerd.mjs.map +0 -7
  223. package/dist/lib/neutral/react-surface-TZESAMG2.mjs +0 -60
  224. package/dist/lib/neutral/react-surface-TZESAMG2.mjs.map +0 -7
  225. package/dist/lib/neutral/routine-templates-D5A2L4KL.mjs +0 -52
  226. package/dist/lib/neutral/routine-templates-D5A2L4KL.mjs.map +0 -7
  227. package/dist/lib/neutral/skill-definition-3KLMUEC5.mjs +0 -8
  228. package/dist/lib/neutral/skill-definition-3KLMUEC5.mjs.map +0 -7
  229. package/dist/lib/neutral/skills/index.mjs.map +0 -7
  230. package/dist/lib/neutral/sync-feed-SDXYF7HU.mjs +0 -99
  231. package/dist/lib/neutral/sync-feed-SDXYF7HU.mjs.map +0 -7
  232. package/dist/lib/neutral/translations.mjs +0 -81
  233. package/dist/lib/neutral/translations.mjs.map +0 -7
  234. package/dist/lib/neutral/types/index.mjs +0 -14
  235. package/dist/lib/neutral/types/index.mjs.map +0 -7
  236. package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -5
  237. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
  238. package/dist/types/src/operations/curate-magazine.skill.test.d.ts +0 -2
  239. package/dist/types/src/operations/curate-magazine.skill.test.d.ts.map +0 -1
  240. package/src/capabilities/navigation-resolver.ts +0 -21
  241. package/src/operations/curate-magazine.skill.conversations.json +0 -1
  242. package/src/operations/curate-magazine.skill.test.ts +0 -167
@@ -0,0 +1,71 @@
1
+ import { Ref } from "@dxos/echo";
2
+ import { Magazine, Subscription } from "#types";
3
+ import { subDays } from "date-fns";
4
+ import { random } from "@dxos/random";
5
+ //#region src/testing/builder.ts
6
+ /** Generates an array of random posts. */
7
+ var generatePosts = (count) => {
8
+ const now = /* @__PURE__ */ new Date();
9
+ const start = subDays(now, 30);
10
+ const rangeMs = now.getTime() - start.getTime();
11
+ return Array.from({ length: count }, () => {
12
+ const published = new Date(start.getTime() + Math.random() * rangeMs);
13
+ return Subscription.makePost({
14
+ title: random.lorem.sentence(random.number.int({
15
+ min: 4,
16
+ max: 10
17
+ })),
18
+ link: random.internet.url(),
19
+ description: random.lorem.paragraph(random.number.int({
20
+ min: 1,
21
+ max: 3
22
+ })),
23
+ author: random.person.fullName(),
24
+ published: published.toISOString(),
25
+ guid: random.string.uuid()
26
+ });
27
+ }).sort((postA, postB) => (postB.published ?? "").localeCompare(postA.published ?? ""));
28
+ };
29
+ /** Generates a random subscription feed. */
30
+ var generateFeed = (props = {}) => Subscription.makeSubscription({
31
+ name: props.name ?? random.company.name() + " Blog",
32
+ url: props.url ?? random.internet.url(),
33
+ description: props.description ?? random.lorem.sentence()
34
+ });
35
+ /**
36
+ * Generates a Post. Note: per-Post state (snippet, imageUrl, readAt) is no
37
+ * longer on the Post itself — it lives on the source Subscription's or
38
+ * Magazine's `postState` map. The caller is responsible for seeding those if
39
+ * the story / test needs them. The `read` / `imageUrl` params are kept on
40
+ * the signature for back-compat call sites; they are currently no-ops and
41
+ * will be wired through state-seeding helpers in a follow-up.
42
+ */
43
+ var generateCuratedPost = (_props = {}) => {
44
+ const description = random.lorem.paragraph(random.number.int({
45
+ min: 2,
46
+ max: 4
47
+ }));
48
+ return Subscription.makePost({
49
+ title: random.lorem.sentence(random.number.int({
50
+ min: 4,
51
+ max: 10
52
+ })),
53
+ link: random.internet.url(),
54
+ description,
55
+ author: random.person.fullName(),
56
+ published: (/* @__PURE__ */ new Date(Date.now() - Math.random() * 7 * 24 * 3600 * 1e3)).toISOString(),
57
+ guid: random.string.uuid()
58
+ });
59
+ };
60
+ /** Generates a Magazine with the given curated posts. Feeds default to empty. */
61
+ var generateMagazine = (props = {}) => {
62
+ return Magazine.make({
63
+ name: props.name ?? random.company.name() + " Reading List",
64
+ feeds: (props.feeds ?? []).map((feed) => Ref.make(feed)),
65
+ posts: (props.posts ?? []).map((post) => Ref.make(post))
66
+ });
67
+ };
68
+ //#endregion
69
+ export { generateCuratedPost, generateFeed, generateMagazine, generatePosts };
70
+
71
+ //# sourceMappingURL=testing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.mjs","names":[],"sources":["../../src/testing/builder.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { subDays } from 'date-fns';\n\nimport { Ref } from '@dxos/echo';\nimport { random } from '@dxos/random';\n\nimport { Magazine, Subscription } from '#types';\n\n/** Generates an array of random posts. */\nexport const generatePosts = (count: number): Subscription.Post[] => {\n const now = new Date();\n const start = subDays(now, 30);\n const rangeMs = now.getTime() - start.getTime();\n\n return Array.from({ length: count }, () => {\n const published = new Date(start.getTime() + Math.random() * rangeMs);\n return Subscription.makePost({\n title: random.lorem.sentence(random.number.int({ min: 4, max: 10 })),\n link: random.internet.url(),\n description: random.lorem.paragraph(random.number.int({ min: 1, max: 3 })),\n author: random.person.fullName(),\n published: published.toISOString(),\n guid: random.string.uuid(),\n });\n }).sort((postA, postB) => (postB.published ?? '').localeCompare(postA.published ?? ''));\n};\n\n/** Generates a random subscription feed. */\nexport const generateFeed = (\n props: Partial<{ name: string; url: string; description: string }> = {},\n): Subscription.Subscription =>\n Subscription.makeSubscription({\n name: props.name ?? random.company.name() + ' Blog',\n url: props.url ?? random.internet.url(),\n description: props.description ?? random.lorem.sentence(),\n });\n\n/**\n * Generates a Post. Note: per-Post state (snippet, imageUrl, readAt) is no\n * longer on the Post itself — it lives on the source Subscription's or\n * Magazine's `postState` map. The caller is responsible for seeding those if\n * the story / test needs them. The `read` / `imageUrl` params are kept on\n * the signature for back-compat call sites; they are currently no-ops and\n * will be wired through state-seeding helpers in a follow-up.\n */\nexport const generateCuratedPost = (_props: { imageUrl?: string; read?: boolean } = {}): Subscription.Post => {\n const description = random.lorem.paragraph(random.number.int({ min: 2, max: 4 }));\n // TODO: seed Magazine.postState / Subscription.postState here once the\n // builder has access to them; for now Posts are bare feed entries and\n // tile snippets are recomputed on render from `description`.\n return Subscription.makePost({\n title: random.lorem.sentence(random.number.int({ min: 4, max: 10 })),\n link: random.internet.url(),\n description,\n author: random.person.fullName(),\n published: new Date(Date.now() - Math.random() * 7 * 24 * 3600 * 1000).toISOString(),\n guid: random.string.uuid(),\n });\n};\n\n/** Generates a Magazine with the given curated posts. Feeds default to empty. */\nexport const generateMagazine = (\n props: Partial<{\n name: string;\n feeds: Subscription.Subscription[];\n posts: Subscription.Post[];\n }> = {},\n): Magazine.Magazine => {\n return Magazine.make({\n name: props.name ?? random.company.name() + ' Reading List',\n feeds: (props.feeds ?? []).map((feed) => Ref.make(feed)),\n posts: (props.posts ?? []).map((post) => Ref.make(post)),\n });\n};\n"],"mappings":";;;;;;AAYA,IAAa,iBAAiB,UAAuC;CACnE,MAAM,sBAAM,IAAI,KAAK;CACrB,MAAM,QAAQ,QAAQ,KAAK,EAAE;CAC7B,MAAM,UAAU,IAAI,QAAQ,IAAI,MAAM,QAAQ;CAE9C,OAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,SAAS;EACzC,MAAM,YAAY,IAAI,KAAK,MAAM,QAAQ,IAAI,KAAK,OAAO,IAAI,OAAO;EACpE,OAAO,aAAa,SAAS;GAC3B,OAAO,OAAO,MAAM,SAAS,OAAO,OAAO,IAAI;IAAE,KAAK;IAAG,KAAK;GAAG,CAAC,CAAC;GACnE,MAAM,OAAO,SAAS,IAAI;GAC1B,aAAa,OAAO,MAAM,UAAU,OAAO,OAAO,IAAI;IAAE,KAAK;IAAG,KAAK;GAAE,CAAC,CAAC;GACzE,QAAQ,OAAO,OAAO,SAAS;GAC/B,WAAW,UAAU,YAAY;GACjC,MAAM,OAAO,OAAO,KAAK;EAC3B,CAAC;CACH,CAAC,CAAC,CAAC,MAAM,OAAO,WAAW,MAAM,aAAa,GAAA,CAAI,cAAc,MAAM,aAAa,EAAE,CAAC;AACxF;;AAGA,IAAa,gBACX,QAAqE,CAAC,MAEtE,aAAa,iBAAiB;CAC5B,MAAM,MAAM,QAAQ,OAAO,QAAQ,KAAK,IAAI;CAC5C,KAAK,MAAM,OAAO,OAAO,SAAS,IAAI;CACtC,aAAa,MAAM,eAAe,OAAO,MAAM,SAAS;AAC1D,CAAC;;;;;;;;;AAUH,IAAa,uBAAuB,SAAgD,CAAC,MAAyB;CAC5G,MAAM,cAAc,OAAO,MAAM,UAAU,OAAO,OAAO,IAAI;EAAE,KAAK;EAAG,KAAK;CAAE,CAAC,CAAC;CAIhF,OAAO,aAAa,SAAS;EAC3B,OAAO,OAAO,MAAM,SAAS,OAAO,OAAO,IAAI;GAAE,KAAK;GAAG,KAAK;EAAG,CAAC,CAAC;EACnE,MAAM,OAAO,SAAS,IAAI;EAC1B;EACA,QAAQ,OAAO,OAAO,SAAS;EAC/B,4BAAW,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,GAAI,EAAA,CAAE,YAAY;EACnF,MAAM,OAAO,OAAO,KAAK;CAC3B,CAAC;AACH;;AAGA,IAAa,oBACX,QAIK,CAAC,MACgB;CACtB,OAAO,SAAS,KAAK;EACnB,MAAM,MAAM,QAAQ,OAAO,QAAQ,KAAK,IAAI;EAC5C,QAAQ,MAAM,SAAS,CAAC,EAAA,CAAG,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC;EACvD,QAAQ,MAAM,SAAS,CAAC,EAAA,CAAG,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC;CACzD,CAAC;AACH"}
@@ -0,0 +1,74 @@
1
+ import { Type } from "@dxos/echo";
2
+ import { meta } from "#meta";
3
+ import { Magazine, Subscription } from "#types";
4
+ import { translations as translations$1 } from "@dxos/react-ui-form/translations";
5
+ //#region src/translations.ts
6
+ var translations = [...translations$1, { "en-US": {
7
+ [Type.getTypename(Subscription.Subscription)]: {
8
+ "typename.label": "Feed",
9
+ "typename.label_zero": "Feeds",
10
+ "typename.label_one": "Feed",
11
+ "typename.label_other": "Feeds",
12
+ "object-name.placeholder": "New feed",
13
+ "add-object.label": "Add feed",
14
+ "rename-object.label": "Rename feed",
15
+ "delete-object.label": "Delete feed",
16
+ "object-deleted.label": "Feed deleted"
17
+ },
18
+ [Type.getTypename(Subscription.Post)]: {
19
+ "typename.label": "Post",
20
+ "typename.label_zero": "Posts",
21
+ "typename.label_one": "Post",
22
+ "typename.label_other": "Posts",
23
+ "post-title.placeholder": "Untitled"
24
+ },
25
+ [Type.getTypename(Magazine.Magazine)]: {
26
+ "typename.label": "Magazine",
27
+ "typename.label_zero": "Magazines",
28
+ "typename.label_one": "Magazine",
29
+ "typename.label_other": "Magazines",
30
+ "object-name.placeholder": "New magazine",
31
+ "add-object.label": "Add magazine",
32
+ "rename-object.label": "Rename magazine",
33
+ "delete-object.label": "Delete magazine",
34
+ "object-deleted.label": "Magazine deleted"
35
+ },
36
+ [meta.profile.key]: {
37
+ "plugin.name": "Feed",
38
+ "empty-feed.message": "No posts yet",
39
+ "feed-companion.label": "Feed",
40
+ "sync-feed.label": "Sync feed",
41
+ "sync-feed-error.title": "Failed to sync feed",
42
+ "feed-sync.label": "Feed Sync",
43
+ "view-trigger.label": "View trigger",
44
+ "add-feed.label": "Add feed",
45
+ "curate.label": "Curate",
46
+ "clear-magazine.label": "Clear (preserves starred)",
47
+ "refreshing-magazine.label": "Refreshing magazine...",
48
+ "no-feeds.label": "Add at least one feed first",
49
+ "empty-magazine.message": "No articles yet.",
50
+ "curate-error.message": "Failed to curate magazine.",
51
+ "clear-error.message": "Failed to clear magazine.",
52
+ "refresh-content-error.message": "Failed to refresh content.",
53
+ "post-companion.label": "Post",
54
+ "post-title.placeholder": "Untitled",
55
+ "open-original.label": "Open original",
56
+ "mark-unread.label": "Mark as unread",
57
+ "refresh-content.label": "Refresh content",
58
+ "refresh-content-pending.label": "Refreshing…",
59
+ "archive-post.label": "Archive",
60
+ "unarchive-post.label": "Unarchive",
61
+ "star-post.label": "Star",
62
+ "unstar-post.label": "Unstar",
63
+ "sort-by-date.label": "Sort by date",
64
+ "sort-by-rank.label": "Sort by rank",
65
+ "view-filter.label": "Filter posts",
66
+ "show-archived.label": "Show archived",
67
+ "only-starred.label": "Show starred only",
68
+ "close.label": "Close"
69
+ }
70
+ } }];
71
+ //#endregion
72
+ export { translations };
73
+
74
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\nimport { translations as formTranslations } from '@dxos/react-ui-form/translations';\n\nimport { meta } from '#meta';\nimport { Magazine, Subscription } from '#types';\n\nexport const translations = [\n ...formTranslations,\n {\n 'en-US': {\n [Type.getTypename(Subscription.Subscription)]: {\n 'typename.label': 'Feed',\n 'typename.label_zero': 'Feeds',\n 'typename.label_one': 'Feed',\n 'typename.label_other': 'Feeds',\n 'object-name.placeholder': 'New feed',\n 'add-object.label': 'Add feed',\n 'rename-object.label': 'Rename feed',\n 'delete-object.label': 'Delete feed',\n 'object-deleted.label': 'Feed deleted',\n },\n [Type.getTypename(Subscription.Post)]: {\n 'typename.label': 'Post',\n 'typename.label_zero': 'Posts',\n 'typename.label_one': 'Post',\n 'typename.label_other': 'Posts',\n 'post-title.placeholder': 'Untitled',\n },\n [Type.getTypename(Magazine.Magazine)]: {\n 'typename.label': 'Magazine',\n 'typename.label_zero': 'Magazines',\n 'typename.label_one': 'Magazine',\n 'typename.label_other': 'Magazines',\n 'object-name.placeholder': 'New magazine',\n 'add-object.label': 'Add magazine',\n 'rename-object.label': 'Rename magazine',\n 'delete-object.label': 'Delete magazine',\n 'object-deleted.label': 'Magazine deleted',\n },\n [meta.profile.key]: {\n 'plugin.name': 'Feed',\n 'empty-feed.message': 'No posts yet',\n 'feed-companion.label': 'Feed',\n 'sync-feed.label': 'Sync feed',\n 'sync-feed-error.title': 'Failed to sync feed',\n 'feed-sync.label': 'Feed Sync',\n 'view-trigger.label': 'View trigger',\n 'add-feed.label': 'Add feed',\n 'curate.label': 'Curate',\n 'clear-magazine.label': 'Clear (preserves starred)',\n 'refreshing-magazine.label': 'Refreshing magazine...',\n 'no-feeds.label': 'Add at least one feed first',\n 'empty-magazine.message': 'No articles yet.',\n 'curate-error.message': 'Failed to curate magazine.',\n 'clear-error.message': 'Failed to clear magazine.',\n 'refresh-content-error.message': 'Failed to refresh content.',\n 'post-companion.label': 'Post',\n 'post-title.placeholder': 'Untitled',\n 'open-original.label': 'Open original',\n 'mark-unread.label': 'Mark as unread',\n 'refresh-content.label': 'Refresh content',\n 'refresh-content-pending.label': 'Refreshing…',\n 'archive-post.label': 'Archive',\n 'unarchive-post.label': 'Unarchive',\n 'star-post.label': 'Star',\n 'unstar-post.label': 'Unstar',\n 'sort-by-date.label': 'Sort by date',\n 'sort-by-rank.label': 'Sort by rank',\n 'view-filter.label': 'Filter posts',\n 'show-archived.label': 'Show archived',\n 'only-starred.label': 'Show starred only',\n 'close.label': 'Close',\n },\n },\n },\n] as const satisfies Resource[];\n"],"mappings":";;;;;AAWA,IAAa,eAAe,CAC1B,GAAG,gBACH,EACE,SAAS;EACN,KAAK,YAAY,aAAa,YAAY,IAAI;EAC7C,kBAAkB;EAClB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,2BAA2B;EAC3B,oBAAoB;EACpB,uBAAuB;EACvB,uBAAuB;EACvB,wBAAwB;CAC1B;EACC,KAAK,YAAY,aAAa,IAAI,IAAI;EACrC,kBAAkB;EAClB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,0BAA0B;CAC5B;EACC,KAAK,YAAY,SAAS,QAAQ,IAAI;EACrC,kBAAkB;EAClB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,2BAA2B;EAC3B,oBAAoB;EACpB,uBAAuB;EACvB,uBAAuB;EACvB,wBAAwB;CAC1B;EACC,KAAK,QAAQ,MAAM;EAClB,eAAe;EACf,sBAAsB;EACtB,wBAAwB;EACxB,mBAAmB;EACnB,yBAAyB;EACzB,mBAAmB;EACnB,sBAAsB;EACtB,kBAAkB;EAClB,gBAAgB;EAChB,wBAAwB;EACxB,6BAA6B;EAC7B,kBAAkB;EAClB,0BAA0B;EAC1B,wBAAwB;EACxB,uBAAuB;EACvB,iCAAiC;EACjC,wBAAwB;EACxB,0BAA0B;EAC1B,uBAAuB;EACvB,qBAAqB;EACrB,yBAAyB;EACzB,iCAAiC;EACjC,sBAAsB;EACtB,wBAAwB;EACxB,mBAAmB;EACnB,qBAAqB;EACrB,sBAAsB;EACtB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,sBAAsB;EACtB,eAAe;CACjB;AACF,EACF,CACF"}
@@ -0,0 +1,2 @@
1
+ import { c as Magazine_exports, p as Subscription_exports, r as FeedOperation_exports, u as CreateSubscription_exports } from "./chunk-types.mjs";
2
+ export { CreateSubscription_exports as CreateSubscription, FeedOperation_exports as FeedOperation, Magazine_exports as Magazine, Subscription_exports as Subscription };
@@ -1 +1 @@
1
- {"version":3,"file":"MagazinePlugin.d.ts","sourceRoot":"","sources":["../../../src/MagazinePlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAmB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAuB9D,eAAO,MAAM,cAAc,4BA+B1B,CAAC;eAEa,cAAc"}
1
+ {"version":3,"file":"MagazinePlugin.d.ts","sourceRoot":"","sources":["../../../src/MagazinePlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAmB,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqB9D,eAAO,MAAM,cAAc,4BA8B1B,CAAC;eAEa,cAAc"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, Capability.Service>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, Error, import("effect/Scope").Scope | Capability.Service>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any, Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=create-object.d.ts.map
@@ -6,5 +6,4 @@ export declare const SkillDefinition: Capability.LazyCapability<void, Capability
6
6
  export declare const CreateObject: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
7
7
  export declare const OperationHandler: Capability.LazyCapability<OperationHandlerSet.OperationHandlerSet, Capability.ModuleReturn, Error>;
8
8
  export declare const ReactSurface: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
9
- export declare const NavigationResolver: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,eAAO,MAAM,eAAe,iEAA0E,CAAC;AACvG,eAAO,MAAM,gBAAgB,iEAA2E,CAAC;AACzG,eAAO,MAAM,eAAe,iEAAyE,CAAC;AACtG,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,kBAAkB,iEAA+E,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,eAAO,MAAM,eAAe,iEAA0E,CAAC;AACvG,eAAO,MAAM,gBAAgB,iEAA2E,CAAC;AACzG,eAAO,MAAM,eAAe,iEAAyE,CAAC;AACtG,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,YAAY,iEAAmE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
3
  import type { OperationHandlerSet } from '@dxos/compute';
4
- declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, Capability.Service>;
4
+ declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, import("effect/Scope").Scope | Capability.Service>;
5
5
  export default _default;
6
6
  //# sourceMappingURL=operation-handler.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Any, never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=react-surface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as Effect from 'effect/Effect';
2
2
  import { Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, never>;
3
+ declare const _default: (props: void) => Effect.Effect<[Capability.Any], never, import("effect/Scope").Scope>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=routine-templates.d.ts.map
@@ -6,18 +6,6 @@ export type PostContentProps = {
6
6
  /** Additional metadata, such as feed or source domain, rendered between author and published date. */
7
7
  metadata?: string[];
8
8
  };
9
- /**
10
- * Strips images from a markdown string whose URL is already on the
11
- * `excluded` list, AND drops any image that appears more than once. The
12
- * hero `post.imageUrl` is added to `excluded` by the caller so the
13
- * extracted article body doesn't re-render the same image immediately
14
- * below the hero. Captures both Markdown image syntax (`![alt](url
15
- * "title")`) and inline HTML `<img>` tags that defuddle sometimes
16
- * leaves behind.
17
- */
18
- export declare const dedupeImagesInMarkdown: (markdown: string, excluded: ReadonlyArray<string | undefined>) => string;
19
- /** Returns true if the markdown contains at least one Markdown or inline HTML image. */
20
- export declare const contentHasImage: (markdown: string) => boolean;
21
9
  /**
22
10
  * Shared presentational layout for an article-style post.
23
11
  * Render order: title → hero image → Markdown body (subscription contentFeed
@@ -26,5 +14,5 @@ export declare const contentHasImage: (markdown: string) => boolean;
26
14
  */
27
15
  export declare const PostContent: React.ForwardRefExoticComponent<Omit<PostContentProps, "className"> & {
28
16
  classNames?: import("@dxos/ui-types").ClassNameValue;
29
- } & Pick<React.HTMLAttributes<Element>, "children" | "className" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
17
+ } & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
30
18
  //# sourceMappingURL=PostContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostContent.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostContent/PostContent.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB;IACtB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,aAAc,MAAM,YAAY,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,KAAG,MA0BtG,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,OAC4C,CAAC;AAEhG;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;2HAuCvB,CAAC"}
1
+ {"version":3,"file":"PostContent.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostContent/PostContent.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB;IACtB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;6GAuCvB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Strips images from a markdown string whose URL is already on the
3
+ * `excluded` list, AND drops any image that appears more than once. The
4
+ * hero `post.imageUrl` is added to `excluded` by the caller so the
5
+ * extracted article body doesn't re-render the same image immediately
6
+ * below the hero. Captures both Markdown image syntax (`![alt](url
7
+ * "title")`) and inline HTML `<img>` tags that defuddle sometimes
8
+ * leaves behind.
9
+ */
10
+ export declare const dedupeImagesInMarkdown: (markdown: string, excluded: ReadonlyArray<string | undefined>) => string;
11
+ /** Returns true if the markdown contains at least one Markdown or inline HTML image. */
12
+ export declare const contentHasImage: (markdown: string) => boolean;
13
+ //# sourceMappingURL=dedupe-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedupe-images.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostContent/dedupe-images.ts"],"names":[],"mappings":"AAQA;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,aAAc,MAAM,YAAY,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,KAAG,MA0BtG,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,OAC4C,CAAC"}
@@ -1,2 +1,3 @@
1
+ export * from './dedupe-images';
1
2
  export * from './PostContent';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostContent/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostContent/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -13,5 +13,5 @@ export type PostStackProps = {
13
13
  };
14
14
  export declare const PostStack: React.ForwardRefExoticComponent<Omit<PostStackProps, "className"> & {
15
15
  classNames?: import("@dxos/ui-types").ClassNameValue;
16
- } & Pick<React.HTMLAttributes<Element>, "children" | "className" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
16
+ } & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
17
17
  //# sourceMappingURL=PostStack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostStack/PostStack.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyE,MAAM,OAAO,CAAC;AAQ9F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,SAAS;;2HAgDrB,CAAC"}
1
+ {"version":3,"file":"PostStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/PostStack/PostStack.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyE,MAAM,OAAO,CAAC;AAQ9F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,SAAS;;6GAgDrB,CAAC"}
@@ -19,5 +19,5 @@ export type SubscriptionStackProps = {
19
19
  };
20
20
  export declare const SubscriptionStack: React.ForwardRefExoticComponent<Omit<SubscriptionStackProps, "className"> & {
21
21
  classNames?: import("@dxos/ui-types").ClassNameValue;
22
- } & Pick<React.HTMLAttributes<Element>, "children" | "className" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
22
+ } & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
23
23
  //# sourceMappingURL=SubscriptionStack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/SubscriptionStack/SubscriptionStack.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyE,MAAM,OAAO,CAAC;AAM9F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAMvF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;2HAkD7B,CAAC"}
1
+ {"version":3,"file":"SubscriptionStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/SubscriptionStack/SubscriptionStack.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyE,MAAM,OAAO,CAAC;AAM9F,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAMvF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,8BAA8B,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;6GAkD7B,CAAC"}
@@ -2,5 +2,8 @@ import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  import { Subscription } from '#types';
4
4
  export type FeedArticleProps = AppSurface.ObjectArticleProps<Subscription.Subscription>;
5
- export declare const FeedArticle: ({ role, subject, attendableId }: FeedArticleProps) => React.JSX.Element;
5
+ export declare function FeedArticle({ role, subject, attendableId }: FeedArticleProps): React.JSX.Element;
6
+ export declare namespace FeedArticle {
7
+ var displayName: string;
8
+ }
6
9
  //# sourceMappingURL=FeedArticle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/FeedArticle/FeedArticle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAExF,eAAO,MAAM,WAAW,oCAAqC,gBAAgB,sBA8C5E,CAAC"}
1
+ {"version":3,"file":"FeedArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/FeedArticle/FeedArticle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAGrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oCAE5D,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,gBAAgB"}
@@ -2,5 +2,8 @@ import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  import { Subscription } from '#types';
4
4
  export type FeedPropertiesProps = AppSurface.ObjectPropertiesProps<Subscription.Subscription>;
5
- export declare const FeedProperties: ({ subject }: FeedPropertiesProps) => React.JSX.Element;
5
+ export declare function FeedProperties({ subject }: FeedPropertiesProps): React.JSX.Element;
6
+ export declare namespace FeedProperties {
7
+ var displayName: string;
8
+ }
6
9
  //# sourceMappingURL=FeedProperties.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedProperties.d.ts","sourceRoot":"","sources":["../../../../../src/containers/FeedProperties/FeedProperties.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAiB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AAE9F,eAAO,MAAM,cAAc,gBAAiB,mBAAmB,sBA0E9D,CAAC"}
1
+ {"version":3,"file":"FeedProperties.d.ts","sourceRoot":"","sources":["../../../../../src/containers/FeedProperties/FeedProperties.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAiB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;uCAE/D,EAAE,OAAO,EAAE,EAAE,mBAAmB"}
@@ -2,5 +2,8 @@ import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  import { Magazine } from '#types';
4
4
  export type MagazineArticleProps = AppSurface.ObjectArticleProps<Magazine.Magazine>;
5
- export declare const MagazineArticle: ({ role, subject, attendableId }: MagazineArticleProps) => React.JSX.Element;
5
+ export declare function MagazineArticle({ role, subject, attendableId }: MagazineArticleProps): React.JSX.Element;
6
+ export declare namespace MagazineArticle {
7
+ var displayName: string;
8
+ }
6
9
  //# sourceMappingURL=MagazineArticle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MagazineArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineArticle.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAI/D,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAWpE,OAAO,EAAiB,QAAQ,EAAgB,MAAM,QAAQ,CAAC;AAK/D,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEpF,eAAO,MAAM,eAAe,oCAAqC,oBAAoB,sBA6FpF,CAAC"}
1
+ {"version":3,"file":"MagazineArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineArticle.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAI/D,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAWpE,OAAO,EAAiB,QAAQ,EAAgB,MAAM,QAAQ,CAAC;AAK/D,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wCAEpD,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,oBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MagazineArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,QAAA,MAAM,YAAY,yBAUjB,CAAC;AAmDF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAGnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAyFjC,eAAO,MAAM,UAAU,EAAE,KAwDxB,CAAC"}
1
+ {"version":3,"file":"MagazineArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,QAAA,MAAM,YAAY,yBAUjB,CAAC;AAmDF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAGnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAyFjC,eAAO,MAAM,UAAU,EAAE,KAwDxB,CAAC"}
@@ -7,5 +7,8 @@ export type MagazineTileProps = {
7
7
  onOpen?: (post: Subscription.Post) => void;
8
8
  onToggleStar?: (post: Subscription.Post, starred: boolean) => void;
9
9
  };
10
- export declare const MagazineTile: ({ post, magazine, current, onToggleStar, onOpen }: MagazineTileProps) => React.JSX.Element;
10
+ export declare function MagazineTile({ post, magazine, current, onToggleStar, onOpen }: MagazineTileProps): React.JSX.Element;
11
+ export declare namespace MagazineTile {
12
+ var displayName: string;
13
+ }
11
14
  //# sourceMappingURL=MagazineTile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MagazineTile.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineTile.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAO5D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAI1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,YAAY,sDAAuD,iBAAiB,sBA4DhG,CAAC"}
1
+ {"version":3,"file":"MagazineTile.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/MagazineTile.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAO5D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAI1D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC;IAC3C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE,CAAC;qCAE2B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,iBAAiB"}
@@ -4,15 +4,11 @@ import { type Magazine } from '#types';
4
4
  export type UseToolbarProps = {
5
5
  magazine: Magazine.Magazine;
6
6
  };
7
- /**
8
- * Owns the magazine toolbar: the view-filter and curate-busy atoms, the Curate/Clear operation
9
- * handlers, and the reactive menu action graph. The action graph reads its state — view filter,
10
- * curate-busy flag, and whether the magazine has feeds — via `get` inside the builder, so it
11
- * subscribes to those atoms and rebuilds whenever they change. Returns the menu props (spread into
12
- * `Menu.Root`) plus `viewAtom`, which the article also reads to filter the visible posts.
13
- */
14
- export declare const useToolbar: ({ magazine }: UseToolbarProps) => {
7
+ export declare function useToolbar({ magazine }: UseToolbarProps): {
15
8
  menu: import("@dxos/react-ui-menu").MenuActions;
16
9
  viewAtom: Atom.Writable<MagazineView, MagazineView>;
17
10
  };
11
+ export declare namespace useToolbar {
12
+ var displayName: string;
13
+ }
18
14
  //# sourceMappingURL=useToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/useToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAA+B,MAAM,yBAAyB,CAAC;AAS5E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,iBAAkB,eAAe;;;CAoHvD,CAAC"}
1
+ {"version":3,"file":"useToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/containers/MagazineArticle/useToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAA+B,MAAM,yBAAyB,CAAC;AAS5E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC7B,CAAC;mCASyB,EAAE,QAAQ,EAAE,EAAE,eAAe"}
@@ -2,5 +2,8 @@ import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  import { Subscription } from '#types';
4
4
  export type PostArticleProps = AppSurface.ObjectArticleProps<Subscription.Post>;
5
- export declare const PostArticle: ({ role, subject, attendableId }: PostArticleProps) => React.JSX.Element;
5
+ export declare function PostArticle({ role, subject, attendableId }: PostArticleProps): React.JSX.Element;
6
+ export declare namespace PostArticle {
7
+ var displayName: string;
8
+ }
6
9
  //# sourceMappingURL=PostArticle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostArticle.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAGnF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAWvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAEhF,eAAO,MAAM,WAAW,oCAAqC,gBAAgB,sBAkH5E,CAAC"}
1
+ {"version":3,"file":"PostArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostArticle.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAGnF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAWvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oCAEpD,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"PostArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AA4C1B,QAAA,MAAM,YAAY,yBAUjB,CAAC;AA4BF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAsBnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"PostArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AA6C1B,QAAA,MAAM,YAAY,yBAUjB,CAAC;AA4BF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAsBnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type Atom } from '@effect-atom/atom-react';
1
+ import { type Atom } from '@effect-atom/atom';
2
2
  import React from 'react';
3
3
  import { type Subscription } from '#types';
4
4
  export type PostToolbarProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"PostToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,+CAA+C;IAC/C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;oCAQ0B,EAC1B,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,cAAc,EACf,EAAE,gBAAgB"}
1
+ {"version":3,"file":"PostToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostArticle/PostToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,+CAA+C;IAC/C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;oCAQ0B,EAC1B,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,cAAc,EACf,EAAE,gBAAgB"}
@@ -2,10 +2,8 @@ import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  import { Subscription } from '#types';
4
4
  export type PostCardProps = AppSurface.ObjectCardProps<Subscription.Post>;
5
- /**
6
- * Compact preview of a {@link Subscription.Post}. Rendered into the
7
- * `AppSurface.CardContent` slot — Card.Root is supplied by the surface host
8
- * (popovers, sections, related-objects), so the body emits Card.Body only.
9
- */
10
- export declare const PostCard: ({ subject }: PostCardProps) => React.JSX.Element;
5
+ export declare function PostCard({ subject }: PostCardProps): React.JSX.Element;
6
+ export declare namespace PostCard {
7
+ var displayName: string;
8
+ }
11
9
  //# sourceMappingURL=PostCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostCard/PostCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,QAAQ,gBAAiB,aAAa,sBA+ClD,CAAC"}
1
+ {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../../../../src/containers/PostCard/PostCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iCAOjD,EAAE,OAAO,EAAE,EAAE,aAAa"}
@@ -1,5 +1,8 @@
1
1
  import React from 'react';
2
2
  import { type AppSurface } from '@dxos/app-toolkit/ui';
3
3
  export type SubscriptionsArticleProps = AppSurface.SpaceArticleProps;
4
- export declare const SubscriptionsArticle: ({ role, space, attendableId }: SubscriptionsArticleProps) => React.JSX.Element;
4
+ export declare function SubscriptionsArticle({ role, space, attendableId }: SubscriptionsArticleProps): React.JSX.Element;
5
+ export declare namespace SubscriptionsArticle {
6
+ var displayName: string;
7
+ }
5
8
  //# sourceMappingURL=SubscriptionsArticle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionsArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/SubscriptionsArticle/SubscriptionsArticle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAalE,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AAErE,eAAO,MAAM,oBAAoB,kCAAmC,yBAAyB,sBA2E5F,CAAC"}
1
+ {"version":3,"file":"SubscriptionsArticle.d.ts","sourceRoot":"","sources":["../../../../../src/containers/SubscriptionsArticle/SubscriptionsArticle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAalE,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,iBAAiB,CAAC;6CAEhC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,yBAAyB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionsArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/SubscriptionsArticle/SubscriptionsArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,QAAA,MAAM,YAAY,yBASjB,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAoCnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"SubscriptionsArticle.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/SubscriptionsArticle/SubscriptionsArticle.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,QAAA,MAAM,YAAY,yBASjB,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAoCnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -54,6 +54,7 @@ declare const meta: {
54
54
  readonly 'format.json.label': 'JSON';
55
55
  readonly 'format.lnglat.label': 'Geopoint';
56
56
  readonly 'format.markdown.label': 'Markdown';
57
+ readonly 'format.password.label': 'Password';
57
58
  readonly 'format.percent.label': 'Percent';
58
59
  readonly 'format.ref.label': 'Reference';
59
60
  readonly 'format.regex.label': 'RegExp';
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleExtractor.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/ArticleExtractor.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAyC,MAAM,OAAO,CAAC;AAiL9D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ2B,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
1
+ {"version":3,"file":"ArticleExtractor.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/ArticleExtractor.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAyC,MAAM,OAAO,CAAC;AAiL9D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ2B,CAAC;eAEvB,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MagazineCurate.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/MagazineCurate.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAc/C,OAAO,EAAE,QAAQ,EAAgB,MAAM,QAAQ,CAAC;AA2DhD,OAAO,CAAC,MAAM,CAAC,CAAC;IAEd,IAAI,sBAAsB,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC;CACvF;AAED,QAAA,MAAM,YAAY,yBAqBjB,CAAC;AA4BF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAwBnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM,EAAE,KAuBpB,CAAC"}
1
+ {"version":3,"file":"MagazineCurate.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/MagazineCurate.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAe/C,OAAO,EAAE,QAAQ,EAAgB,MAAM,QAAQ,CAAC;AA2DhD,OAAO,CAAC,MAAM,CAAC,CAAC;IAEd,IAAI,sBAAsB,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC;CACvF;AAED,QAAA,MAAM,YAAY,yBAqBjB,CAAC;AA4BF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAwBnC,CAAC;eAEa,IAAI;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,MAAM,EAAE,KAuBpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"magazine-curation.d.ts","sourceRoot":"","sources":["../../../../src/templates/magazine-curation.ts"],"names":[],"mappings":"AASA,OAAO,EAAW,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAO/E;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAAmB,CAAC,QA0BlD,CAAC"}
1
+ {"version":3,"file":"magazine-curation.d.ts","sourceRoot":"","sources":["../../../../src/templates/magazine-curation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOtE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAAmB,CAAC,QA0BlD,CAAC"}
@@ -46,6 +46,7 @@ export declare const translations: [{
46
46
  readonly 'format.json.label': 'JSON';
47
47
  readonly 'format.lnglat.label': 'Geopoint';
48
48
  readonly 'format.markdown.label': 'Markdown';
49
+ readonly 'format.password.label': 'Password';
49
50
  readonly 'format.percent.label': 'Percent';
50
51
  readonly 'format.ref.label': 'Reference';
51
52
  readonly 'format.regex.label': 'RegExp';
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAKC,MAAM;4CACD,OAAO;2CACR,MAAM;6CACJ,OAAO;gDACJ,UAAU;yCACjB,UAAU;4CACP,aAAa;4CACb,aAAa;6CACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAGpB,MAAM;4CACD,OAAO;2CACR,MAAM;6CACJ,OAAO;+CACL,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAGlB,UAAU;4CACL,WAAW;2CACZ,UAAU;6CACR,WAAW;gDACR,cAAc;yCACrB,cAAc;4CACX,iBAAiB;4CACjB,iBAAiB;6CAChB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAG3B,MAAM;2CACC,cAAc;6CACZ,MAAM;wCACX,WAAW;8CACL,qBAAqB;wCAC3B,WAAW;2CACR,cAAc;uCAClB,UAAU;qCACZ,QAAQ;6CACA,2BAA2B;kDACtB,wBAAwB;uCACnC,6BAA6B;+CACrB,kBAAkB;6CACpB,4BAA4B;4CAC7B,2BAA2B;sDACjB,4BAA4B;6CACrC,MAAM;+CACJ,UAAU;4CACb,eAAe;0CACjB,gBAAgB;8CACZ,iBAAiB;sDACT,kBAAa;2CACxB,SAAS;6CACP,WAAW;wCAChB,MAAM;0CACJ,QAAQ;2CACP,cAAc;2CACd,cAAc;0CACf,cAAc;4CACZ,eAAe;2CAChB,mBAAmB;oCAC1B,OAAO;;;EAIC,CAAC"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAKC,MAAM;4CACD,OAAO;2CACR,MAAM;6CACJ,OAAO;gDACJ,UAAU;yCACjB,UAAU;4CACP,aAAa;4CACb,aAAa;6CACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAGpB,MAAM;4CACD,OAAO;2CACR,MAAM;6CACJ,OAAO;+CACL,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAGlB,UAAU;4CACL,WAAW;2CACZ,UAAU;6CACR,WAAW;gDACR,cAAc;yCACrB,cAAc;4CACX,iBAAiB;4CACjB,iBAAiB;6CAChB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAG3B,MAAM;2CACC,cAAc;6CACZ,MAAM;wCACX,WAAW;8CACL,qBAAqB;wCAC3B,WAAW;2CACR,cAAc;uCAClB,UAAU;qCACZ,QAAQ;6CACA,2BAA2B;kDACtB,wBAAwB;uCACnC,6BAA6B;+CACrB,kBAAkB;6CACpB,4BAA4B;4CAC7B,2BAA2B;sDACjB,4BAA4B;6CACrC,MAAM;+CACJ,UAAU;4CACb,eAAe;0CACjB,gBAAgB;8CACZ,iBAAiB;sDACT,kBAAa;2CACxB,SAAS;6CACP,WAAW;wCAChB,MAAM;0CACJ,QAAQ;2CACP,cAAc;2CACd,cAAc;0CACf,cAAc;4CACZ,eAAe;2CAChB,mBAAmB;oCAC1B,OAAO;;;EAIC,CAAC"}