@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,44 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "magazine",
4
+ "name": "Magazine",
5
+ "description": "Rich editorial palette with mixed serif/sans typography and slide transitions.",
6
+ "colors": {
7
+ "primary": "#c53030",
8
+ "secondary": "#2b6cb0",
9
+ "background": "#1a202c",
10
+ "backgroundLight": "#2d3748",
11
+ "text": "#f7fafc",
12
+ "textMuted": "#cbd5e0",
13
+ "highlight": "#ed8936",
14
+ "warning": "#fc8181"
15
+ },
16
+ "typography": {
17
+ "bodyFont": { "stackId": "dm-sans" },
18
+ "titleFont": { "stackId": "dm-serif" },
19
+ "titleWeight": "bold",
20
+ "titleScale": 1.05,
21
+ "lineHeight": 1.5
22
+ },
23
+ "style": {
24
+ "textShadow": true,
25
+ "overlayOpacity": 0.45,
26
+ "animationSpeed": 1.0,
27
+ "borderRadius": 6
28
+ },
29
+ "renderStyle": {
30
+ "name": "magazine",
31
+ "defaultTextAnimation": "fadeIn",
32
+ "defaultImageAnimation": "slowZoom",
33
+ "ambientMotion": true,
34
+ "defaultTransition": { "type": "slideLeft", "duration": 0.7 }
35
+ },
36
+ "colorSchemes": {
37
+ "blue": { "bg": "#1a365d", "text": "#90cdf4", "accent": "#63b3ed" },
38
+ "green": { "bg": "#1c4532", "text": "#9ae6b4", "accent": "#68d391" },
39
+ "purple": { "bg": "#322659", "text": "#d6bcfa", "accent": "#b794f4" },
40
+ "red": { "bg": "#63171b", "text": "#feb2b2", "accent": "#fc8181" },
41
+ "orange": { "bg": "#652b19", "text": "#fbd38d", "accent": "#f6ad55" },
42
+ "teal": { "bg": "#1d4044", "text": "#81e6d9", "accent": "#4fd1c5" }
43
+ }
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,44 @@
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
+ import type { ContentContainer, ContentEntry } from './ContentContainer.js';
17
+ /**
18
+ * A ContentContainer view rooted at a subfolder of a parent container.
19
+ * All paths passed to / returned from this container are relative to
20
+ * the subfolder; the parent never sees an unprefixed path.
21
+ */
22
+ export declare class ScopedContentContainer implements ContentContainer {
23
+ private readonly parent;
24
+ /** Prefix without trailing slash. */
25
+ readonly prefix: string;
26
+ /** Prefix with trailing slash. */
27
+ private readonly prefixSlash;
28
+ constructor(parent: ContentContainer, prefix: string);
29
+ private toParent;
30
+ /** Strip the prefix from a parent-space path. Returns null if the path is outside the scope. */
31
+ private fromParent;
32
+ readFile(path: string): Promise<ArrayBuffer | null>;
33
+ writeFile(path: string, data: ArrayBuffer | Uint8Array, mimeType?: string): Promise<void>;
34
+ removeFile(path: string): Promise<void>;
35
+ listFiles(prefix?: string): Promise<ContentEntry[]>;
36
+ exists(path: string): Promise<boolean>;
37
+ /** Sidecars are not document roots. */
38
+ getDocumentPath(): Promise<string | null>;
39
+ readDocument(): Promise<string | null>;
40
+ writeDocument(): Promise<void>;
41
+ }
42
+ /** Factory: convenience wrapper for `new ScopedContentContainer(parent, prefix)`. */
43
+ export declare function scopeContainer(parent: ContentContainer, prefix: string): ScopedContentContainer;
44
+ //# sourceMappingURL=ScopedContentContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopedContentContainer.d.ts","sourceRoot":"","sources":["../../src/storage/ScopedContentContainer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkB5E;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAMpD,OAAO,CAAC,QAAQ;IAMhB,gGAAgG;IAChG,OAAO,CAAC,UAAU;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAInD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,uCAAuC;IACjC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzC,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAItC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAMrC;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAE/F"}
@@ -0,0 +1,94 @@
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
+ /** Normalize a prefix: strip leading/trailing slashes, ensure no `..` segments. */
17
+ function normalizePrefix(prefix) {
18
+ let p = prefix.trim();
19
+ while (p.startsWith('/'))
20
+ p = p.slice(1);
21
+ while (p.endsWith('/'))
22
+ p = p.slice(0, -1);
23
+ if (p.length === 0) {
24
+ throw new Error('ScopedContentContainer: prefix must not be empty');
25
+ }
26
+ if (p.split('/').some((seg) => seg === '..' || seg === '.')) {
27
+ throw new Error(`ScopedContentContainer: prefix must not contain '.' or '..' segments: ${prefix}`);
28
+ }
29
+ return p;
30
+ }
31
+ /**
32
+ * A ContentContainer view rooted at a subfolder of a parent container.
33
+ * All paths passed to / returned from this container are relative to
34
+ * the subfolder; the parent never sees an unprefixed path.
35
+ */
36
+ export class ScopedContentContainer {
37
+ constructor(parent, prefix) {
38
+ this.parent = parent;
39
+ this.prefix = normalizePrefix(prefix);
40
+ this.prefixSlash = `${this.prefix}/`;
41
+ }
42
+ toParent(path) {
43
+ let p = path;
44
+ while (p.startsWith('/'))
45
+ p = p.slice(1);
46
+ return this.prefixSlash + p;
47
+ }
48
+ /** Strip the prefix from a parent-space path. Returns null if the path is outside the scope. */
49
+ fromParent(parentPath) {
50
+ if (!parentPath.startsWith(this.prefixSlash))
51
+ return null;
52
+ return parentPath.slice(this.prefixSlash.length);
53
+ }
54
+ readFile(path) {
55
+ return this.parent.readFile(this.toParent(path));
56
+ }
57
+ writeFile(path, data, mimeType) {
58
+ return this.parent.writeFile(this.toParent(path), data, mimeType);
59
+ }
60
+ removeFile(path) {
61
+ return this.parent.removeFile(this.toParent(path));
62
+ }
63
+ async listFiles(prefix) {
64
+ const parentPrefix = prefix ? this.toParent(prefix) : this.prefixSlash;
65
+ const entries = await this.parent.listFiles(parentPrefix);
66
+ const out = [];
67
+ for (const e of entries) {
68
+ const local = this.fromParent(e.path);
69
+ if (local === null)
70
+ continue;
71
+ out.push({ path: local, mimeType: e.mimeType, size: e.size });
72
+ }
73
+ return out;
74
+ }
75
+ exists(path) {
76
+ return this.parent.exists(this.toParent(path));
77
+ }
78
+ /** Sidecars are not document roots. */
79
+ async getDocumentPath() {
80
+ return null;
81
+ }
82
+ async readDocument() {
83
+ return null;
84
+ }
85
+ async writeDocument() {
86
+ throw new Error('ScopedContentContainer is a sidecar view and does not support writeDocument(). ' +
87
+ 'Write to a specific path with writeFile() instead.');
88
+ }
89
+ }
90
+ /** Factory: convenience wrapper for `new ScopedContentContainer(parent, prefix)`. */
91
+ export function scopeContainer(parent, prefix) {
92
+ return new ScopedContentContainer(parent, prefix);
93
+ }
94
+ //# sourceMappingURL=ScopedContentContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopedContentContainer.js","sourceRoot":"","sources":["../../src/storage/ScopedContentContainer.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,6 @@ 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';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC"}
@@ -2,5 +2,6 @@ export { MemoryStorageAdapter } from './MemoryStorageAdapter.js';
2
2
  export { LocalStorageAdapter } from './LocalStorageAdapter.js';
