@bendyline/squisq 1.2.2 → 1.4.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 (427) hide show
  1. package/dist/{Doc-BfBhiCNr.d.ts → Doc-BeSeH2iX.d.ts} +141 -33
  2. package/dist/ImageEditDoc-BTIvw0oq.d.ts +84 -0
  3. package/dist/__tests__/colorUtils.test.d.ts +2 -0
  4. package/dist/__tests__/colorUtils.test.d.ts.map +1 -0
  5. package/dist/__tests__/colorUtils.test.js +94 -0
  6. package/dist/__tests__/colorUtils.test.js.map +1 -0
  7. package/dist/__tests__/getLayers.test.js +31 -7
  8. package/dist/__tests__/getLayers.test.js.map +1 -1
  9. package/dist/__tests__/iconResolve.test.d.ts +2 -0
  10. package/dist/__tests__/iconResolve.test.d.ts.map +1 -0
  11. package/dist/__tests__/iconResolve.test.js +99 -0
  12. package/dist/__tests__/iconResolve.test.js.map +1 -0
  13. package/dist/__tests__/imageEditState.test.d.ts +2 -0
  14. package/dist/__tests__/imageEditState.test.d.ts.map +1 -0
  15. package/dist/__tests__/imageEditState.test.js +61 -0
  16. package/dist/__tests__/imageEditState.test.js.map +1 -0
  17. package/dist/__tests__/imageEditVersions.test.d.ts +2 -0
  18. package/dist/__tests__/imageEditVersions.test.d.ts.map +1 -0
  19. package/dist/__tests__/imageEditVersions.test.js +141 -0
  20. package/dist/__tests__/imageEditVersions.test.js.map +1 -0
  21. package/dist/__tests__/inferDocumentTitle.test.d.ts +2 -0
  22. package/dist/__tests__/inferDocumentTitle.test.d.ts.map +1 -0
  23. package/dist/__tests__/inferDocumentTitle.test.js +42 -0
  24. package/dist/__tests__/inferDocumentTitle.test.js.map +1 -0
  25. package/dist/__tests__/jsonForm.chooseControl.test.d.ts +2 -0
  26. package/dist/__tests__/jsonForm.chooseControl.test.d.ts.map +1 -0
  27. package/dist/__tests__/jsonForm.chooseControl.test.js +74 -0
  28. package/dist/__tests__/jsonForm.chooseControl.test.js.map +1 -0
  29. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts +2 -0
  30. package/dist/__tests__/jsonForm.evaluateWhen.test.d.ts.map +1 -0
  31. package/dist/__tests__/jsonForm.evaluateWhen.test.js +51 -0
  32. package/dist/__tests__/jsonForm.evaluateWhen.test.js.map +1 -0
  33. package/dist/__tests__/jsonForm.inferSchema.test.d.ts +2 -0
  34. package/dist/__tests__/jsonForm.inferSchema.test.d.ts.map +1 -0
  35. package/dist/__tests__/jsonForm.inferSchema.test.js +23 -0
  36. package/dist/__tests__/jsonForm.inferSchema.test.js.map +1 -0
  37. package/dist/__tests__/jsonForm.pointer.test.d.ts +2 -0
  38. package/dist/__tests__/jsonForm.pointer.test.d.ts.map +1 -0
  39. package/dist/__tests__/jsonForm.pointer.test.js +94 -0
  40. package/dist/__tests__/jsonForm.pointer.test.js.map +1 -0
  41. package/dist/__tests__/markdown.test.js +40 -0
  42. package/dist/__tests__/markdown.test.js.map +1 -1
  43. package/dist/__tests__/markdownIcons.test.d.ts +2 -0
  44. package/dist/__tests__/markdownIcons.test.d.ts.map +1 -0
  45. package/dist/__tests__/markdownIcons.test.js +93 -0
  46. package/dist/__tests__/markdownIcons.test.js.map +1 -0
  47. package/dist/__tests__/markdownToDoc.test.js +15 -4
  48. package/dist/__tests__/markdownToDoc.test.js.map +1 -1
  49. package/dist/__tests__/recommendTemplates.test.d.ts +2 -0
  50. package/dist/__tests__/recommendTemplates.test.d.ts.map +1 -0
  51. package/dist/__tests__/recommendTemplates.test.js +158 -0
  52. package/dist/__tests__/recommendTemplates.test.js.map +1 -0
  53. package/dist/__tests__/scopedContentContainer.test.d.ts +2 -0
  54. package/dist/__tests__/scopedContentContainer.test.d.ts.map +1 -0
  55. package/dist/__tests__/scopedContentContainer.test.js +74 -0
  56. package/dist/__tests__/scopedContentContainer.test.js.map +1 -0
  57. package/dist/__tests__/slideshowGenerator.test.js +1 -1
  58. package/dist/__tests__/slideshowGenerator.test.js.map +1 -1
  59. package/dist/__tests__/surface.test.d.ts +2 -0
  60. package/dist/__tests__/surface.test.d.ts.map +1 -0
  61. package/dist/__tests__/surface.test.js +57 -0
  62. package/dist/__tests__/surface.test.js.map +1 -0
  63. package/dist/__tests__/templateAnnotationParse.test.d.ts +2 -0
  64. package/dist/__tests__/templateAnnotationParse.test.d.ts.map +1 -0
  65. package/dist/__tests__/templateAnnotationParse.test.js +42 -0
  66. package/dist/__tests__/templateAnnotationParse.test.js.map +1 -0
  67. package/dist/__tests__/templates.test.js +90 -9
  68. package/dist/__tests__/templates.test.js.map +1 -1
  69. package/dist/__tests__/themeCompile.test.d.ts +2 -0
  70. package/dist/__tests__/themeCompile.test.d.ts.map +1 -0
  71. package/dist/__tests__/themeCompile.test.js +134 -0
  72. package/dist/__tests__/themeCompile.test.js.map +1 -0
  73. package/dist/__tests__/themeValidator.test.d.ts +2 -0
  74. package/dist/__tests__/themeValidator.test.d.ts.map +1 -0
  75. package/dist/__tests__/themeValidator.test.js +107 -0
  76. package/dist/__tests__/themeValidator.test.js.map +1 -0
  77. package/dist/__tests__/versions.test.d.ts +2 -0
  78. package/dist/__tests__/versions.test.d.ts.map +1 -0
  79. package/dist/__tests__/versions.test.js +339 -0
  80. package/dist/__tests__/versions.test.js.map +1 -0
  81. package/dist/{chunk-CYQHG27J.js → chunk-2TMAWB4Y.js} +74 -1
  82. package/dist/chunk-2TMAWB4Y.js.map +1 -0
  83. package/dist/{chunk-LAZELBON.js → chunk-3K5OG6KI.js} +165 -17
  84. package/dist/chunk-3K5OG6KI.js.map +1 -0
  85. package/dist/chunk-57CVQCFX.js +193 -0
  86. package/dist/chunk-57CVQCFX.js.map +1 -0
  87. package/dist/{chunk-QM5PKNPW.js → chunk-5WFRKURX.js} +1 -1
  88. package/dist/chunk-5WFRKURX.js.map +1 -0
  89. package/dist/chunk-B4EEON3N.js +1317 -0
  90. package/dist/chunk-B4EEON3N.js.map +1 -0
  91. package/dist/chunk-DBS6RIFL.js +81 -0
  92. package/dist/chunk-DBS6RIFL.js.map +1 -0
  93. package/dist/{chunk-MIBRIRGJ.js → chunk-FR2RBTKO.js} +3 -3
  94. package/dist/{chunk-MIBRIRGJ.js.map → chunk-FR2RBTKO.js.map} +1 -1
  95. package/dist/chunk-H3AXU4MJ.js +179 -0
  96. package/dist/chunk-H3AXU4MJ.js.map +1 -0
  97. package/dist/chunk-JELIRVDP.js +24 -0
  98. package/dist/chunk-JELIRVDP.js.map +1 -0
  99. package/dist/chunk-K32VJONL.js +193 -0
  100. package/dist/chunk-K32VJONL.js.map +1 -0
  101. package/dist/{chunk-GAQLMORN.js → chunk-KSWJR66U.js} +248 -44
  102. package/dist/chunk-KSWJR66U.js.map +1 -0
  103. package/dist/{chunk-TSG2OSE6.js → chunk-MYIH7FWD.js} +3 -3
  104. package/dist/chunk-MYIH7FWD.js.map +1 -0
  105. package/dist/chunk-VLJJHDAC.js +218 -0
  106. package/dist/chunk-VLJJHDAC.js.map +1 -0
  107. package/dist/chunk-WMOI7FN3.js +182 -0
  108. package/dist/chunk-WMOI7FN3.js.map +1 -0
  109. package/dist/chunk-ZTX4PFFT.js +520 -0
  110. package/dist/chunk-ZTX4PFFT.js.map +1 -0
  111. package/dist/doc/audioMapping.d.ts.map +1 -1
  112. package/dist/doc/audioMapping.js +80 -9
  113. package/dist/doc/audioMapping.js.map +1 -1
  114. package/dist/doc/getLayers.d.ts.map +1 -1
  115. package/dist/doc/getLayers.js +29 -18
  116. package/dist/doc/getLayers.js.map +1 -1
  117. package/dist/doc/markdownToDoc.d.ts.map +1 -1
  118. package/dist/doc/markdownToDoc.js +40 -6
  119. package/dist/doc/markdownToDoc.js.map +1 -1
  120. package/dist/doc/templates/featureBlock.d.ts +18 -0
  121. package/dist/doc/templates/featureBlock.d.ts.map +1 -0
  122. package/dist/doc/templates/featureBlock.js +180 -0
  123. package/dist/doc/templates/featureBlock.js.map +1 -0
  124. package/dist/doc/templates/fullBleedQuote.d.ts +12 -0
  125. package/dist/doc/templates/fullBleedQuote.d.ts.map +1 -1
  126. package/dist/doc/templates/fullBleedQuote.js +12 -0
  127. package/dist/doc/templates/fullBleedQuote.js.map +1 -1
  128. package/dist/doc/templates/index.d.ts +28 -4
  129. package/dist/doc/templates/index.d.ts.map +1 -1
  130. package/dist/doc/templates/index.js +45 -12
  131. package/dist/doc/templates/index.js.map +1 -1
  132. package/dist/doc/templates/listBlock.d.ts.map +1 -1
  133. package/dist/doc/templates/listBlock.js +22 -5
  134. package/dist/doc/templates/listBlock.js.map +1 -1
  135. package/dist/doc/templates/statHighlight.d.ts +12 -0
  136. package/dist/doc/templates/statHighlight.d.ts.map +1 -1
  137. package/dist/doc/templates/statHighlight.js +12 -0
  138. package/dist/doc/templates/statHighlight.js.map +1 -1
  139. package/dist/doc/templates/titleBlock.d.ts +11 -0
  140. package/dist/doc/templates/titleBlock.d.ts.map +1 -1
  141. package/dist/doc/templates/titleBlock.js +8 -0
  142. package/dist/doc/templates/titleBlock.js.map +1 -1
  143. package/dist/doc/utils/themeUtils.d.ts +4 -4
  144. package/dist/doc/utils/themeUtils.d.ts.map +1 -1
  145. package/dist/doc/utils/themeUtils.js +8 -7
  146. package/dist/doc/utils/themeUtils.js.map +1 -1
  147. package/dist/generate/slideshowGenerator.js +1 -1
  148. package/dist/generate/slideshowGenerator.js.map +1 -1
  149. package/dist/generate/templateMapper.js +2 -2
  150. package/dist/generate/templateMapper.js.map +1 -1
  151. package/dist/icons/iconData.d.ts +26 -0
  152. package/dist/icons/iconData.d.ts.map +1 -0
  153. package/dist/icons/iconData.js +12 -0
  154. package/dist/icons/iconData.js.map +1 -0
  155. package/dist/icons/index.d.ts +12 -0
  156. package/dist/icons/index.d.ts.map +1 -0
  157. package/dist/icons/index.js +10 -0
  158. package/dist/icons/index.js.map +1 -0
  159. package/dist/icons/resolve.d.ts +61 -0
  160. package/dist/icons/resolve.d.ts.map +1 -0
  161. package/dist/icons/resolve.js +130 -0
  162. package/dist/icons/resolve.js.map +1 -0
  163. package/dist/imageEdit/ImageEditVersionManager.d.ts +31 -0
  164. package/dist/imageEdit/ImageEditVersionManager.d.ts.map +1 -0
  165. package/dist/imageEdit/ImageEditVersionManager.js +39 -0
  166. package/dist/imageEdit/ImageEditVersionManager.js.map +1 -0
  167. package/dist/imageEdit/export.d.ts +33 -0
  168. package/dist/imageEdit/export.d.ts.map +1 -0
  169. package/dist/imageEdit/export.js +253 -0
  170. package/dist/imageEdit/export.js.map +1 -0
  171. package/dist/imageEdit/index.d.ts +14 -0
  172. package/dist/imageEdit/index.d.ts.map +1 -0
  173. package/dist/imageEdit/index.js +22 -0
  174. package/dist/imageEdit/index.js.map +1 -0
  175. package/dist/imageEdit/persistence.d.ts +15 -0
  176. package/dist/imageEdit/persistence.d.ts.map +1 -0
  177. package/dist/imageEdit/persistence.js +49 -0
  178. package/dist/imageEdit/persistence.js.map +1 -0
  179. package/dist/imageEdit/state.d.ts +42 -0
  180. package/dist/imageEdit/state.d.ts.map +1 -0
  181. package/dist/imageEdit/state.js +98 -0
  182. package/dist/imageEdit/state.js.map +1 -0
  183. package/dist/imageEdit/versionPaths.d.ts +27 -0
  184. package/dist/imageEdit/versionPaths.d.ts.map +1 -0
  185. package/dist/imageEdit/versionPaths.js +57 -0
  186. package/dist/imageEdit/versionPaths.js.map +1 -0
  187. package/dist/imageEdit/versions.d.ts +67 -0
  188. package/dist/imageEdit/versions.d.ts.map +1 -0
  189. package/dist/imageEdit/versions.js +161 -0
  190. package/dist/imageEdit/versions.js.map +1 -0
  191. package/dist/index.d.ts +4 -0
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +4 -0
  194. package/dist/index.js.map +1 -1
  195. package/dist/jsonForm/chooseControl.d.ts +20 -0
  196. package/dist/jsonForm/chooseControl.d.ts.map +1 -0
  197. package/dist/jsonForm/chooseControl.js +82 -0
  198. package/dist/jsonForm/chooseControl.js.map +1 -0
  199. package/dist/jsonForm/evaluateWhen.d.ts +12 -0
  200. package/dist/jsonForm/evaluateWhen.d.ts.map +1 -0
  201. package/dist/jsonForm/evaluateWhen.js +65 -0
  202. package/dist/jsonForm/evaluateWhen.js.map +1 -0
  203. package/dist/jsonForm/index.d.ts +14 -0
  204. package/dist/jsonForm/index.d.ts.map +1 -0
  205. package/dist/jsonForm/index.js +12 -0
  206. package/dist/jsonForm/index.js.map +1 -0
  207. package/dist/jsonForm/inferSchema.d.ts +12 -0
  208. package/dist/jsonForm/inferSchema.d.ts.map +1 -0
  209. package/dist/jsonForm/inferSchema.js +15 -0
  210. package/dist/jsonForm/inferSchema.js.map +1 -0
  211. package/dist/jsonForm/pointer.d.ts +26 -0
  212. package/dist/jsonForm/pointer.d.ts.map +1 -0
  213. package/dist/jsonForm/pointer.js +102 -0
  214. package/dist/jsonForm/pointer.js.map +1 -0
  215. package/dist/jsonForm/types.d.ts +120 -0
  216. package/dist/jsonForm/types.d.ts.map +1 -0
  217. package/dist/jsonForm/types.js +10 -0
  218. package/dist/jsonForm/types.js.map +1 -0
  219. package/dist/markdown/convert.d.ts +11 -1
  220. package/dist/markdown/convert.d.ts.map +1 -1
  221. package/dist/markdown/convert.js +235 -15
  222. package/dist/markdown/convert.js.map +1 -1
  223. package/dist/markdown/index.d.ts +2 -2
  224. package/dist/markdown/index.d.ts.map +1 -1
  225. package/dist/markdown/index.js +1 -1
  226. package/dist/markdown/index.js.map +1 -1
  227. package/dist/markdown/types.d.ts +34 -1
  228. package/dist/markdown/types.d.ts.map +1 -1
  229. package/dist/markdown/utils.d.ts +40 -0
  230. package/dist/markdown/utils.d.ts.map +1 -1
  231. package/dist/markdown/utils.js +155 -0
  232. package/dist/markdown/utils.js.map +1 -1
  233. package/dist/recommend/index.d.ts +16 -0
  234. package/dist/recommend/index.d.ts.map +1 -0
  235. package/dist/recommend/index.js +15 -0
  236. package/dist/recommend/index.js.map +1 -0
  237. package/dist/recommend/templates.d.ts +39 -0
  238. package/dist/recommend/templates.d.ts.map +1 -0
  239. package/dist/recommend/templates.js +235 -0
  240. package/dist/recommend/templates.js.map +1 -0
  241. package/dist/schemas/BlockTemplates.d.ts +46 -8
  242. package/dist/schemas/BlockTemplates.d.ts.map +1 -1
  243. package/dist/schemas/BlockTemplates.js +3 -3
  244. package/dist/schemas/BlockTemplates.js.map +1 -1
  245. package/dist/schemas/ImageEditDoc.d.ts +81 -0
  246. package/dist/schemas/ImageEditDoc.d.ts.map +1 -0
  247. package/dist/schemas/ImageEditDoc.js +20 -0
  248. package/dist/schemas/ImageEditDoc.js.map +1 -0
  249. package/dist/schemas/Theme.d.ts +93 -23
  250. package/dist/schemas/Theme.d.ts.map +1 -1
  251. package/dist/schemas/Theme.js +80 -13
  252. package/dist/schemas/Theme.js.map +1 -1
  253. package/dist/schemas/colorUtils.d.ts +51 -0
  254. package/dist/schemas/colorUtils.d.ts.map +1 -0
  255. package/dist/schemas/colorUtils.js +154 -0
  256. package/dist/schemas/colorUtils.js.map +1 -0
  257. package/dist/schemas/fontStacks.d.ts +57 -0
  258. package/dist/schemas/fontStacks.d.ts.map +1 -0
  259. package/dist/schemas/fontStacks.js +227 -0
  260. package/dist/schemas/fontStacks.js.map +1 -0
  261. package/dist/schemas/index.d.ts +5 -0
  262. package/dist/schemas/index.d.ts.map +1 -1
  263. package/dist/schemas/index.js +4 -0
  264. package/dist/schemas/index.js.map +1 -1
  265. package/dist/schemas/themeCompile.d.ts +45 -0
  266. package/dist/schemas/themeCompile.d.ts.map +1 -0
  267. package/dist/schemas/themeCompile.js +160 -0
  268. package/dist/schemas/themeCompile.js.map +1 -0
  269. package/dist/schemas/themeLibrary.d.ts +11 -15
  270. package/dist/schemas/themeLibrary.d.ts.map +1 -1
  271. package/dist/schemas/themeLibrary.js +18 -499
  272. package/dist/schemas/themeLibrary.js.map +1 -1
  273. package/dist/schemas/themeValidator.d.ts +26 -0
  274. package/dist/schemas/themeValidator.d.ts.map +1 -0
  275. package/dist/schemas/themeValidator.js +352 -0
  276. package/dist/schemas/themeValidator.js.map +1 -0
  277. package/dist/schemas/themes/bold.json +48 -0
  278. package/dist/schemas/themes/cinematic.json +54 -0
  279. package/dist/schemas/themes/documentary.json +49 -0
  280. package/dist/schemas/themes/gezellig.json +44 -0
  281. package/dist/schemas/themes/index.d.ts +26 -0
  282. package/dist/schemas/themes/index.d.ts.map +1 -0
  283. package/dist/schemas/themes/index.js +49 -0
  284. package/dist/schemas/themes/index.js.map +1 -0
  285. package/dist/schemas/themes/magazine.json +44 -0
  286. package/dist/schemas/themes/minimalist.json +45 -0
  287. package/dist/schemas/themes/morning-light.json +42 -0
  288. package/dist/schemas/themes/standard-dark.json +50 -0
  289. package/dist/schemas/themes/standard.json +42 -0
  290. package/dist/schemas/themes/tech-dark.json +48 -0
  291. package/dist/schemas/themes/warm-earth.json +50 -0
  292. package/dist/storage/ScopedContentContainer.d.ts +44 -0
  293. package/dist/storage/ScopedContentContainer.d.ts.map +1 -0
  294. package/dist/storage/ScopedContentContainer.js +94 -0
  295. package/dist/storage/ScopedContentContainer.js.map +1 -0
  296. package/dist/storage/index.d.ts +1 -0
  297. package/dist/storage/index.d.ts.map +1 -1
  298. package/dist/storage/index.js +1 -0
  299. package/dist/storage/index.js.map +1 -1
  300. package/dist/story/index.d.ts +53 -13
  301. package/dist/story/index.js +12 -4
  302. package/dist/themeLibrary-BHjJ0Qx6.d.ts +40 -0
  303. package/dist/{types-DYAzisMG.d.ts → types-BdZkdJ3z.d.ts} +35 -2
  304. package/dist/types-D98li1gV.d.ts +93 -0
  305. package/dist/versions/DocumentVersionManager.d.ts +31 -0
  306. package/dist/versions/DocumentVersionManager.d.ts.map +1 -0
  307. package/dist/versions/DocumentVersionManager.js +33 -0
  308. package/dist/versions/DocumentVersionManager.js.map +1 -0
  309. package/dist/versions/index.d.ts +29 -0
  310. package/dist/versions/index.d.ts.map +1 -0
  311. package/dist/versions/index.js +28 -0
  312. package/dist/versions/index.js.map +1 -0
  313. package/dist/versions/operations.d.ts +44 -0
  314. package/dist/versions/operations.d.ts.map +1 -0
  315. package/dist/versions/operations.js +190 -0
  316. package/dist/versions/operations.js.map +1 -0
  317. package/dist/versions/paths.d.ts +29 -0
  318. package/dist/versions/paths.d.ts.map +1 -0
  319. package/dist/versions/paths.js +66 -0
  320. package/dist/versions/paths.js.map +1 -0
  321. package/dist/versions/timestamp.d.ts +22 -0
  322. package/dist/versions/timestamp.d.ts.map +1 -0
  323. package/dist/versions/timestamp.js +44 -0
  324. package/dist/versions/timestamp.js.map +1 -0
  325. package/dist/versions/types.d.ts +92 -0
  326. package/dist/versions/types.d.ts.map +1 -0
  327. package/dist/versions/types.js +11 -0
  328. package/dist/versions/types.js.map +1 -0
  329. package/package.json +28 -1
  330. package/src/__tests__/colorUtils.test.ts +112 -0
  331. package/src/__tests__/getLayers.test.ts +32 -7
  332. package/src/__tests__/iconResolve.test.ts +122 -0
  333. package/src/__tests__/imageEditState.test.ts +74 -0
  334. package/src/__tests__/imageEditVersions.test.ts +169 -0
  335. package/src/__tests__/inferDocumentTitle.test.ts +50 -0
  336. package/src/__tests__/jsonForm.chooseControl.test.ts +86 -0
  337. package/src/__tests__/jsonForm.evaluateWhen.test.ts +59 -0
  338. package/src/__tests__/jsonForm.inferSchema.test.ts +25 -0
  339. package/src/__tests__/jsonForm.pointer.test.ts +103 -0
  340. package/src/__tests__/markdown.test.ts +44 -0
  341. package/src/__tests__/markdownIcons.test.ts +104 -0
  342. package/src/__tests__/markdownToDoc.test.ts +19 -4
  343. package/src/__tests__/recommendTemplates.test.ts +183 -0
  344. package/src/__tests__/scopedContentContainer.test.ts +89 -0
  345. package/src/__tests__/slideshowGenerator.test.ts +1 -1
  346. package/src/__tests__/surface.test.ts +68 -0
  347. package/src/__tests__/templateAnnotationParse.test.ts +42 -0
  348. package/src/__tests__/templates.test.ts +93 -9
  349. package/src/__tests__/themeCompile.test.ts +156 -0
  350. package/src/__tests__/themeValidator.test.ts +125 -0
  351. package/src/__tests__/versions.test.ts +415 -0
  352. package/src/doc/audioMapping.ts +95 -13
  353. package/src/doc/getLayers.ts +32 -21
  354. package/src/doc/markdownToDoc.ts +45 -7
  355. package/src/doc/templates/featureBlock.ts +202 -0
  356. package/src/doc/templates/fullBleedQuote.ts +13 -0
  357. package/src/doc/templates/index.ts +50 -16
  358. package/src/doc/templates/listBlock.ts +24 -5
  359. package/src/doc/templates/statHighlight.ts +13 -0
  360. package/src/doc/templates/titleBlock.ts +9 -0
  361. package/src/doc/utils/themeUtils.ts +8 -7
  362. package/src/generate/slideshowGenerator.ts +1 -1
  363. package/src/generate/templateMapper.ts +2 -2
  364. package/src/icons/iconData.ts +31 -0
  365. package/src/icons/index.ts +18 -0
  366. package/src/icons/resolve.ts +139 -0
  367. package/src/imageEdit/ImageEditVersionManager.ts +73 -0
  368. package/src/imageEdit/export.ts +326 -0
  369. package/src/imageEdit/index.ts +71 -0
  370. package/src/imageEdit/persistence.ts +62 -0
  371. package/src/imageEdit/state.ts +112 -0
  372. package/src/imageEdit/versionPaths.ts +57 -0
  373. package/src/imageEdit/versions.ts +231 -0
  374. package/src/index.ts +4 -0
  375. package/src/jsonForm/chooseControl.ts +88 -0
  376. package/src/jsonForm/evaluateWhen.ts +59 -0
  377. package/src/jsonForm/index.ts +22 -0
  378. package/src/jsonForm/inferSchema.ts +25 -0
  379. package/src/jsonForm/pointer.ts +109 -0
  380. package/src/jsonForm/types.ts +167 -0
  381. package/src/markdown/convert.ts +248 -15
  382. package/src/markdown/index.ts +4 -0
  383. package/src/markdown/types.ts +38 -1
  384. package/src/markdown/utils.ts +159 -0
  385. package/src/recommend/index.ts +16 -0
  386. package/src/recommend/templates.ts +273 -0
  387. package/src/schemas/BlockTemplates.ts +50 -7
  388. package/src/schemas/ImageEditDoc.ts +95 -0
  389. package/src/schemas/Theme.ts +152 -23
  390. package/src/schemas/colorUtils.ts +186 -0
  391. package/src/schemas/fontStacks.ts +257 -0
  392. package/src/schemas/index.ts +12 -0
  393. package/src/schemas/themeCompile.ts +203 -0
  394. package/src/schemas/themeLibrary.ts +18 -524
  395. package/src/schemas/themeValidator.ts +388 -0
  396. package/src/schemas/themes/bold.json +48 -0
  397. package/src/schemas/themes/cinematic.json +54 -0
  398. package/src/schemas/themes/documentary.json +49 -0
  399. package/src/schemas/themes/gezellig.json +44 -0
  400. package/src/schemas/themes/index.ts +53 -0
  401. package/src/schemas/themes/magazine.json +44 -0
  402. package/src/schemas/themes/minimalist.json +45 -0
  403. package/src/schemas/themes/morning-light.json +42 -0
  404. package/src/schemas/themes/standard-dark.json +50 -0
  405. package/src/schemas/themes/standard.json +42 -0
  406. package/src/schemas/themes/tech-dark.json +48 -0
  407. package/src/schemas/themes/warm-earth.json +50 -0
  408. package/src/storage/ScopedContentContainer.ts +113 -0
  409. package/src/storage/index.ts +1 -0
  410. package/src/versions/DocumentVersionManager.ts +70 -0
  411. package/src/versions/index.ts +54 -0
  412. package/src/versions/operations.ts +230 -0
  413. package/src/versions/paths.ts +66 -0
  414. package/src/versions/timestamp.ts +48 -0
  415. package/src/versions/types.ts +91 -0
  416. package/dist/chunk-53TZ2UTL.js +0 -470
  417. package/dist/chunk-53TZ2UTL.js.map +0 -1
  418. package/dist/chunk-7GF6RDED.js +0 -82
  419. package/dist/chunk-7GF6RDED.js.map +0 -1
  420. package/dist/chunk-CYQHG27J.js.map +0 -1
  421. package/dist/chunk-GAQLMORN.js.map +0 -1
  422. package/dist/chunk-LAZELBON.js.map +0 -1
  423. package/dist/chunk-QM5PKNPW.js.map +0 -1
  424. package/dist/chunk-TSG2OSE6.js.map +0 -1
  425. package/dist/chunk-XM4WSOHB.js +0 -92
  426. package/dist/chunk-XM4WSOHB.js.map +0 -1
  427. package/dist/themeLibrary-IP7EdyRq.d.ts +0 -44
