@elytracms/core 0.0.6

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 (521) hide show
  1. package/LICENSE +21 -0
  2. package/dist/clipboard/build.d.ts +77 -0
  3. package/dist/clipboard/build.js +128 -0
  4. package/dist/clipboard/build.js.map +1 -0
  5. package/dist/clipboard/clipboard.d.ts +33 -0
  6. package/dist/clipboard/clipboard.js +45 -0
  7. package/dist/clipboard/clipboard.js.map +1 -0
  8. package/dist/clipboard/fragment.d.ts +112 -0
  9. package/dist/clipboard/fragment.js +79 -0
  10. package/dist/clipboard/fragment.js.map +1 -0
  11. package/dist/clipboard/html.d.ts +26 -0
  12. package/dist/clipboard/html.js +82 -0
  13. package/dist/clipboard/html.js.map +1 -0
  14. package/dist/clipboard/index.d.ts +15 -0
  15. package/dist/clipboard/index.js +16 -0
  16. package/dist/clipboard/index.js.map +1 -0
  17. package/dist/clipboard/references.d.ts +50 -0
  18. package/dist/clipboard/references.js +0 -0
  19. package/dist/clipboard/references.js.map +1 -0
  20. package/dist/clipboard/serialize.d.ts +69 -0
  21. package/dist/clipboard/serialize.js +130 -0
  22. package/dist/clipboard/serialize.js.map +1 -0
  23. package/dist/cms-core/collections.d.ts +82 -0
  24. package/dist/cms-core/collections.js +187 -0
  25. package/dist/cms-core/collections.js.map +1 -0
  26. package/dist/cms-core/documents.d.ts +71 -0
  27. package/dist/cms-core/documents.js +67 -0
  28. package/dist/cms-core/documents.js.map +1 -0
  29. package/dist/cms-core/envelopes.d.ts +80 -0
  30. package/dist/cms-core/envelopes.js +124 -0
  31. package/dist/cms-core/envelopes.js.map +1 -0
  32. package/dist/cms-core/fields.d.ts +220 -0
  33. package/dist/cms-core/fields.js +250 -0
  34. package/dist/cms-core/fields.js.map +1 -0
  35. package/dist/cms-core/fixtures.d.ts +92 -0
  36. package/dist/cms-core/fixtures.js +357 -0
  37. package/dist/cms-core/fixtures.js.map +1 -0
  38. package/dist/cms-core/hierarchy.d.ts +113 -0
  39. package/dist/cms-core/hierarchy.js +223 -0
  40. package/dist/cms-core/hierarchy.js.map +1 -0
  41. package/dist/cms-core/index.d.ts +25 -0
  42. package/dist/cms-core/index.js +26 -0
  43. package/dist/cms-core/index.js.map +1 -0
  44. package/dist/cms-core/infer.d.ts +103 -0
  45. package/dist/cms-core/infer.js +57 -0
  46. package/dist/cms-core/infer.js.map +1 -0
  47. package/dist/cms-core/issues.d.ts +92 -0
  48. package/dist/cms-core/issues.js +74 -0
  49. package/dist/cms-core/issues.js.map +1 -0
  50. package/dist/cms-core/json-schema.d.ts +25 -0
  51. package/dist/cms-core/json-schema.js +110 -0
  52. package/dist/cms-core/json-schema.js.map +1 -0
  53. package/dist/cms-core/localization.d.ts +51 -0
  54. package/dist/cms-core/localization.js +89 -0
  55. package/dist/cms-core/localization.js.map +1 -0
  56. package/dist/cms-core/routes.d.ts +76 -0
  57. package/dist/cms-core/routes.js +220 -0
  58. package/dist/cms-core/routes.js.map +1 -0
  59. package/dist/cms-core/self-type.d.ts +41 -0
  60. package/dist/cms-core/self-type.js +191 -0
  61. package/dist/cms-core/self-type.js.map +1 -0
  62. package/dist/cms-core/url-for-document.d.ts +39 -0
  63. package/dist/cms-core/url-for-document.js +138 -0
  64. package/dist/cms-core/url-for-document.js.map +1 -0
  65. package/dist/cms-core/validate-document.d.ts +121 -0
  66. package/dist/cms-core/validate-document.js +871 -0
  67. package/dist/cms-core/validate-document.js.map +1 -0
  68. package/dist/cms-core/versions.d.ts +75 -0
  69. package/dist/cms-core/versions.js +97 -0
  70. package/dist/cms-core/versions.js.map +1 -0
  71. package/dist/collaboration/approval.d.ts +68 -0
  72. package/dist/collaboration/approval.js +104 -0
  73. package/dist/collaboration/approval.js.map +1 -0
  74. package/dist/collaboration/collaboration.d.ts +49 -0
  75. package/dist/collaboration/collaboration.js +56 -0
  76. package/dist/collaboration/collaboration.js.map +1 -0
  77. package/dist/collaboration/comments.d.ts +72 -0
  78. package/dist/collaboration/comments.js +118 -0
  79. package/dist/collaboration/comments.js.map +1 -0
  80. package/dist/collaboration/core.d.ts +25 -0
  81. package/dist/collaboration/core.js +26 -0
  82. package/dist/collaboration/core.js.map +1 -0
  83. package/dist/collaboration/index.d.ts +14 -0
  84. package/dist/collaboration/index.js +15 -0
  85. package/dist/collaboration/index.js.map +1 -0
  86. package/dist/collaboration/presence.d.ts +62 -0
  87. package/dist/collaboration/presence.js +85 -0
  88. package/dist/collaboration/presence.js.map +1 -0
  89. package/dist/collaboration/publishing.d.ts +60 -0
  90. package/dist/collaboration/publishing.js +93 -0
  91. package/dist/collaboration/publishing.js.map +1 -0
  92. package/dist/collaboration/versions.d.ts +52 -0
  93. package/dist/collaboration/versions.js +81 -0
  94. package/dist/collaboration/versions.js.map +1 -0
  95. package/dist/component-registry/index.d.ts +3 -0
  96. package/dist/component-registry/index.js +4 -0
  97. package/dist/component-registry/index.js.map +1 -0
  98. package/dist/component-registry/issues.d.ts +6 -0
  99. package/dist/component-registry/issues.js +2 -0
  100. package/dist/component-registry/issues.js.map +1 -0
  101. package/dist/component-registry/manifest.d.ts +164 -0
  102. package/dist/component-registry/manifest.js +129 -0
  103. package/dist/component-registry/manifest.js.map +1 -0
  104. package/dist/component-registry/registry.d.ts +33 -0
  105. package/dist/component-registry/registry.js +90 -0
  106. package/dist/component-registry/registry.js.map +1 -0
  107. package/dist/content/__fixtures__/filterable-collections.d.ts +14 -0
  108. package/dist/content/__fixtures__/filterable-collections.js +15 -0
  109. package/dist/content/__fixtures__/filterable-collections.js.map +1 -0
  110. package/dist/content/__fixtures__/sample-accessor-types.d.ts +56 -0
  111. package/dist/content/__fixtures__/sample-accessor-types.js +5 -0
  112. package/dist/content/__fixtures__/sample-accessor-types.js.map +1 -0
  113. package/dist/content/__fixtures__/sample-delivery-types.d.ts +122 -0
  114. package/dist/content/__fixtures__/sample-delivery-types.js +5 -0
  115. package/dist/content/__fixtures__/sample-delivery-types.js.map +1 -0
  116. package/dist/content/assets.d.ts +53 -0
  117. package/dist/content/assets.js +38 -0
  118. package/dist/content/assets.js.map +1 -0
  119. package/dist/content/binding-sources.d.ts +53 -0
  120. package/dist/content/binding-sources.js +73 -0
  121. package/dist/content/binding-sources.js.map +1 -0
  122. package/dist/content/client.d.ts +90 -0
  123. package/dist/content/client.js +383 -0
  124. package/dist/content/client.js.map +1 -0
  125. package/dist/content/codegen.d.ts +54 -0
  126. package/dist/content/codegen.js +305 -0
  127. package/dist/content/codegen.js.map +1 -0
  128. package/dist/content/context.d.ts +38 -0
  129. package/dist/content/context.js +21 -0
  130. package/dist/content/context.js.map +1 -0
  131. package/dist/content/cursor.d.ts +33 -0
  132. package/dist/content/cursor.js +104 -0
  133. package/dist/content/cursor.js.map +1 -0
  134. package/dist/content/index.d.ts +28 -0
  135. package/dist/content/index.js +29 -0
  136. package/dist/content/index.js.map +1 -0
  137. package/dist/content/locale.d.ts +30 -0
  138. package/dist/content/locale.js +26 -0
  139. package/dist/content/locale.js.map +1 -0
  140. package/dist/content/perspective.d.ts +29 -0
  141. package/dist/content/perspective.js +31 -0
  142. package/dist/content/perspective.js.map +1 -0
  143. package/dist/content/populate.d.ts +25 -0
  144. package/dist/content/populate.js +22 -0
  145. package/dist/content/populate.js.map +1 -0
  146. package/dist/content/query.d.ts +122 -0
  147. package/dist/content/query.js +257 -0
  148. package/dist/content/query.js.map +1 -0
  149. package/dist/content/raw.d.ts +13 -0
  150. package/dist/content/raw.js +14 -0
  151. package/dist/content/raw.js.map +1 -0
  152. package/dist/content/resolve.d.ts +97 -0
  153. package/dist/content/resolve.js +261 -0
  154. package/dist/content/resolve.js.map +1 -0
  155. package/dist/content/serialize.d.ts +30 -0
  156. package/dist/content/serialize.js +57 -0
  157. package/dist/content/serialize.js.map +1 -0
  158. package/dist/content/tags.d.ts +54 -0
  159. package/dist/content/tags.js +40 -0
  160. package/dist/content/tags.js.map +1 -0
  161. package/dist/data-binding/fixtures.d.ts +20 -0
  162. package/dist/data-binding/fixtures.js +47 -0
  163. package/dist/data-binding/fixtures.js.map +1 -0
  164. package/dist/data-binding/index.d.ts +14 -0
  165. package/dist/data-binding/index.js +15 -0
  166. package/dist/data-binding/index.js.map +1 -0
  167. package/dist/data-binding/issues.d.ts +45 -0
  168. package/dist/data-binding/issues.js +46 -0
  169. package/dist/data-binding/issues.js.map +1 -0
  170. package/dist/data-binding/resolve.d.ts +87 -0
  171. package/dist/data-binding/resolve.js +204 -0
  172. package/dist/data-binding/resolve.js.map +1 -0
  173. package/dist/data-binding/sample.d.ts +21 -0
  174. package/dist/data-binding/sample.js +23 -0
  175. package/dist/data-binding/sample.js.map +1 -0
  176. package/dist/data-binding/sources.d.ts +225 -0
  177. package/dist/data-binding/sources.js +154 -0
  178. package/dist/data-binding/sources.js.map +1 -0
  179. package/dist/data-binding/tokens.d.ts +62 -0
  180. package/dist/data-binding/tokens.js +150 -0
  181. package/dist/data-binding/tokens.js.map +1 -0
  182. package/dist/design-tokens/css.d.ts +34 -0
  183. package/dist/design-tokens/css.js +51 -0
  184. package/dist/design-tokens/css.js.map +1 -0
  185. package/dist/design-tokens/index.d.ts +10 -0
  186. package/dist/design-tokens/index.js +11 -0
  187. package/dist/design-tokens/index.js.map +1 -0
  188. package/dist/design-tokens/style-guide.d.ts +30 -0
  189. package/dist/design-tokens/style-guide.js +31 -0
  190. package/dist/design-tokens/style-guide.js.map +1 -0
  191. package/dist/design-tokens/tokens.d.ts +89 -0
  192. package/dist/design-tokens/tokens.js +112 -0
  193. package/dist/design-tokens/tokens.js.map +1 -0
  194. package/dist/export-sync/builder-source.d.ts +85 -0
  195. package/dist/export-sync/builder-source.js +124 -0
  196. package/dist/export-sync/builder-source.js.map +1 -0
  197. package/dist/export-sync/check.d.ts +61 -0
  198. package/dist/export-sync/check.js +126 -0
  199. package/dist/export-sync/check.js.map +1 -0
  200. package/dist/export-sync/cli.d.ts +89 -0
  201. package/dist/export-sync/cli.js +323 -0
  202. package/dist/export-sync/cli.js.map +1 -0
  203. package/dist/export-sync/core.d.ts +58 -0
  204. package/dist/export-sync/core.js +41 -0
  205. package/dist/export-sync/core.js.map +1 -0
  206. package/dist/export-sync/eject.d.ts +28 -0
  207. package/dist/export-sync/eject.js +21 -0
  208. package/dist/export-sync/eject.js.map +1 -0
  209. package/dist/export-sync/fixtures.d.ts +25 -0
  210. package/dist/export-sync/fixtures.js +87 -0
  211. package/dist/export-sync/fixtures.js.map +1 -0
  212. package/dist/export-sync/generate.d.ts +7 -0
  213. package/dist/export-sync/generate.js +505 -0
  214. package/dist/export-sync/generate.js.map +1 -0
  215. package/dist/export-sync/index.d.ts +37 -0
  216. package/dist/export-sync/index.js +39 -0
  217. package/dist/export-sync/index.js.map +1 -0
  218. package/dist/export-sync/init.d.ts +123 -0
  219. package/dist/export-sync/init.js +234 -0
  220. package/dist/export-sync/init.js.map +1 -0
  221. package/dist/export-sync/manifest-host.d.ts +48 -0
  222. package/dist/export-sync/manifest-host.js +73 -0
  223. package/dist/export-sync/manifest-host.js.map +1 -0
  224. package/dist/export-sync/node.d.ts +20 -0
  225. package/dist/export-sync/node.js +101 -0
  226. package/dist/export-sync/node.js.map +1 -0
  227. package/dist/export-sync/push.d.ts +76 -0
  228. package/dist/export-sync/push.js +197 -0
  229. package/dist/export-sync/push.js.map +1 -0
  230. package/dist/export-sync/registry-sync-client.d.ts +59 -0
  231. package/dist/export-sync/registry-sync-client.js +97 -0
  232. package/dist/export-sync/registry-sync-client.js.map +1 -0
  233. package/dist/export-sync/sync.d.ts +47 -0
  234. package/dist/export-sync/sync.js +47 -0
  235. package/dist/export-sync/sync.js.map +1 -0
  236. package/dist/export-sync/typegen.d.ts +40 -0
  237. package/dist/export-sync/typegen.js +45 -0
  238. package/dist/export-sync/typegen.js.map +1 -0
  239. package/dist/export-sync/validate.d.ts +19 -0
  240. package/dist/export-sync/validate.js +102 -0
  241. package/dist/export-sync/validate.js.map +1 -0
  242. package/dist/export-sync/watch.d.ts +66 -0
  243. package/dist/export-sync/watch.js +70 -0
  244. package/dist/export-sync/watch.js.map +1 -0
  245. package/dist/operations/assets.d.ts +198 -0
  246. package/dist/operations/assets.js +75 -0
  247. package/dist/operations/assets.js.map +1 -0
  248. package/dist/operations/authorization.d.ts +49 -0
  249. package/dist/operations/authorization.js +128 -0
  250. package/dist/operations/authorization.js.map +1 -0
  251. package/dist/operations/changesets.d.ts +160 -0
  252. package/dist/operations/changesets.js +442 -0
  253. package/dist/operations/changesets.js.map +1 -0
  254. package/dist/operations/client.d.ts +49 -0
  255. package/dist/operations/client.js +57 -0
  256. package/dist/operations/client.js.map +1 -0
  257. package/dist/operations/core.d.ts +238 -0
  258. package/dist/operations/core.js +269 -0
  259. package/dist/operations/core.js.map +1 -0
  260. package/dist/operations/documents.d.ts +432 -0
  261. package/dist/operations/documents.js +344 -0
  262. package/dist/operations/documents.js.map +1 -0
  263. package/dist/operations/graph.d.ts +138 -0
  264. package/dist/operations/graph.js +78 -0
  265. package/dist/operations/graph.js.map +1 -0
  266. package/dist/operations/index.d.ts +19 -0
  267. package/dist/operations/index.js +20 -0
  268. package/dist/operations/index.js.map +1 -0
  269. package/dist/operations/members.d.ts +87 -0
  270. package/dist/operations/members.js +56 -0
  271. package/dist/operations/members.js.map +1 -0
  272. package/dist/operations/publishing.d.ts +89 -0
  273. package/dist/operations/publishing.js +57 -0
  274. package/dist/operations/publishing.js.map +1 -0
  275. package/dist/operations/references.d.ts +222 -0
  276. package/dist/operations/references.js +177 -0
  277. package/dist/operations/references.js.map +1 -0
  278. package/dist/operations/schema.d.ts +413 -0
  279. package/dist/operations/schema.js +138 -0
  280. package/dist/operations/schema.js.map +1 -0
  281. package/dist/operations/tokens.d.ts +79 -0
  282. package/dist/operations/tokens.js +102 -0
  283. package/dist/operations/tokens.js.map +1 -0
  284. package/dist/persistence/adapter.d.ts +79 -0
  285. package/dist/persistence/adapter.js +55 -0
  286. package/dist/persistence/adapter.js.map +1 -0
  287. package/dist/persistence/assets.d.ts +120 -0
  288. package/dist/persistence/assets.js +141 -0
  289. package/dist/persistence/assets.js.map +1 -0
  290. package/dist/persistence/backend-validation.d.ts +43 -0
  291. package/dist/persistence/backend-validation.js +57 -0
  292. package/dist/persistence/backend-validation.js.map +1 -0
  293. package/dist/persistence/cli-tokens.d.ts +50 -0
  294. package/dist/persistence/cli-tokens.js +66 -0
  295. package/dist/persistence/cli-tokens.js.map +1 -0
  296. package/dist/persistence/cms.d.ts +148 -0
  297. package/dist/persistence/cms.js +232 -0
  298. package/dist/persistence/cms.js.map +1 -0
  299. package/dist/persistence/contract-scenarios.d.ts +73 -0
  300. package/dist/persistence/contract-scenarios.js +496 -0
  301. package/dist/persistence/contract-scenarios.js.map +1 -0
  302. package/dist/persistence/core.d.ts +96 -0
  303. package/dist/persistence/core.js +110 -0
  304. package/dist/persistence/core.js.map +1 -0
  305. package/dist/persistence/graph.d.ts +61 -0
  306. package/dist/persistence/graph.js +98 -0
  307. package/dist/persistence/graph.js.map +1 -0
  308. package/dist/persistence/index.d.ts +22 -0
  309. package/dist/persistence/index.js +23 -0
  310. package/dist/persistence/index.js.map +1 -0
  311. package/dist/persistence/members.d.ts +70 -0
  312. package/dist/persistence/members.js +0 -0
  313. package/dist/persistence/members.js.map +1 -0
  314. package/dist/persistence/publishing.d.ts +59 -0
  315. package/dist/persistence/publishing.js +95 -0
  316. package/dist/persistence/publishing.js.map +1 -0
  317. package/dist/persistence/reference-extraction.d.ts +44 -0
  318. package/dist/persistence/reference-extraction.js +204 -0
  319. package/dist/persistence/reference-extraction.js.map +1 -0
  320. package/dist/persistence/reference-indexing.d.ts +68 -0
  321. package/dist/persistence/reference-indexing.js +112 -0
  322. package/dist/persistence/reference-indexing.js.map +1 -0
  323. package/dist/persistence/references.d.ts +257 -0
  324. package/dist/persistence/references.js +0 -0
  325. package/dist/persistence/references.js.map +1 -0
  326. package/dist/persistence/seed.d.ts +55 -0
  327. package/dist/persistence/seed.js +102 -0
  328. package/dist/persistence/seed.js.map +1 -0
  329. package/dist/persistence/self-maintaining-adapter.d.ts +41 -0
  330. package/dist/persistence/self-maintaining-adapter.js +79 -0
  331. package/dist/persistence/self-maintaining-adapter.js.map +1 -0
  332. package/dist/plugins/asset-storage.d.ts +76 -0
  333. package/dist/plugins/asset-storage.js +104 -0
  334. package/dist/plugins/asset-storage.js.map +1 -0
  335. package/dist/plugins/component-package.d.ts +54 -0
  336. package/dist/plugins/component-package.js +92 -0
  337. package/dist/plugins/component-package.js.map +1 -0
  338. package/dist/plugins/data-sources.d.ts +78 -0
  339. package/dist/plugins/data-sources.js +99 -0
  340. package/dist/plugins/data-sources.js.map +1 -0
  341. package/dist/plugins/examples.d.ts +47 -0
  342. package/dist/plugins/examples.js +205 -0
  343. package/dist/plugins/examples.js.map +1 -0
  344. package/dist/plugins/export-targets.d.ts +47 -0
  345. package/dist/plugins/export-targets.js +78 -0
  346. package/dist/plugins/export-targets.js.map +1 -0
  347. package/dist/plugins/field-types.d.ts +86 -0
  348. package/dist/plugins/field-types.js +93 -0
  349. package/dist/plugins/field-types.js.map +1 -0
  350. package/dist/plugins/hooks.d.ts +60 -0
  351. package/dist/plugins/hooks.js +94 -0
  352. package/dist/plugins/hooks.js.map +1 -0
  353. package/dist/plugins/index.d.ts +27 -0
  354. package/dist/plugins/index.js +28 -0
  355. package/dist/plugins/index.js.map +1 -0
  356. package/dist/plugins/marketplace.d.ts +90 -0
  357. package/dist/plugins/marketplace.js +110 -0
  358. package/dist/plugins/marketplace.js.map +1 -0
  359. package/dist/plugins/plugin.d.ts +107 -0
  360. package/dist/plugins/plugin.js +122 -0
  361. package/dist/plugins/plugin.js.map +1 -0
  362. package/dist/plugins/templates.d.ts +66 -0
  363. package/dist/plugins/templates.js +74 -0
  364. package/dist/plugins/templates.js.map +1 -0
  365. package/dist/project-graph/binding.d.ts +68 -0
  366. package/dist/project-graph/binding.js +39 -0
  367. package/dist/project-graph/binding.js.map +1 -0
  368. package/dist/project-graph/container.d.ts +126 -0
  369. package/dist/project-graph/container.js +221 -0
  370. package/dist/project-graph/container.js.map +1 -0
  371. package/dist/project-graph/edit.d.ts +66 -0
  372. package/dist/project-graph/edit.js +201 -0
  373. package/dist/project-graph/edit.js.map +1 -0
  374. package/dist/project-graph/fixtures.d.ts +51 -0
  375. package/dist/project-graph/fixtures.js +224 -0
  376. package/dist/project-graph/fixtures.js.map +1 -0
  377. package/dist/project-graph/ids.d.ts +17 -0
  378. package/dist/project-graph/ids.js +19 -0
  379. package/dist/project-graph/ids.js.map +1 -0
  380. package/dist/project-graph/index.d.ts +12 -0
  381. package/dist/project-graph/index.js +13 -0
  382. package/dist/project-graph/index.js.map +1 -0
  383. package/dist/project-graph/issues.d.ts +61 -0
  384. package/dist/project-graph/issues.js +44 -0
  385. package/dist/project-graph/issues.js.map +1 -0
  386. package/dist/project-graph/json.d.ts +6 -0
  387. package/dist/project-graph/json.js +10 -0
  388. package/dist/project-graph/json.js.map +1 -0
  389. package/dist/project-graph/node.d.ts +48 -0
  390. package/dist/project-graph/node.js +42 -0
  391. package/dist/project-graph/node.js.map +1 -0
  392. package/dist/project-graph/normalize.d.ts +17 -0
  393. package/dist/project-graph/normalize.js +110 -0
  394. package/dist/project-graph/normalize.js.map +1 -0
  395. package/dist/project-graph/serialize.d.ts +36 -0
  396. package/dist/project-graph/serialize.js +51 -0
  397. package/dist/project-graph/serialize.js.map +1 -0
  398. package/dist/project-graph/structure.d.ts +40 -0
  399. package/dist/project-graph/structure.js +36 -0
  400. package/dist/project-graph/structure.js.map +1 -0
  401. package/dist/project-graph/validate.d.ts +84 -0
  402. package/dist/project-graph/validate.js +158 -0
  403. package/dist/project-graph/validate.js.map +1 -0
  404. package/dist/rich-text/adapter.d.ts +43 -0
  405. package/dist/rich-text/adapter.js +24 -0
  406. package/dist/rich-text/adapter.js.map +1 -0
  407. package/dist/rich-text/dom-editor.d.ts +101 -0
  408. package/dist/rich-text/dom-editor.js +482 -0
  409. package/dist/rich-text/dom-editor.js.map +1 -0
  410. package/dist/rich-text/embed.d.ts +70 -0
  411. package/dist/rich-text/embed.js +70 -0
  412. package/dist/rich-text/embed.js.map +1 -0
  413. package/dist/rich-text/fixtures.d.ts +25 -0
  414. package/dist/rich-text/fixtures.js +115 -0
  415. package/dist/rich-text/fixtures.js.map +1 -0
  416. package/dist/rich-text/html.d.ts +5 -0
  417. package/dist/rich-text/html.js +309 -0
  418. package/dist/rich-text/html.js.map +1 -0
  419. package/dist/rich-text/index.d.ts +19 -0
  420. package/dist/rich-text/index.js +20 -0
  421. package/dist/rich-text/index.js.map +1 -0
  422. package/dist/rich-text/markdown.d.ts +7 -0
  423. package/dist/rich-text/markdown.js +235 -0
  424. package/dist/rich-text/markdown.js.map +1 -0
  425. package/dist/rich-text/portable-text.d.ts +50 -0
  426. package/dist/rich-text/portable-text.js +223 -0
  427. package/dist/rich-text/portable-text.js.map +1 -0
  428. package/dist/rich-text/registry.d.ts +48 -0
  429. package/dist/rich-text/registry.js +16 -0
  430. package/dist/rich-text/registry.js.map +1 -0
  431. package/dist/rich-text/render.d.ts +69 -0
  432. package/dist/rich-text/render.js +205 -0
  433. package/dist/rich-text/render.js.map +1 -0
  434. package/dist/rich-text/schema.d.ts +86 -0
  435. package/dist/rich-text/schema.js +80 -0
  436. package/dist/rich-text/schema.js.map +1 -0
  437. package/dist/rich-text/test-support.d.ts +7 -0
  438. package/dist/rich-text/test-support.js +8 -0
  439. package/dist/rich-text/test-support.js.map +1 -0
  440. package/dist/runtime-renderer/client.d.ts +14 -0
  441. package/dist/runtime-renderer/client.js +15 -0
  442. package/dist/runtime-renderer/client.js.map +1 -0
  443. package/dist/runtime-renderer/condition.d.ts +8 -0
  444. package/dist/runtime-renderer/condition.js +48 -0
  445. package/dist/runtime-renderer/condition.js.map +1 -0
  446. package/dist/runtime-renderer/content-client.d.ts +62 -0
  447. package/dist/runtime-renderer/content-client.js +37 -0
  448. package/dist/runtime-renderer/content-client.js.map +1 -0
  449. package/dist/runtime-renderer/context.d.ts +185 -0
  450. package/dist/runtime-renderer/context.js +7 -0
  451. package/dist/runtime-renderer/context.js.map +1 -0
  452. package/dist/runtime-renderer/fallback.d.ts +39 -0
  453. package/dist/runtime-renderer/fallback.js +45 -0
  454. package/dist/runtime-renderer/fallback.js.map +1 -0
  455. package/dist/runtime-renderer/index.d.ts +13 -0
  456. package/dist/runtime-renderer/index.js +13 -0
  457. package/dist/runtime-renderer/index.js.map +1 -0
  458. package/dist/runtime-renderer/primitives.d.ts +85 -0
  459. package/dist/runtime-renderer/primitives.js +442 -0
  460. package/dist/runtime-renderer/primitives.js.map +1 -0
  461. package/dist/runtime-renderer/render.d.ts +138 -0
  462. package/dist/runtime-renderer/render.js +825 -0
  463. package/dist/runtime-renderer/render.js.map +1 -0
  464. package/dist/runtime-renderer/rich-text.d.ts +26 -0
  465. package/dist/runtime-renderer/rich-text.js +113 -0
  466. package/dist/runtime-renderer/rich-text.js.map +1 -0
  467. package/dist/starter-kits/index.d.ts +13 -0
  468. package/dist/starter-kits/index.js +14 -0
  469. package/dist/starter-kits/index.js.map +1 -0
  470. package/dist/starter-kits/instantiate.d.ts +29 -0
  471. package/dist/starter-kits/instantiate.js +24 -0
  472. package/dist/starter-kits/instantiate.js.map +1 -0
  473. package/dist/starter-kits/kit.d.ts +61 -0
  474. package/dist/starter-kits/kit.js +37 -0
  475. package/dist/starter-kits/kit.js.map +1 -0
  476. package/dist/starter-kits/kits.d.ts +7 -0
  477. package/dist/starter-kits/kits.js +201 -0
  478. package/dist/starter-kits/kits.js.map +1 -0
  479. package/dist/starter-kits/manifests.d.ts +7 -0
  480. package/dist/starter-kits/manifests.js +111 -0
  481. package/dist/starter-kits/manifests.js.map +1 -0
  482. package/dist/starter-kits/upgrade.d.ts +39 -0
  483. package/dist/starter-kits/upgrade.js +54 -0
  484. package/dist/starter-kits/upgrade.js.map +1 -0
  485. package/dist/starter-kits/validate.d.ts +16 -0
  486. package/dist/starter-kits/validate.js +77 -0
  487. package/dist/starter-kits/validate.js.map +1 -0
  488. package/dist/studio-core/context.d.ts +27 -0
  489. package/dist/studio-core/context.js +44 -0
  490. package/dist/studio-core/context.js.map +1 -0
  491. package/dist/studio-core/errors.d.ts +58 -0
  492. package/dist/studio-core/errors.js +74 -0
  493. package/dist/studio-core/errors.js.map +1 -0
  494. package/dist/studio-core/fixtures.d.ts +18 -0
  495. package/dist/studio-core/fixtures.js +83 -0
  496. package/dist/studio-core/fixtures.js.map +1 -0
  497. package/dist/studio-core/ids.d.ts +22 -0
  498. package/dist/studio-core/ids.js +33 -0
  499. package/dist/studio-core/ids.js.map +1 -0
  500. package/dist/studio-core/index.d.ts +11 -0
  501. package/dist/studio-core/index.js +12 -0
  502. package/dist/studio-core/index.js.map +1 -0
  503. package/dist/studio-core/issues.d.ts +50 -0
  504. package/dist/studio-core/issues.js +33 -0
  505. package/dist/studio-core/issues.js.map +1 -0
  506. package/dist/studio-core/metadata.d.ts +109 -0
  507. package/dist/studio-core/metadata.js +74 -0
  508. package/dist/studio-core/metadata.js.map +1 -0
  509. package/dist/studio-core/repository.d.ts +73 -0
  510. package/dist/studio-core/repository.js +202 -0
  511. package/dist/studio-core/repository.js.map +1 -0
  512. package/dist/studio-core/sections.d.ts +73 -0
  513. package/dist/studio-core/sections.js +68 -0
  514. package/dist/studio-core/sections.js.map +1 -0
  515. package/dist/studio-core/validate.d.ts +15 -0
  516. package/dist/studio-core/validate.js +119 -0
  517. package/dist/studio-core/validate.js.map +1 -0
  518. package/dist/studio-core/workspace-config.d.ts +587 -0
  519. package/dist/studio-core/workspace-config.js +434 -0
  520. package/dist/studio-core/workspace-config.js.map +1 -0
  521. package/package.json +104 -0
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Lossy Markdown import/export helpers (brief §7.6).
3
+ *
4
+ * Supports the common CommonMark-ish subset: ATX headings, paragraphs, bullet and
5
+ * ordered lists, blockquotes, fenced code blocks, horizontal rules, plus inline
6
+ * bold/italic/code and links. Anything outside this subset is dropped on export
7
+ * and treated as plain text on import — lossy by design. No external Markdown
8
+ * library is required, keeping the spike dependency-free and server-safe.
9
+ */
10
+ function attrStr(node, name) {
11
+ const v = node.attrs?.[name];
12
+ return typeof v === 'string' ? v : undefined;
13
+ }
14
+ // ---------------------------------------------------------------------------
15
+ // Export: storage tree → Markdown
16
+ // ---------------------------------------------------------------------------
17
+ function hasMark(node, type) {
18
+ return node.marks?.find((m) => m.type === type);
19
+ }
20
+ function inlineToMd(nodes) {
21
+ return (nodes ?? [])
22
+ .map((node) => {
23
+ if (node.type === 'hardBreak')
24
+ return '\n';
25
+ if (node.type !== 'text')
26
+ return inlineToMd(node.content);
27
+ let text = node.text ?? '';
28
+ if (hasMark(node, 'code'))
29
+ text = `\`${text}\``;
30
+ if (hasMark(node, 'bold'))
31
+ text = `**${text}**`;
32
+ if (hasMark(node, 'italic'))
33
+ text = `*${text}*`;
34
+ const link = hasMark(node, 'link');
35
+ if (link) {
36
+ const href = typeof link.attrs?.href === 'string' ? link.attrs.href : '';
37
+ text = `[${text}](${href})`;
38
+ }
39
+ return text;
40
+ })
41
+ .join('');
42
+ }
43
+ function listToMd(node, ordered) {
44
+ return (node.content ?? [])
45
+ .map((item, i) => {
46
+ const marker = ordered ? `${i + 1}.` : '-';
47
+ const body = (item.content ?? [])
48
+ .map((child) => (child.type === 'paragraph' ? inlineToMd(child.content) : nodeToMd(child)))
49
+ .join(' ');
50
+ return `${marker} ${body}`;
51
+ })
52
+ .join('\n');
53
+ }
54
+ function nodeToMd(node) {
55
+ switch (node.type) {
56
+ case 'paragraph':
57
+ return inlineToMd(node.content);
58
+ case 'heading': {
59
+ const level = typeof node.attrs?.level === 'number' ? node.attrs.level : 1;
60
+ const l = Math.min(Math.max(level, 1), 6);
61
+ return `${'#'.repeat(l)} ${inlineToMd(node.content)}`;
62
+ }
63
+ case 'bulletList':
64
+ return listToMd(node, false);
65
+ case 'orderedList':
66
+ return listToMd(node, true);
67
+ case 'blockquote':
68
+ return (node.content ?? [])
69
+ .map((child) => nodeToMd(child))
70
+ .join('\n')
71
+ .split('\n')
72
+ .map((line) => `> ${line}`)
73
+ .join('\n');
74
+ case 'codeBlock': {
75
+ const language = attrStr(node, 'language') ?? '';
76
+ const text = (node.content ?? []).map((c) => c.text ?? '').join('');
77
+ return `\`\`\`${language}\n${text}\n\`\`\``;
78
+ }
79
+ case 'horizontalRule':
80
+ return '---';
81
+ case 'image': {
82
+ const src = attrStr(node, 'src') ?? '';
83
+ const alt = attrStr(node, 'alt') ?? '';
84
+ return `![${alt}](${src})`;
85
+ }
86
+ default:
87
+ // Lossy: unknown/custom blocks have no Markdown form — drop them.
88
+ return '';
89
+ }
90
+ }
91
+ /** Serialize a document to a lossy Markdown string. */
92
+ export function richTextToMarkdown(doc) {
93
+ return doc.content
94
+ .map(nodeToMd)
95
+ .filter((block) => block.length > 0)
96
+ .join('\n\n');
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // Import: Markdown → storage tree
100
+ // ---------------------------------------------------------------------------
101
+ /** Parse inline Markdown (bold/italic/code/link) into text nodes. Lossy. */
102
+ export function parseInlineMarkdown(text) {
103
+ const nodes = [];
104
+ // Token regex, ordered so code spans win over emphasis inside them.
105
+ const re = /(`[^`]+`)|(\*\*[^*]+\*\*)|(\*[^*]+\*)|(\[[^\]]+\]\([^)]*\))/g;
106
+ let last = 0;
107
+ let m;
108
+ const pushText = (raw, marks) => {
109
+ if (raw.length === 0)
110
+ return;
111
+ nodes.push(marks.length > 0 ? { type: 'text', text: raw, marks } : { type: 'text', text: raw });
112
+ };
113
+ while ((m = re.exec(text)) !== null) {
114
+ if (m.index > last)
115
+ pushText(text.slice(last, m.index), []);
116
+ last = re.lastIndex;
117
+ const token = m[0];
118
+ if (token.startsWith('`')) {
119
+ pushText(token.slice(1, -1), [{ type: 'code' }]);
120
+ }
121
+ else if (token.startsWith('**')) {
122
+ pushText(token.slice(2, -2), [{ type: 'bold' }]);
123
+ }
124
+ else if (token.startsWith('*')) {
125
+ pushText(token.slice(1, -1), [{ type: 'italic' }]);
126
+ }
127
+ else if (token.startsWith('[')) {
128
+ const linkMatch = /^\[([^\]]+)\]\(([^)]*)\)$/.exec(token);
129
+ if (linkMatch) {
130
+ const label = linkMatch[1] ?? '';
131
+ const href = linkMatch[2] ?? '';
132
+ pushText(label, [{ type: 'link', attrs: { href } }]);
133
+ }
134
+ }
135
+ }
136
+ if (last < text.length)
137
+ pushText(text.slice(last), []);
138
+ return nodes;
139
+ }
140
+ function isOrderedItem(line) {
141
+ return /^\s*\d+\.\s+/.test(line);
142
+ }
143
+ function isBulletItem(line) {
144
+ return /^\s*[-*+]\s+/.test(line);
145
+ }
146
+ /** Parse a lossy Markdown string into a document tree. */
147
+ export function markdownToRichText(markdown) {
148
+ const lines = markdown.replace(/\r\n/g, '\n').split('\n');
149
+ const content = [];
150
+ let i = 0;
151
+ const flushParagraph = (buffer) => {
152
+ if (buffer.length === 0)
153
+ return;
154
+ const text = buffer.join(' ').trim();
155
+ if (text.length > 0)
156
+ content.push({ type: 'paragraph', content: parseInlineMarkdown(text) });
157
+ buffer.length = 0;
158
+ };
159
+ const paragraph = [];
160
+ while (i < lines.length) {
161
+ const line = lines[i] ?? '';
162
+ const trimmed = line.trim();
163
+ // Fenced code block.
164
+ const fence = /^```(\w*)\s*$/.exec(trimmed);
165
+ if (fence) {
166
+ flushParagraph(paragraph);
167
+ const language = fence[1] ?? '';
168
+ const codeLines = [];
169
+ i++;
170
+ while (i < lines.length && !/^```\s*$/.test((lines[i] ?? '').trim())) {
171
+ codeLines.push(lines[i] ?? '');
172
+ i++;
173
+ }
174
+ i++; // skip closing fence
175
+ content.push({
176
+ type: 'codeBlock',
177
+ ...(language ? { attrs: { language } } : {}),
178
+ content: codeLines.length > 0 ? [{ type: 'text', text: codeLines.join('\n') }] : [],
179
+ });
180
+ continue;
181
+ }
182
+ // Blank line ends a paragraph.
183
+ if (trimmed.length === 0) {
184
+ flushParagraph(paragraph);
185
+ i++;
186
+ continue;
187
+ }
188
+ // Horizontal rule.
189
+ if (/^(-{3,}|\*{3,}|_{3,})$/.test(trimmed)) {
190
+ flushParagraph(paragraph);
191
+ content.push({ type: 'horizontalRule' });
192
+ i++;
193
+ continue;
194
+ }
195
+ // ATX heading.
196
+ const heading = /^(#{1,6})\s+(.*)$/.exec(trimmed);
197
+ if (heading) {
198
+ flushParagraph(paragraph);
199
+ const level = heading[1]?.length ?? 1;
200
+ content.push({ type: 'heading', attrs: { level }, content: parseInlineMarkdown(heading[2] ?? '') });
201
+ i++;
202
+ continue;
203
+ }
204
+ // Blockquote (consume consecutive `>` lines).
205
+ if (/^>\s?/.test(trimmed)) {
206
+ flushParagraph(paragraph);
207
+ const quoteLines = [];
208
+ while (i < lines.length && /^\s*>\s?/.test(lines[i] ?? '')) {
209
+ quoteLines.push((lines[i] ?? '').replace(/^\s*>\s?/, ''));
210
+ i++;
211
+ }
212
+ content.push({ type: 'blockquote', content: [{ type: 'paragraph', content: parseInlineMarkdown(quoteLines.join(' ').trim()) }] });
213
+ continue;
214
+ }
215
+ // Lists (consume consecutive items of the same kind).
216
+ if (isBulletItem(line) || isOrderedItem(line)) {
217
+ flushParagraph(paragraph);
218
+ const ordered = isOrderedItem(line);
219
+ const items = [];
220
+ while (i < lines.length && (ordered ? isOrderedItem(lines[i] ?? '') : isBulletItem(lines[i] ?? ''))) {
221
+ const itemText = (lines[i] ?? '').replace(ordered ? /^\s*\d+\.\s+/ : /^\s*[-*+]\s+/, '');
222
+ items.push({ type: 'listItem', content: [{ type: 'paragraph', content: parseInlineMarkdown(itemText) }] });
223
+ i++;
224
+ }
225
+ content.push({ type: ordered ? 'orderedList' : 'bulletList', content: items });
226
+ continue;
227
+ }
228
+ // Otherwise accumulate into the current paragraph.
229
+ paragraph.push(trimmed);
230
+ i++;
231
+ }
232
+ flushParagraph(paragraph);
233
+ return { type: 'doc', content };
234
+ }
235
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/rich-text/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { RichTextValue } from './schema';
2
+ /**
3
+ * Sanity **Portable Text → TipTap richText** migration transform (EC-229).
4
+ *
5
+ * Both real migration targets store long-form content as Portable Text
6
+ * (Naturkinder's `freeform` block, Konditorei's `richTextSection.content`). This
7
+ * is the one reusable piece of migration tooling both sites need — written once,
8
+ * as a pure, dependency-free, never-throwing transform that lives next to the
9
+ * storage format it produces (`./schema`).
10
+ *
11
+ * What it maps:
12
+ * - block `style` → node: `normal`→`paragraph`, `h1..h6`→`heading{level}`,
13
+ * `blockquote`→`blockquote`(wrapping a paragraph). Unknown styles fall back to
14
+ * a paragraph **with a flagged issue** (text preserved, never lost).
15
+ * - span decorators → marks: `strong`→`bold`, `em`→`italic`, `code`→`code`,
16
+ * `underline`→`underline`, `strike-through`→`strike`.
17
+ * - span annotation keys → marks via the block's `markDefs`: a `link` def →
18
+ * a `link` mark (`href`, `target` when the def is `blank`).
19
+ * - `listItem`/`level` blocks → nested `bulletList`/`orderedList`/`listItem`.
20
+ *
21
+ * What it deliberately does NOT map (flagged, never silently dropped):
22
+ * - Embedded **object blocks** (`_type` other than `block`: images, custom
23
+ * sections, references). Resolving a Sanity image needs asset dereferencing,
24
+ * and custom sections need per-site component mapping — neither is a pure text
25
+ * transform. Each becomes an `unmapped-block-type` issue so the site-specific
26
+ * migration can handle it (assets pipeline / component mapping).
27
+ * - Unknown decorators / annotation types → `unmapped-mark` issues; the text is
28
+ * always kept, only the mark is dropped.
29
+ *
30
+ * The contract is "never a silent loss": anything the transform can't represent
31
+ * surfaces as a structured {@link PortableTextIssue}, mirroring how the rest of
32
+ * the system treats unmappable content as a visible validation issue.
33
+ */
34
+ /** A structured, non-fatal problem encountered while transforming Portable Text. */
35
+ export interface PortableTextIssue {
36
+ code: 'unmapped-block-type' | 'unmapped-block-style' | 'unmapped-mark' | 'malformed';
37
+ message: string;
38
+ /** Location in the input, e.g. `[3]` or `[3, 'children', 1]`. */
39
+ path: (string | number)[];
40
+ }
41
+ /** Result of {@link portableTextToRichText}: the value plus any issues. */
42
+ export interface PortableTextResult {
43
+ value: RichTextValue;
44
+ issues: PortableTextIssue[];
45
+ }
46
+ /**
47
+ * Transform Sanity Portable Text into a versioned {@link RichTextValue}. Pure and
48
+ * total — never throws; unmappable content surfaces as {@link PortableTextIssue}s.
49
+ */
50
+ export declare function portableTextToRichText(input: unknown): PortableTextResult;
@@ -0,0 +1,223 @@
1
+ import { createRichTextValue } from './schema';
2
+ /** Sanity decorator name → TipTap mark type. */
3
+ const DECORATOR_TO_MARK = {
4
+ strong: 'bold',
5
+ em: 'italic',
6
+ code: 'code',
7
+ underline: 'underline',
8
+ 'strike-through': 'strike',
9
+ };
10
+ /** Heading-style block `style` → heading level. */
11
+ const HEADING_LEVELS = {
12
+ h1: 1,
13
+ h2: 2,
14
+ h3: 3,
15
+ h4: 4,
16
+ h5: 5,
17
+ h6: 6,
18
+ };
19
+ function isObject(value) {
20
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
21
+ }
22
+ function str(value) {
23
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
24
+ }
25
+ /** Resolve a span's `marks` (decorators + annotation keys) to TipTap marks. */
26
+ function resolveMarks(raw, markDefs, path, issues) {
27
+ if (!Array.isArray(raw))
28
+ return [];
29
+ const marks = [];
30
+ for (const entry of raw) {
31
+ if (typeof entry !== 'string')
32
+ continue;
33
+ const decorator = DECORATOR_TO_MARK[entry];
34
+ if (decorator) {
35
+ marks.push({ type: decorator });
36
+ continue;
37
+ }
38
+ // Not a known decorator → an annotation key referencing a markDef.
39
+ const def = markDefs.find((candidate) => isObject(candidate) && candidate['_key'] === entry);
40
+ if (isObject(def)) {
41
+ const mark = annotationToMark(def);
42
+ if (mark) {
43
+ marks.push(mark);
44
+ continue;
45
+ }
46
+ issues.push({
47
+ code: 'unmapped-mark',
48
+ message: `Annotation "${str(def['_type']) ?? '(missing _type)'}" (${entry}) has no mark mapping; dropped (text kept).`,
49
+ path,
50
+ });
51
+ continue;
52
+ }
53
+ issues.push({
54
+ code: 'unmapped-mark',
55
+ message: `Unknown mark "${entry}"; dropped (text kept).`,
56
+ path,
57
+ });
58
+ }
59
+ return marks;
60
+ }
61
+ /** Map a Portable Text annotation (markDef) to a TipTap mark, or null if unmapped. */
62
+ function annotationToMark(def) {
63
+ if (str(def['_type']) === 'link') {
64
+ const href = str(def['href']) ?? '';
65
+ const attrs = { href };
66
+ if (def['blank'] === true || str(def['target']) === '_blank')
67
+ attrs['target'] = '_blank';
68
+ return { type: 'link', attrs };
69
+ }
70
+ return null;
71
+ }
72
+ /** Convert a `block`'s `children` spans into inline text nodes. */
73
+ function inlineChildren(block, index, issues) {
74
+ const children = block['children'];
75
+ if (!Array.isArray(children))
76
+ return [];
77
+ const markDefs = Array.isArray(block['markDefs']) ? block['markDefs'] : [];
78
+ const nodes = [];
79
+ children.forEach((span, si) => {
80
+ if (!isObject(span))
81
+ return;
82
+ if (str(span['_type']) !== 'span') {
83
+ issues.push({
84
+ code: 'unmapped-block-type',
85
+ message: `Inline "${str(span['_type']) ?? '(missing _type)'}" has no rich-text mapping; dropped.`,
86
+ path: [index, 'children', si],
87
+ });
88
+ return;
89
+ }
90
+ // ProseMirror text nodes must be non-empty.
91
+ const text = typeof span['text'] === 'string' ? span['text'] : '';
92
+ if (text.length === 0)
93
+ return;
94
+ const marks = resolveMarks(span['marks'], markDefs, [index, 'children', si], issues);
95
+ nodes.push(marks.length > 0 ? { type: 'text', text, marks } : { type: 'text', text });
96
+ });
97
+ return nodes;
98
+ }
99
+ /** Convert a single non-list Portable Text block to a node, or null if dropped. */
100
+ function convertBlock(block, index, issues) {
101
+ if (str(block['_type']) !== 'block') {
102
+ issues.push({
103
+ code: 'unmapped-block-type',
104
+ message: `Embedded block "${str(block['_type']) ?? '(missing _type)'}" has no rich-text mapping; dropped. Handle it in site-specific migration (asset/component).`,
105
+ path: [index],
106
+ });
107
+ return null;
108
+ }
109
+ const content = inlineChildren(block, index, issues);
110
+ const style = str(block['style']) ?? 'normal';
111
+ if (style === 'normal')
112
+ return { type: 'paragraph', content };
113
+ if (style === 'blockquote') {
114
+ return { type: 'blockquote', content: [{ type: 'paragraph', content }] };
115
+ }
116
+ const level = HEADING_LEVELS[style];
117
+ if (level)
118
+ return { type: 'heading', attrs: { level }, content };
119
+ issues.push({
120
+ code: 'unmapped-block-style',
121
+ message: `Unknown block style "${style}"; rendered as a paragraph (text kept).`,
122
+ path: [index, 'style'],
123
+ });
124
+ return { type: 'paragraph', content };
125
+ }
126
+ function listTypeFor(listItem) {
127
+ return listItem === 'number' ? 'orderedList' : 'bulletList';
128
+ }
129
+ function itemsOf(node) {
130
+ if (!node.content)
131
+ node.content = [];
132
+ return node.content;
133
+ }
134
+ /**
135
+ * Build nested lists from a run of consecutive `listItem` blocks. Sanity encodes
136
+ * nesting with a 1-based `level`; a deeper level nests inside the previous item,
137
+ * and a different `listItem` kind at the same level starts a sibling list.
138
+ */
139
+ function buildLists(run, issues) {
140
+ const roots = [];
141
+ const stack = [];
142
+ for (const { block, index } of run) {
143
+ const listItem = str(block['listItem']) ?? 'bullet';
144
+ const rawLevel = block['level'];
145
+ const level = typeof rawLevel === 'number' && rawLevel >= 1 ? Math.floor(rawLevel) : 1;
146
+ const itemNode = {
147
+ type: 'listItem',
148
+ content: [{ type: 'paragraph', content: inlineChildren(block, index, issues) }],
149
+ };
150
+ // Close any lists deeper than this item.
151
+ while (stack.length > 0 && stack[stack.length - 1].level > level)
152
+ stack.pop();
153
+ let top = stack[stack.length - 1];
154
+ // Same depth but a different list kind → close it and open a sibling.
155
+ if (top && top.level === level && top.listItem !== listItem) {
156
+ stack.pop();
157
+ top = stack[stack.length - 1];
158
+ }
159
+ if (top && top.level === level) {
160
+ itemsOf(top.node).push(itemNode);
161
+ continue;
162
+ }
163
+ // Open a new list at this level — nested in the parent's last item, or a root.
164
+ const listNode = { type: listTypeFor(listItem), content: [itemNode] };
165
+ if (top && top.level < level) {
166
+ const parentItems = itemsOf(top.node);
167
+ const lastItem = parentItems[parentItems.length - 1];
168
+ if (lastItem)
169
+ itemsOf(lastItem).push(listNode);
170
+ else
171
+ parentItems.push({ type: 'listItem', content: [listNode] });
172
+ }
173
+ else {
174
+ roots.push(listNode);
175
+ }
176
+ stack.push({ level, listItem, node: listNode });
177
+ }
178
+ return roots;
179
+ }
180
+ /**
181
+ * Transform Sanity Portable Text into a versioned {@link RichTextValue}. Pure and
182
+ * total — never throws; unmappable content surfaces as {@link PortableTextIssue}s.
183
+ */
184
+ export function portableTextToRichText(input) {
185
+ const issues = [];
186
+ const content = [];
187
+ // A nullish field is empty content, not an error.
188
+ if (input === null || input === undefined) {
189
+ return { value: createRichTextValue({ type: 'doc', content }), issues };
190
+ }
191
+ if (!Array.isArray(input)) {
192
+ issues.push({ code: 'malformed', message: 'Portable Text must be an array of blocks.', path: [] });
193
+ return { value: createRichTextValue({ type: 'doc', content }), issues };
194
+ }
195
+ let i = 0;
196
+ while (i < input.length) {
197
+ const block = input[i];
198
+ if (!isObject(block)) {
199
+ issues.push({ code: 'malformed', message: `Block at index ${i} is not an object; skipped.`, path: [i] });
200
+ i++;
201
+ continue;
202
+ }
203
+ // Group a run of consecutive list blocks into nested lists.
204
+ if (str(block['_type']) === 'block' && str(block['listItem'])) {
205
+ const run = [];
206
+ while (i < input.length) {
207
+ const next = input[i];
208
+ if (!isObject(next) || str(next['_type']) !== 'block' || !str(next['listItem']))
209
+ break;
210
+ run.push({ block: next, index: i });
211
+ i++;
212
+ }
213
+ content.push(...buildLists(run, issues));
214
+ continue;
215
+ }
216
+ const node = convertBlock(block, i, issues);
217
+ if (node)
218
+ content.push(node);
219
+ i++;
220
+ }
221
+ return { value: createRichTextValue({ type: 'doc', content }), issues };
222
+ }
223
+ //# sourceMappingURL=portable-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-text.js","sourceRoot":"","sources":["../../src/rich-text/portable-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { RichTextNode } from './schema';
3
+ /**
4
+ * Registration hooks for rendering custom rich-text nodes (brief §7.6).
5
+ *
6
+ * Two flavours, mirroring TipTap's node groups:
7
+ * - **block** components — full-width blocks (e.g. a callout, a CTA card) that the
8
+ * builder surfaces from the component registry as custom blocks.
9
+ * - **inline** components — mentions, badges, tokens, and data references that sit
10
+ * inside a paragraph alongside text.
11
+ *
12
+ * The renderer (see `render.tsx`) is server-safe and only knows the *shape* of a
13
+ * registry, not where it comes from. Consumers build a registry from their own
14
+ * component manifests and pass it in, keeping the renderer decoupled from the
15
+ * project's component registry package.
16
+ */
17
+ /** Props handed to a custom node renderer. */
18
+ export interface CustomNodeRenderProps {
19
+ /** The raw storage node, so the component can read its `attrs`. */
20
+ node: RichTextNode;
21
+ /**
22
+ * Already-rendered children (present for block components with inline/leaf
23
+ * content). Inline atoms typically ignore this.
24
+ */
25
+ children?: ReactNode;
26
+ }
27
+ export type CustomNodeRenderer = (props: CustomNodeRenderProps) => ReactElement | null;
28
+ export interface CustomNodeDefinition {
29
+ /** The storage `node.type` this renderer handles, e.g. `callout` or `mention`. */
30
+ type: string;
31
+ group: 'block' | 'inline';
32
+ render: CustomNodeRenderer;
33
+ }
34
+ /**
35
+ * A read-only registry of custom node renderers. Look-ups are keyed by storage
36
+ * `node.type`; the renderer falls back to a visible placeholder when a type is not
37
+ * registered and is not a built-in.
38
+ */
39
+ export interface RichTextRegistry {
40
+ has(type: string): boolean;
41
+ get(type: string): CustomNodeDefinition | undefined;
42
+ /** Whether a registered custom node renders inline (vs. as a block). */
43
+ isInline(type: string): boolean;
44
+ }
45
+ /** Build an immutable {@link RichTextRegistry} from a list of definitions. */
46
+ export declare function createRichTextRegistry(definitions?: readonly CustomNodeDefinition[]): RichTextRegistry;
47
+ /** An empty registry — convenient default for callers with no custom blocks. */
48
+ export declare const emptyRichTextRegistry: RichTextRegistry;
@@ -0,0 +1,16 @@
1
+ /** Build an immutable {@link RichTextRegistry} from a list of definitions. */
2
+ export function createRichTextRegistry(definitions = []) {
3
+ const byType = new Map();
4
+ for (const def of definitions) {
5
+ // Last registration wins, matching how a builder would override a block.
6
+ byType.set(def.type, def);
7
+ }
8
+ return {
9
+ has: (type) => byType.has(type),
10
+ get: (type) => byType.get(type),
11
+ isInline: (type) => byType.get(type)?.group === 'inline',
12
+ };
13
+ }
14
+ /** An empty registry — convenient default for callers with no custom blocks. */
15
+ export const emptyRichTextRegistry = createRichTextRegistry();
16
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/rich-text/registry.tsx"],"names":[],"mappings":"AAkDA,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CACpC,cAA+C,EAAE;IAEjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAA;IACtD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO;QACL,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,QAAQ;KACzD,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAqB,sBAAsB,EAAE,CAAA"}