3
3
  export { LocalForageAdapter } from './LocalForageAdapter.js';
4
4
  export { MemoryContentContainer, findDocumentPath } from './ContentContainer.js';
5
+ export { ScopedContentContainer, scopeContainer } from './ScopedContentContainer.js';
5
6
  export { createMediaProviderFromContainer } from './MediaProviderFromContainer.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1,8 +1,8 @@
1
- import { H as PersistentLayer, L as Layer, J as PersistentLayerConfig, ac as TitleBlockInput, a2 as TemplateContext, W as SectionHeaderInput, _ as StatHighlightInput, U as QuoteBlockInput, F as FactCardInput, ag as TwoColumnInput, o as DateEventInput, v as ImageWithCaptionInput, M as MapBlockInput, Z as StartBlockConfig, t as FullBleedQuoteInput, x as ListBlockInput, Q as PhotoGridInput, q as DefinitionCardInput, k as ComparisonBarInput, T as PullQuoteInput, ak as VideoWithCaptionInput, aj as VideoPullQuoteInput, n as DataTableInput, A as AccentImage, a as AccentPosition, a7 as Theme, al as ViewportConfig, s as DocBlock, B as Block, a1 as TemplateBlock, a4 as TemplateRegistry, b as Animation, c as AnimationType, af as TransitionType, a9 as ThemeColorScheme, r as Doc } from '../Doc-BfBhiCNr.js';
2
- export { w as LayoutHints, V as RenderStyle, a8 as ThemeColorPalette, aa as ThemeStyle, ab as ThemeTypography, ah as VIEWPORT_PRESETS, am as ViewportOrientation, an as ViewportPreset, aq as createTemplateContext, av as getLayoutHints, ay as getTwoColumnPositions, az as getViewport, aA as getViewportOrientation, aC as isTemplateBlock, aE as scaledFontSize } from '../Doc-BfBhiCNr.js';
3
- import { p as MarkdownHeading, l as MarkdownDocument } from '../types-DYAzisMG.js';
1
+ import { Q as PersistentLayer, z as Layer, R as PersistentLayerConfig, am as TitleBlockInput, aa as TemplateContext, a0 as SectionHeaderInput, a4 as StatHighlightInput, Z as QuoteBlockInput, F as FactCardInput, aq as TwoColumnInput, p as DateEventInput, y as ImageWithCaptionInput, H as LeftFeatureInput, $ as RightFeatureInput, M as MapBlockInput, a3 as StartBlockConfig, w as FullBleedQuoteInput, J as ListBlockInput, V as PhotoGridInput, r as DefinitionCardInput, k as ComparisonBarInput, Y as PullQuoteInput, au as VideoWithCaptionInput, at as VideoPullQuoteInput, o as DataTableInput, A as AccentImage, a as AccentPosition, af as Theme, av as ViewportConfig, t as DocBlock, B as Block, a9 as TemplateBlock, ac as TemplateRegistry, b as Animation, c as AnimationType, ap as TransitionType, ah as ThemeColorScheme, s as Doc } from '../Doc-BeSeH2iX.js';
2
+ export { E as LayoutHints, _ as RenderStyle, ag as ThemeColorPalette, ak as ThemeStyle, al as ThemeTypography, ar as VIEWPORT_PRESETS, aw as ViewportOrientation, ax as ViewportPreset, aB as createTemplateContext, aG as getLayoutHints, aK as getTwoColumnPositions, aL as getViewport, aM as getViewportOrientation, aO as isTemplateBlock, aS as scaledFontSize } from '../Doc-BeSeH2iX.js';
3
+ import { p as MarkdownHeading, l as MarkdownDocument } from '../types-BdZkdJ3z.js';
4
4
  import { C as ContentContainer } from '../ContentContainer-DNx460y8.js';