@@ -0,0 +1,45 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "minimalist",
4
+ "name": "Minimalist",
5
+ "description": "Clean near-white background with sans-serif type and minimal animation.",
6
+ "colors": {
7
+ "primary": "#2d3748",
8
+ "secondary": "#4a5568",
9
+ "background": "#f7fafc",
10
+ "backgroundLight": "#edf2f7",
11
+ "text": "#1a202c",
12
+ "textMuted": "#718096",
13
+ "highlight": "#3182ce",
14
+ "warning": "#e53e3e"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "inter" },
18
+ "titleFont": { "stackId": "inter" },
19
+ "titleWeight": "bold",
20
+ "lineHeight": 1.6
21
+ },
22
+ "style": {
23
+ "textShadow": false,
24
+ "overlayOpacity": 0.3,
25
+ "animationSpeed": 1.2,
26
+ "borderRadius": 8
27
+ },
28
+ "renderStyle": {
29
+ "name": "minimalist",
30
+ "defaultTextAnimation": "fadeIn",
31
+ "ambientMotion": false,
32
+ "defaultTransition": { "type": "fade", "duration": 0.6 },
33
+ "templateHints": {
34
+ "title": { "showAccentLine": false }
35
+ }
36
+ },
37
+ "colorSchemes": {
38
+ "blue": { "bg": "#ebf8ff", "text": "#2b6cb0", "accent": "#3182ce" },
39
+ "green": { "bg": "#f0fff4", "text": "#276749", "accent": "#38a169" },
40
+ "purple": { "bg": "#faf5ff", "text": "#553c9a", "accent": "#805ad5" },
41
+ "red": { "bg": "#fff5f5", "text": "#c53030", "accent": "#e53e3e" },
42
+ "orange": { "bg": "#fffaf0", "text": "#c05621", "accent": "#dd6b20" },
43
+ "teal": { "bg": "#e6fffa", "text": "#285e61", "accent": "#319795" }
44
+ }
45
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "morning-light",
4
+ "name": "Morning Light",
5
+ "description": "Warm light background with dark text and gentle serif typography.",
6
+ "colors": {
7
+ "primary": "#744210",
8
+ "secondary": "#975a16",
9
+ "background": "#faf8f5",
10
+ "backgroundLight": "#f5f0eb",
11
+ "text": "#2d3748",
12
+ "textMuted": "#718096",
13
+ "highlight": "#dd6b20",
14
+ "warning": "#c53030"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "lora" },
18
+ "titleFont": { "stackId": "merriweather" },
19
+ "titleWeight": "bold",
20
+ "lineHeight": 1.7
21
+ },
22
+ "style": {
23
+ "textShadow": false,
24
+ "overlayOpacity": 0.35,
25
+ "animationSpeed": 1.1,
26
+ "borderRadius": 4
27
+ },
28
+ "renderStyle": {
29
+ "name": "morning-light",
30
+ "defaultTextAnimation": "fadeIn",
31
+ "ambientMotion": false,
32
+ "defaultTransition": { "type": "fade", "duration": 1.0 }
33
+ },
34
+ "colorSchemes": {
35
+ "blue": { "bg": "#ebf8ff", "text": "#2c5282", "accent": "#4299e1" },
36
+ "green": { "bg": "#f0fff4", "text": "#22543d", "accent": "#48bb78" },
37
+ "purple": { "bg": "#faf5ff", "text": "#44337a", "accent": "#9f7aea" },
38
+ "red": { "bg": "#fff5f5", "text": "#9b2c2c", "accent": "#fc8181" },
39
+ "orange": { "bg": "#fffaf0", "text": "#744210", "accent": "#ed8936" },
40
+ "teal": { "bg": "#e6fffa", "text": "#234e52", "accent": "#38b2ac" }
41
+ }
42
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "standard-dark",
4
+ "name": "Standard Dark",
5
+ "description": "Standard, dark variant. System fonts, dark navy background, light text.",
6
+ "colors": {
7
+ "primary": "#3182ce",
8
+ "secondary": "#4a5568",
9
+ "background": "#1a202c",
10
+ "backgroundLight": "#2d3748",
11
+ "text": "#f7fafc",
12
+ "textMuted": "#a0aec0",
13
+ "highlight": "#4299e1",
14
+ "warning": "#fc8181"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "system-sans" },
18
+ "titleFont": { "stackId": "system-serif" },
19
+ "monoFont": { "stackId": "system-mono" },
20
+ "titleWeight": "bold"
21
+ },
22
+ "style": {
23
+ "textShadow": true,
24
+ "overlayOpacity": 0.45,
25
+ "animationSpeed": 1.0
26
+ },
27
+ "renderStyle": {
28
+ "name": "standard",
29
+ "defaultTextAnimation": "fadeIn",
30
+ "defaultImageAnimation": "slowZoom",
31
+ "ambientMotion": true,
32
+ "defaultTransition": { "type": "fade", "duration": 0.7 }
33
+ },
34
+ "colorSchemes": {
35
+ "blue": { "bg": "#1a365d", "text": "#63b3ed", "accent": "#90cdf4" },
36
+ "green": { "bg": "#22543d", "text": "#9ae6b4", "accent": "#68d391" },
37
+ "purple": { "bg": "#44337a", "text": "#d6bcfa", "accent": "#b794f4" },
38
+ "red": { "bg": "#742a2a", "text": "#fc8181", "accent": "#feb2b2" },
39
+ "orange": { "bg": "#744210", "text": "#fbd38d", "accent": "#f6ad55" },
40
+ "teal": { "bg": "#234e52", "text": "#81e6d9", "accent": "#4fd1c5" }
41
+ },
42
+ "persistentLayers": {
43
+ "bottomLayers": [
44
+ {
45
+ "template": "gradientBackground",
46
+ "config": { "type": "gradientBackground", "preset": "dark-vignette" }
47
+ }
48
+ ]
49
+ }
50
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "standard",
4
+ "name": "Standard Light",
5
+ "description": "Clean and safe — black-on-white, system fonts only, no external font dependencies. Default theme.",
6
+ "colors": {
7
+ "primary": "#2563eb",
8
+ "secondary": "#475569",
9
+ "background": "#ffffff",
10
+ "backgroundLight": "#f1f5f9",
11
+ "text": "#0f172a",
12
+ "textMuted": "#475569",
13
+ "highlight": "#1d4ed8",
14
+ "warning": "#dc2626"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "system-sans" },
18
+ "titleFont": { "stackId": "system-serif" },
19
+ "monoFont": { "stackId": "system-mono" },
20
+ "titleWeight": "bold"
21
+ },
22
+ "style": {
23
+ "textShadow": false,
24
+ "overlayOpacity": 0.35,
25
+ "animationSpeed": 1.0
26
+ },
27
+ "renderStyle": {
28
+ "name": "standard",
29
+ "defaultTextAnimation": "fadeIn",
30
+ "defaultImageAnimation": "slowZoom",
31
+ "ambientMotion": true,
32
+ "defaultTransition": { "type": "fade", "duration": 0.7 }
33
+ },
34
+ "colorSchemes": {
35
+ "blue": { "bg": "#dbeafe", "text": "#1d4ed8", "accent": "#2563eb" },
36
+ "green": { "bg": "#dcfce7", "text": "#166534", "accent": "#16a34a" },
37
+ "purple": { "bg": "#ede9fe", "text": "#5b21b6", "accent": "#7c3aed" },
38
+ "red": { "bg": "#fee2e2", "text": "#991b1b", "accent": "#dc2626" },
39
+ "orange": { "bg": "#ffedd5", "text": "#9a3412", "accent": "#ea580c" },
40
+ "teal": { "bg": "#ccfbf1", "text": "#115e59", "accent": "#0d9488" }
41
+ }
42
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "tech-dark",
4
+ "name": "Tech Dark",
5
+ "description": "True black with neon cyan/green accents and monospace titles.",
6
+ "colors": {
7
+ "primary": "#00e5ff",
8
+ "secondary": "#00e676",
9
+ "background": "#0a0a0a",
10
+ "backgroundLight": "#1a1a2e",
11
+ "text": "#e0e0e0",
12
+ "textMuted": "#9e9e9e",
13
+ "highlight": "#00e5ff",
14
+ "warning": "#ff5252"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "ibm-plex-sans" },
18
+ "titleFont": { "stackId": "jetbrains-mono" },
19
+ "monoFont": { "stackId": "jetbrains-mono" },
20
+ "titleWeight": "bold",
21
+ "titleScale": 0.9,
22
+ "lineHeight": 1.5
23
+ },
24
+ "style": {
25
+ "textShadow": true,
26
+ "overlayOpacity": 0.55,
27
+ "animationSpeed": 0.9,
28
+ "borderRadius": 2
29
+ },
30
+ "renderStyle": {
31
+ "name": "tech-dark",
32
+ "defaultTextAnimation": "typewriter",
33
+ "defaultImageAnimation": "slowZoom",
34
+ "ambientMotion": true,
35
+ "defaultTransition": { "type": "dissolve", "duration": 0.4 },
36
+ "templateHints": {
37
+ "statHighlight": { "entrance": "dramatic" }
38
+ }
39
+ },
40
+ "colorSchemes": {
41
+ "blue": { "bg": "#0d1b2a", "text": "#00b0ff", "accent": "#40c4ff" },
42
+ "green": { "bg": "#0d1b0d", "text": "#00e676", "accent": "#69f0ae" },
43
+ "purple": { "bg": "#1a0d2e", "text": "#d500f9", "accent": "#ea80fc" },
44
+ "red": { "bg": "#2e0d0d", "text": "#ff5252", "accent": "#ff8a80" },
45
+ "orange": { "bg": "#2e1a0d", "text": "#ff9100", "accent": "#ffab40" },
46
+ "teal": { "bg": "#0d2e2e", "text": "#1de9b6", "accent": "#64ffda" }
47
+ }
48
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "warm-earth",
4
+ "name": "Warm Earth",
5
+ "description": "Natural warm tones with earthy browns and terracotta accents.",
6
+ "colors": {
7
+ "primary": "#9c4221",
8
+ "secondary": "#c05621",
9
+ "background": "#1c1410",
10
+ "backgroundLight": "#2d241e",
11
+ "text": "#faf5f0",
12
+ "textMuted": "#c4a882",
13
+ "highlight": "#dd6b20",
14
+ "warning": "#e53e3e"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "pt-serif" },
18
+ "titleFont": { "stackId": "pt-serif" },
19
+ "titleWeight": "bold",
20
+ "lineHeight": 1.6
21
+ },
22
+ "style": {
23
+ "textShadow": true,
24
+ "overlayOpacity": 0.5,
25
+ "animationSpeed": 1.1
26
+ },
27
+ "renderStyle": {
28
+ "name": "warm-earth",
29
+ "defaultTextAnimation": "fadeIn",
30
+ "defaultImageAnimation": "panLeft",
31
+ "ambientMotion": true,
32
+ "defaultTransition": { "type": "fade", "duration": 0.9 }
33
+ },
34
+ "colorSchemes": {
35
+ "blue": { "bg": "#2a1f14", "text": "#90cdf4", "accent": "#63b3ed" },
36
+ "green": { "bg": "#1e2a14", "text": "#9ae6b4", "accent": "#68d391" },
37
+ "purple": { "bg": "#2a142a", "text": "#d6bcfa", "accent": "#b794f4" },
38
+ "red": { "bg": "#2a1414", "text": "#fc8181", "accent": "#feb2b2" },
39
+ "orange": { "bg": "#2a1e0a", "text": "#fbd38d", "accent": "#f6ad55" },
40
+ "teal": { "bg": "#142a28", "text": "#81e6d9", "accent": "#4fd1c5" }
41
+ },
42
+ "persistentLayers": {
43
+ "bottomLayers": [
44
+ {
45
+ "template": "gradientBackground",
46
+ "config": { "type": "gradientBackground", "preset": "earth-tones" }
47
+ }
48
+ ]
49
+ }
50
+ }
@@ -0,0 +1,113 @@
1
+ /**
2
+ * ScopedContentContainer
3
+ *
4
+ * Wraps a parent {@link ContentContainer} and prefixes every path with a
5
+ * fixed subfolder, presenting that subfolder as the root. Useful for
6
+ * sidecar folders (e.g. `<imagebasename>_files/`) where a component
7
+ * should be able to read/write/list files relative to its own root
8
+ * without knowing where it lives in the parent tree.
9
+ *
10
+ * Scopes nest: `scopeContainer(scopeContainer(parent, 'a'), 'b')` is
11
+ * equivalent to `scopeContainer(parent, 'a/b')`.
12
+ *
13
+ * `getDocumentPath()` always returns `null` for scoped sidecars — they
14
+ * are not document roots.
15
+ */
16
+
17
+ import type { ContentContainer, ContentEntry } from './ContentContainer.js';
18
+
19
+ /** Normalize a prefix: strip leading/trailing slashes, ensure no `..` segments. */
20
+ function normalizePrefix(prefix: string): string {
21
+ let p = prefix.trim();
22
+ while (p.startsWith('/')) p = p.slice(1);
23
+ while (p.endsWith('/')) p = p.slice(0, -1);
24
+ if (p.length === 0) {
25
+ throw new Error('ScopedContentContainer: prefix must not be empty');
26
+ }
27
+ if (p.split('/').some((seg) => seg === '..' || seg === '.')) {
28
+ throw new Error(
29
+ `ScopedContentContainer: prefix must not contain '.' or '..' segments: ${prefix}`,
30
+ );
31
+ }
32
+ return p;
33
+ }
34
+
35
+ /**
36
+ * A ContentContainer view rooted at a subfolder of a parent container.
37
+ * All paths passed to / returned from this container are relative to
38
+ * the subfolder; the parent never sees an unprefixed path.
39
+ */
40
+ export class ScopedContentContainer implements ContentContainer {
41
+ private readonly parent: ContentContainer;
42
+ /** Prefix without trailing slash. */
43
+ readonly prefix: string;
44
+ /** Prefix with trailing slash. */
45
+ private readonly prefixSlash: string;
46
+
47
+ constructor(parent: ContentContainer, prefix: string) {
48
+ this.parent = parent;
49
+ this.prefix = normalizePrefix(prefix);
50
+ this.prefixSlash = `${this.prefix}/`;
51
+ }
52
+
53
+ private toParent(path: string): string {
54
+ let p = path;
55
+ while (p.startsWith('/')) p = p.slice(1);
56
+ return this.prefixSlash + p;
57
+ }
58
+
59
+ /** Strip the prefix from a parent-space path. Returns null if the path is outside the scope. */
60
+ private fromParent(parentPath: string): string | null {
61
+ if (!parentPath.startsWith(this.prefixSlash)) return null;
62
+ return parentPath.slice(this.prefixSlash.length);
63
+ }
64
+
65
+ readFile(path: string): Promise<ArrayBuffer | null> {
66
+ return this.parent.readFile(this.toParent(path));
67
+ }
68
+
69
+ writeFile(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<void> {
70
+ return this.parent.writeFile(this.toParent(path), data, mimeType);
71
+ }
72
+
73
+ removeFile(path: string): Promise<void> {
74
+ return this.parent.removeFile(this.toParent(path));
75
+ }
76
+
77
+ async listFiles(prefix?: string): Promise<ContentEntry[]> {
78
+ const parentPrefix = prefix ? this.toParent(prefix) : this.prefixSlash;
79
+ const entries = await this.parent.listFiles(parentPrefix);
80
+ const out: ContentEntry[] = [];
81
+ for (const e of entries) {
82
+ const local = this.fromParent(e.path);
83
+ if (local === null) continue;
84
+ out.push({ path: local, mimeType: e.mimeType, size: e.size });
85
+ }
86
+ return out;
87
+ }
88
+
89
+ exists(path: string): Promise<boolean> {
90
+ return this.parent.exists(this.toParent(path));
91
+ }
92
+
93
+ /** Sidecars are not document roots. */
94
+ async getDocumentPath(): Promise<string | null> {
95
+ return null;
96
+ }
97
+
98
+ async readDocument(): Promise<string | null> {
99
+ return null;
100
+ }
101
+
102
+ async writeDocument(): Promise<void> {
103
+ throw new Error(
104
+ 'ScopedContentContainer is a sidecar view and does not support writeDocument(). ' +
105
+ 'Write to a specific path with writeFile() instead.',
106
+ );
107
+ }
108
+ }
109
+
110
+ /** Factory: convenience wrapper for `new ScopedContentContainer(parent, prefix)`. */
111
+ export function scopeContainer(parent: ContentContainer, prefix: string): ScopedContentContainer {
112
+ return new ScopedContentContainer(parent, prefix);
113
+ }
@@ -5,4 +5,5 @@ export { LocalForageAdapter } from './LocalForageAdapter.js';
5
5
  export type { LocalForageAdapterOptions } from './LocalForageAdapter.js';
6
6
  export type { ContentContainer, ContentEntry } from './ContentContainer.js';
7
7
  export { MemoryContentContainer, findDocumentPath } from './ContentContainer.js';
8
+ export { ScopedContentContainer, scopeContainer } from './ScopedContentContainer.js';
8
9
  export { createMediaProviderFromContainer } from './MediaProviderFromContainer.js';
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Convenience wrapper around the version operations that captures a
3
+ * {@link ContentContainer} reference and an optional basename override.
4
+ *
5
+ * Hosts that prefer a stable handle (e.g. to pass into a UI component)
6
+ * use this; everything it does is also reachable as a free function.
7
+ */
8
+
9
+ import type { ContentContainer } from '../storage/ContentContainer.js';
10
+ import {
11
+ coalesceVersions,
12
+ listVersions,
13
+ pruneVersions,
14
+ readVersion,
15
+ revertToVersion,
16
+ saveVersion,
17
+ } from './operations.js';
18
+ import type {
19
+ CoalesceOptions,
20
+ PrunePolicy,
21
+ RevertOptions,
22
+ SaveVersionOptions,
23
+ SaveVersionResult,
24
+ Version,
25
+ } from './types.js';
26
+
27
+ export interface DocumentVersionManagerOptions {
28
+ /**
29
+ * Override the document basename used in version filenames. Defaults to
30
+ * the basename of `container.getDocumentPath()` resolved at call time.
31
+ */
32
+ basename?: string;
33
+ }
34
+
35
+ export class DocumentVersionManager {
36
+ private readonly container: ContentContainer;
37
+ private readonly basename: string | undefined;
38
+
39
+ constructor(container: ContentContainer, options: DocumentVersionManagerOptions = {}) {
40
+ this.container = container;
41
+ this.basename = options.basename;
42
+ }
43
+
44
+ saveVersion(options: SaveVersionOptions = {}): Promise<SaveVersionResult> {
45
+ return saveVersion(this.container, { basename: this.basename, ...options });
46
+ }
47
+
48
+ listVersions(): Promise<Version[]> {
49
+ return listVersions(this.container, this.basename);
50
+ }
51
+
52
+ readVersion(version: Version | string): Promise<string | null> {
53
+ return readVersion(this.container, version);
54
+ }
55
+
56
+ revertToVersion(
57
+ version: Version | string,
58
+ options?: RevertOptions,
59
+ ): Promise<{ reverted: boolean; snapshotted: Version | null }> {
60
+ return revertToVersion(this.container, version, options);
61
+ }
62
+
63
+ pruneVersions(policy: PrunePolicy): Promise<Version[]> {
64
+ return pruneVersions(this.container, policy, this.basename);
65
+ }
66
+
67
+ coalesceVersions(options?: CoalesceOptions): Promise<Version[]> {
68
+ return coalesceVersions(this.container, options, this.basename);
69
+ }
70
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Document version history for Squisq.
3
+ *
4
+ * Snapshots of the primary markdown document live inside the same
5
+ * {@link ContentContainer} at `.versions/<basename>.<timestamp>.md`.
6
+ * Hosts call {@link DocumentVersionManager.saveVersion} (or the
7
+ * underlying {@link saveVersion}) when they want to stamp a new version;
8
+ * the editor's auto-save effect calls it on idle. Either way, snapshots
9
+ * are written only when the document differs from the latest one.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { DocumentVersionManager } from '@bendyline/squisq/versions';
14
+ *
15
+ * const versioning = new DocumentVersionManager(container);
16
+ * const result = await versioning.saveVersion();
17
+ * if (result.saved) console.log('Stamped', result.version);
18
+ *
19
+ * const history = await versioning.listVersions();
20
+ * await versioning.revertToVersion(history[0]);
21
+ * await versioning.pruneVersions({ type: 'keep-last-n', n: 50 });
22
+ * ```
23
+ */
24
+
25
+ export type {
26
+ Version,
27
+ SaveVersionOptions,
28
+ SaveVersionResult,
29
+ PrunePolicy,
30
+ RevertOptions,
31
+ CoalesceOptions,
32
+ } from './types.js';
33
+
34
+ export {
35
+ saveVersion,
36
+ listVersions,
37
+ readVersion,
38
+ revertToVersion,
39
+ pruneVersions,
40
+ coalesceVersions,
41
+ } from './operations.js';
42
+
43
+ export {
44
+ DocumentVersionManager,
45
+ type DocumentVersionManagerOptions,
46
+ } from './DocumentVersionManager.js';
47
+
48
+ export {
49
+ formatVersionTimestamp,
50
+ parseVersionTimestamp,
51
+ VERSION_TIMESTAMP_PATTERN,
52
+ } from './timestamp.js';
53
+
54
+ export { VERSIONS_PREFIX, getDocBasename, buildVersionPath, parseVersionPath } from './paths.js';