5
- export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-IP7EdyRq.js';
5
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-BHjJ0Qx6.js';
6
6
 
7
7
  /**
8
8
  * Persistent Layers Expansion
@@ -139,6 +139,23 @@ declare function dateEvent(input: DateEventInput, context: TemplateContext): Lay
139
139
 
140
140
  declare function imageWithCaption(input: ImageWithCaptionInput, context: TemplateContext): Layer[];
141
141
 
142
+ /**
143
+ * Feature Block Templates — `leftFeature` and `rightFeature`
144
+ *
145
+ * Pairs a "feature" image on one side of the block with a title + body
146
+ * paragraph on the other. The two templates are mirror images, so the
147
+ * actual layer-builder lives here once and the per-side template files
148
+ * just call it with a `side` parameter.
149
+ *
150
+ * Used for editorial layouts like product highlights, profile cards,
151
+ * and section intros where a single image deserves to sit next to a
152
+ * short text block rather than behind it (which is what
153
+ * `imageWithCaption` does).
154
+ */
155
+
156
+ declare function leftFeature(input: LeftFeatureInput, context: TemplateContext): Layer[];
157
+ declare function rightFeature(input: RightFeatureInput, context: TemplateContext): Layer[];
158
+
142
159
  /**
143
160
  * Map Block Template
144
161
  *
@@ -392,11 +409,32 @@ declare function adjustY(originalY: string | number, layout: AccentLayout): stri
392
409
  */
393
410
 
394
411
  /**
395
- * Registry mapping template names to their implementation functions.
396
- * Note: coverBlock is not in the registry as it's used directly for start blocks,
397
- * not as a regular template in the block sequence.
412
+ * Registry mapping template ids (the strings that appear in
413
+ * `{[name]}` markdown annotations) to their implementation functions.
414
+ *
415
+ * Some implementation functions keep historical "Block" suffixes
416
+ * (`titleBlock`, `quoteBlock`, `mapBlock`, `listBlock`) for source
417
+ * readability — the registry surfaces them under the cleaner short
418
+ * ids (`title`, `quote`, `map`, `list`). {@link TEMPLATE_ALIASES} keeps
419
+ * the legacy long ids resolvable for documents written before the
420
+ * rename.
421
+ *
422
+ * Note: coverBlock is not in the registry as it's used directly for
423
+ * start blocks, not as a regular template in the block sequence.
398
424
  */
399
425
  declare const templateRegistry: TemplateRegistry;
426
+ /**
427
+ * Back-compat: maps legacy template ids (kept around for documents
428
+ * authored before the "Block" suffix was dropped) to the canonical
429
+ * short ids. Resolved by {@link resolveTemplateName} so both the
430
+ * registry lookup and `hasTemplate()` accept either form.
431
+ */
432
+ declare const TEMPLATE_ALIASES: Readonly<Record<string, string>>;
433
+ /**
434
+ * Resolve a template id through {@link TEMPLATE_ALIASES}. Returns the
435
+ * input unchanged when no alias is registered.
436
+ */
437
+ declare function resolveTemplateName(name: string): string;
400
438
  /**
401
439
  * Expand a template block into a full Block with layers.
402
440
  */
@@ -444,7 +482,9 @@ declare function expandDocBlocks(blocks: DocBlock[], options?: ExpandDocBlocksOp
444
482
  */
445
483
  declare function getAvailableTemplates(): string[];
446
484
  /**
447
- * Check if a template exists.
485
+ * Check if a template exists. Accepts both the canonical short id
486
+ * (`title`, `quote`, `map`, `list`) and legacy aliases
487
+ * (`titleBlock`, `quoteBlock`, `mapBlock`, `listBlock`).
448
488
  */
449
489
  declare function hasTemplate(name: string): boolean;
450
490
 
@@ -495,12 +535,12 @@ declare function getAnimationProgress(animation: Animation, currentTime: number,
495
535
  */
496
536
  declare function resolveColorScheme(context: TemplateContext, name: string | undefined): ThemeColorScheme;
497
537
  /**
498
- * Get the theme font family for a given role.
538
+ * Get the theme font family for a given role, resolved to a CSS string.
499
539
  * Templates call this to set `fontFamily` on text layers.
500
540
  *
501
- * @param context Template context (includes theme with typography settings)
502
- * @param role 'title' for headings, 'body' for descriptions, 'mono' for code
503
- * @returns A CSS font-family string with the theme's font and safe fallbacks
541
+ * Theme fields are structured `FontFamily` references (`{ stackId }` or
542
+ * `{ custom: { name, fallback } }`); this helper resolves them to a
543
+ * CSS font-family string with safe fallbacks.
504
544
  */
505
545
  declare function getThemeFont(context: TemplateContext, role: 'title' | 'body' | 'mono'): string;
506
546
  /**
@@ -754,4 +794,4 @@ declare function scoreTextSimilarity(a: string, b: string): number;
754
794
  */
755
795
  declare function resolveAudioMapping(doc: Doc, container: ContentContainer): Promise<Doc>;
756
796
 
757
- export { type AccentLayout, type AudioSegmentTiming, type CoverBlockInput, DEFAULT_LAYOUT, DocBlock, type DocStylePreset, type ExpandDocBlocksOptions, type MarkdownToDocOptions, PersistentLayerConfig, type RenderContext, TemplateBlock, TemplateContext, Theme, ThemeColorScheme, ViewportConfig, adjustY, comparisonBar, countBlocks, coverBlock, createAccentLayers, dataTable, dateEvent, definitionCard, docToMarkdown, expandCoverBlock, expandDocBlocks, expandPersistentLayers, expandTemplateBlock, factCard, flattenBlocks, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockDepth, getDefaultAnimation, getDefaultAnimationDuration, getDocStyleConfig, getLayers, getOverlayOpacity, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, listBlock, mapBlock, markdownToDoc, photoGrid, pullQuote, quoteBlock, resolveAudioMapping, resolveColorScheme, scaleAnimationDuration, scoreTextSimilarity, sectionHeader, shouldUseShadow, statHighlight, templateRegistry, themedFontSize, titleBlock, twoColumn, videoPullQuote, videoWithCaption };
797
+ export { type AccentLayout, type AudioSegmentTiming, type CoverBlockInput, DEFAULT_LAYOUT, DocBlock, type DocStylePreset, type ExpandDocBlocksOptions, type MarkdownToDocOptions, PersistentLayerConfig, type RenderContext, TEMPLATE_ALIASES, TemplateBlock, TemplateContext, Theme, ThemeColorScheme, ViewportConfig, adjustY, comparisonBar, countBlocks, coverBlock, createAccentLayers, dataTable, dateEvent, definitionCard, docToMarkdown, expandCoverBlock, expandDocBlocks, expandPersistentLayers, expandTemplateBlock, factCard, flattenBlocks, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockDepth, getDefaultAnimation, getDefaultAnimationDuration, getDocStyleConfig, getLayers, getOverlayOpacity, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, leftFeature, listBlock, mapBlock, markdownToDoc, photoGrid, pullQuote, quoteBlock, resolveAudioMapping, resolveColorScheme, resolveTemplateName, rightFeature, scaleAnimationDuration, scoreTextSimilarity, sectionHeader, shouldUseShadow, statHighlight, templateRegistry, themedFontSize, titleBlock, twoColumn, videoPullQuote, videoWithCaption };