@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
@@ -1,4 +1,4 @@
1
- import { M as MarkdownBlockNode, p as MarkdownHeading } from './types-DYAzisMG.js';
1
+ import { M as MarkdownBlockNode, p as MarkdownHeading } from './types-BdZkdJ3z.js';
2
2
 
3
3
  /**
4
4
  * Viewport Configuration
@@ -163,17 +163,28 @@ declare function getSafeTextBounds(orientation: ViewportOrientation): {
163
163
  *
164
164
  * A Theme bundles color palette, typography, visual style, render-style
165
165
  * algorithm, and per-block color schemes into one JSON-serializable object.
166
- * Builders choose a theme from the built-in library or create a custom one
167
- * via `createTheme(base, overrides)`.
166
+ *
167
+ * Built-in themes and customizer-authored themes share this exact schema.
168
+ * Customizer-authored themes additionally specify `seedColors` so the few
169
+ * fields the user picked can be re-edited later; built-ins typically omit
170
+ * `seedColors` and ship with explicit `colors` already filled in.
168
171
  *
169
172
  * Design principles:
170
- * - Fully JSON-serializable (no functions) storable in config / APIs.
171
- * - Doc carries an optional `themeId` pointer; resolution happens at render time.
172
- * - `createTheme` deep-merges a base theme with partial overrides.
173
+ * - Fully JSON-serializable. No functions; no raw CSS font strings.
174
+ * - Font families are structured `FontFamily` references resolved by
175
+ * `resolveFontFamily()` at render time.
176
+ * - Doc carries an optional `themeId`; resolution happens at render time
177
+ * via `resolveTheme(id)`.
178
+ * - `createTheme` deep-merges a base theme with partial overrides;
179
+ * `compileTheme` fills in defaults and derives missing color slots from
180
+ * `seedColors`; both produce a complete `Theme`.
173
181
  */
174
182
 
183
+ /** Current Theme schema version. Bump on breaking changes; loader migrates. */
184
+ declare const THEME_SCHEMA_VERSION: "1";
185
+ type ThemeSchemaVersion = typeof THEME_SCHEMA_VERSION;
175
186
  /**
176
- * Core color palette for a theme. Every color is a CSS color string.
187
+ * Core color palette for a theme. Every color is a `#rrggbb` hex string.
177
188
  */
178
189
  interface ThemeColorPalette {
179
190
  /** Primary accent color */
@@ -205,16 +216,44 @@ interface ThemeColorScheme {
205
216
  /** Accent / secondary tint */
206
217
  accent: string;
207
218
  }
219
+ /**
220
+ * Optional authoring metadata. When present and `colors` is partial,
221
+ * `compileTheme` derives missing color slots from these seeds via OKLCh
222
+ * lightening / darkening. Round-trips a customizer-authored theme back
223
+ * into editable form.
224
+ */
225
+ interface ThemeSeedColors {
226
+ primary: string;
227
+ secondary?: string;
228
+ accent?: string;
229
+ background?: string;
230
+ text?: string;
231
+ }
232
+ /** Categorical bucket for a font family — drives default fallback. */
233
+ type FontFamilyKind = 'sans' | 'serif' | 'mono' | 'display';
234
+ /**
235
+ * Structured reference to a font family. Either a curated stack id (looked
236
+ * up in `AVAILABLE_FONT_STACKS`) or a custom user-supplied name with a
237
+ * structured fallback bucket. Themes never carry raw CSS family strings.
238
+ */
239
+ type FontFamily = {
240
+ stackId: string;
241
+ } | {
242
+ custom: {
243
+ name: string;
244
+ fallback: 'serif' | 'sans-serif' | 'monospace' | 'system-ui';
245
+ };
246
+ };
208
247
  /**
209
248
  * Typography settings for a theme.
210
249
  */
211
250
  interface ThemeTypography {
212
251
  /** Font family for body / description text */
213
- bodyFontFamily: string;
252
+ bodyFont: FontFamily;
214
253
  /** Font family for titles and headings */
215
- titleFontFamily: string;
254
+ titleFont: FontFamily;
216
255
  /** Font family for code / monospaced text (optional) */
217
- monoFontFamily?: string;
256
+ monoFont?: FontFamily;
218
257
  /** Multiplier applied to LayoutHints.titleScale (default 1.0) */
219
258
  titleScale?: number;
220
259
  /** Multiplier applied to LayoutHints.bodyScale (default 1.0) */
@@ -264,24 +303,26 @@ interface RenderStyle {
264
303
  /**
265
304
  * Per-template behavioral hints. Keys are template names, values are
266
305
  * string/number/boolean maps that templates can read to vary their output.
267
- *
268
- * @example
269
- * ```
270
- * { statHighlight: { entrance: 'dramatic' }, titleBlock: { showAccentLine: false } }
271
- * ```
306
+ * Templates that consume hints publish a `hintSchema` export documenting
307
+ * the keys they recognise.
272
308
  */
273
309
  templateHints?: Record<string, Record<string, string | number | boolean>>;
274
310
  }
275
311
  /**
276
- * A complete, JSON-serializable theme definition.
312
+ * A complete, JSON-serializable theme definition. Built-in and customizer-
313
+ * authored themes share this exact shape.
277
314
  */
278
315
  interface Theme {
316
+ /** Schema version. Always '1' for now. */
317
+ schemaVersion: ThemeSchemaVersion;
279
318
  /** Unique identifier (e.g. "documentary") */
280
319
  id: string;
281
320
  /** Human-readable display name */
282
321
  name: string;
283
322
  /** Short description for theme pickers */
284
323
  description?: string;
324
+ /** Optional authoring seeds (customizer fills these; built-ins typically omit) */
325
+ seedColors?: ThemeSeedColors;
285
326
  /** Color palette */
286
327
  colors: ThemeColorPalette;
287
328
  /** Typography settings */
@@ -308,33 +349,62 @@ type DeepPartial<T> = {
308
349
  * Create a new theme by deep-merging overrides onto a base theme.
309
350
  * The returned theme gets its own `id` if one is provided in overrides,
310
351
  * otherwise keeps the base theme's `id` suffixed with "-custom".
311
- *
312
- * @example
313
- * ```ts
314
- * const myTheme = createTheme(THEMES.documentary, {
315
- * colors: { primary: '#ff0000' },
316
- * typography: { bodyFontFamily: '"Inter", sans-serif' },
317
- * });
318
- * ```
319
352
  */
320
353
  declare function createTheme(base: Theme, overrides: DeepPartial<Theme>): Theme;
354
+ /**
355
+ * A Surface Scheme is the light/dark axis, orthogonal to the editorial
356
+ * identity of a Theme. A Theme chooses voice (serif vs sans, muted vs
357
+ * bold, documentary vs magazine); a SurfaceScheme chooses what the paper
358
+ * looks like. Any theme can render on either surface.
359
+ */
360
+ interface SurfaceScheme {
361
+ /** Identifier — 'light', 'dark', or a custom id. */
362
+ id: string;
363
+ background: string;
364
+ backgroundLight: string;
365
+ text: string;
366
+ textMuted: string;
367
+ }
368
+ /** Near-white paper with dark text — standard light mode. */
369
+ declare const LIGHT_SURFACE: SurfaceScheme;
370
+ /** Dark charcoal paper with light text — standard dark mode. */
371
+ declare const DARK_SURFACE: SurfaceScheme;
372
+ /**
373
+ * Overlay a SurfaceScheme's surface colors onto a Theme's palette,
374
+ * leaving everything else (primary, highlight, warning, typography,
375
+ * style, renderStyle, colorSchemes) untouched.
376
+ */
377
+ declare function applySurface(theme: Theme, surface: SurfaceScheme): Theme;
378
+ /**
379
+ * Register a Theme so it can be looked up by id via `resolveTheme(id)`.
380
+ * Lets `Doc.themeId` round-trip through Doc serialization for custom themes.
381
+ *
382
+ * Registered themes take precedence over built-ins with the same id.
383
+ */
384
+ declare function registerTheme(theme: Theme): void;
385
+ /** Remove a previously registered theme. */
386
+ declare function unregisterTheme(id: string): void;
387
+ /** Snapshot of all currently registered (non-built-in) themes. */
388
+ declare function getRegisteredThemes(): Theme[];
389
+ /** @internal — used by themeLibrary's `resolveTheme` to check the registry first. */
390
+ declare function lookupRegisteredTheme(id: string | undefined): Theme | undefined;
321
391
 
322
392
  /**
323
393
  * Block Templates Schema
324
394
  *
325
395
  * Defines a template system for AI-generated doc blocks. Instead of
326
396
  * specifying low-level layers, positions, and animations, AI can use
327
- * high-level templates like "titleBlock" or "statHighlight" with simple
397
+ * high-level templates like "title" or "statHighlight" with simple
328
398
  * content parameters.
329
399
  *
330
400
  * Templates are expanded into full Block structures at render time,
331
401
  * ensuring consistent styling and reducing AI generation errors.
332
402
  *
333
403
  * Template Types:
334
- * - titleBlock: Doc intro with title + subtitle
404
+ * - title: Doc intro with title + subtitle
335
405
  * - sectionHeader: Colored section divider
336
406
  * - statHighlight: Big number/stat with description
337
- * - quoteBlock: Large centered quote
407
+ * - quote: Large centered quote
338
408
  * - factCard: Key fact with explanation
339
409
  * - twoColumn: Side-by-side comparison
340
410
  * - dateEvent: Timeline-style date + description
@@ -412,7 +482,7 @@ interface BaseTemplateBlock {
412
482
  * Title block - doc intro with large title and subtitle.
413
483
  */
414
484
  interface TitleBlockInput extends BaseTemplateBlock {
415
- template: 'titleBlock';
485
+ template: 'title';
416
486
  /** Main title text */
417
487
  title: string;
418
488
  /** Subtitle or tagline (supports \n for line breaks) */
@@ -457,7 +527,7 @@ interface StatHighlightInput extends BaseTemplateBlock {
457
527
  * Quote block - large centered quote text.
458
528
  */
459
529
  interface QuoteBlockInput extends BaseTemplateBlock {
460
- template: 'quoteBlock';
530
+ template: 'quote';
461
531
  /** The quote text (supports \n for line breaks) */
462
532
  quote: string;
463
533
  /** Attribution (author, source) */
@@ -540,6 +610,44 @@ interface ImageWithCaptionInput extends BaseTemplateBlock {
540
610
  /** License identifier (e.g., 'CC BY-SA 4.0') */
541
611
  imageLicense?: string;
542
612
  }
613
+ /**
614
+ * Shared fields for left/right feature blocks. A "feature" pairs an
615
+ * image on one side of the block with a title and body paragraph on
616
+ * the other — a common editorial layout for product highlights,
617
+ * profile callouts, or section intros.
618
+ */
619
+ interface FeatureInputBase extends BaseTemplateBlock {
620
+ /** Path to the feature image. */
621
+ imageSrc: string;
622
+ /** Alt text for accessibility. */
623
+ imageAlt?: string;
624
+ /**
625
+ * Explicit display width of the image, in pixels (typically pulled
626
+ * from a `<img width>` attribute when the WYSIWYG editor resized it).
627
+ * When set, the renderer treats the image as a sized asset and
628
+ * centers it inside its half with padding instead of stretching it
629
+ * to fill the cell.
630
+ */
631
+ imageWidth?: number;
632
+ /** Explicit display height of the image, in pixels. */
633
+ imageHeight?: number;
634
+ /** Heading / title text shown next to the image. */
635
+ title?: string;
636
+ /** Body text shown below the title. */
637
+ body?: string;
638
+ }
639
+ /**
640
+ * Left feature — image on the left, title + body stacked on the right.
641
+ */
642
+ interface LeftFeatureInput extends FeatureInputBase {
643
+ template: 'leftFeature';
644
+ }
645
+ /**
646
+ * Right feature — image on the right, title + body stacked on the left.
647
+ */
648
+ interface RightFeatureInput extends FeatureInputBase {
649
+ template: 'rightFeature';
650
+ }
543
651
  /**
544
652
  * Map block - geographic map showing article location.
545
653
  *
@@ -548,7 +656,7 @@ interface ImageWithCaptionInput extends BaseTemplateBlock {
548
656
  * See docs/MAP_TILES.md for available tile styles and attribution.
549
657
  */
550
658
  interface MapBlockInput extends BaseTemplateBlock {
551
- template: 'mapBlock';
659
+ template: 'map';
552
660
  /** Map center coordinates */
553
661
  center: {
554
662
  lat: number;
@@ -585,7 +693,7 @@ interface FullBleedQuoteInput extends BaseTemplateBlock {
585
693
  * Good for enumerations like "things to see" or "key features".
586
694
  */
587
695
  interface ListBlockInput extends BaseTemplateBlock {
588
- template: 'listBlock';
696
+ template: 'list';
589
697
  /** List items (3-5 recommended) */
590
698
  items: string[];
591
699
  /** Optional header above the list */
@@ -738,7 +846,7 @@ interface DataTableInput extends BaseTemplateBlock {
738
846
  /**
739
847
  * Union of all template block types.
740
848
  */
741
- type TemplateBlock = TitleBlockInput | SectionHeaderInput | StatHighlightInput | QuoteBlockInput | FactCardInput | TwoColumnInput | DateEventInput | ImageWithCaptionInput | MapBlockInput | FullBleedQuoteInput | ListBlockInput | PhotoGridInput | DefinitionCardInput | ComparisonBarInput | PullQuoteInput | VideoWithCaptionInput | VideoPullQuoteInput | DataTableInput;
849
+ type TemplateBlock = TitleBlockInput | SectionHeaderInput | StatHighlightInput | QuoteBlockInput | FactCardInput | TwoColumnInput | DateEventInput | ImageWithCaptionInput | LeftFeatureInput | RightFeatureInput | MapBlockInput | FullBleedQuoteInput | ListBlockInput | PhotoGridInput | DefinitionCardInput | ComparisonBarInput | PullQuoteInput | VideoWithCaptionInput | VideoPullQuoteInput | DataTableInput;
742
850
  /**
743
851
  * A block can be either a raw Block or a TemplateBlock.
744
852
  */
@@ -1417,4 +1525,4 @@ declare function getCaptionAtTime(captions: CaptionTrack | undefined, time: numb
1417
1525
  */
1418
1526
  declare function validateDoc(script: Doc): string[];
1419
1527
 
1420
- export { type TableLayer as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DEFAULT_DOC_FONT as D, type MapTileStyle as E, type FactCardInput as F, type GradientBackgroundConfig as G, type PersistentLayer as H, type ImageBackgroundConfig as I, type PersistentLayerConfig as J, type PersistentLayerTemplate as K, type Layer as L, type MapBlockInput as M, type PersistentLayerTemplateConfig as N, type PersistentLayerTemplateType as O, type PatternBackgroundConfig as P, type PhotoGridInput as Q, type Position as R, type ProgressIndicatorConfig as S, type PullQuoteInput as T, type QuoteBlockInput as U, type RenderStyle as V, type SectionHeaderInput as W, type ShapeLayer as X, type SolidBackgroundConfig as Y, type StartBlockConfig as Z, type StatHighlightInput as _, type AccentPosition as a, type TableLayerStyle as a0, type TemplateBlock as a1, type TemplateContext as a2, type TemplateFunction as a3, type TemplateRegistry as a4, type TextLayer as a5, type TextStyle as a6, type Theme as a7, type ThemeColorPalette as a8, type ThemeColorScheme as a9, getViewportOrientation as aA, isPersistentLayerTemplate as aB, isTemplateBlock as aC, scaledFontSize$1 as aD, scaledFontSize as aE, validateDoc as aF, type ThemeStyle as aa, type ThemeTypography as ab, type TitleBlockInput as ac, type TitleCaptionConfig as ad, type Transition as ae, type TransitionType as af, type TwoColumnInput as ag, VIEWPORT_PRESETS as ah, type VideoLayer as ai, type VideoPullQuoteInput as aj, type VideoWithCaptionInput as ak, type ViewportConfig as al, type ViewportOrientation as am, type ViewportPreset as an, calculateDuration as ao, calculateFontScale as ap, createTemplateContext as aq, createTheme as ar, getAspectRatioString as as, getBlockAtTime as at, getCaptionAtTime as au, getLayoutHints as av, getSafeTextBounds as aw, getSegmentAtTime as ax, getTwoColumnPositions as ay, getViewport as az, type Animation as b, type AnimationType as c, type AudioBookmark as d, type AudioSegment as e, type AudioTimingData as f, type AudioTrack as g, type CaptionTrack as h, type CaptionWord as i, type ColorScheme as j, type ComparisonBarInput as k, type CornerBrandingConfig as l, DEFAULT_TITLE_FONT as m, type DataTableInput as n, type DateEventInput as o, type DeepPartial as p, type DefinitionCardInput as q, type Doc as r, type DocBlock as s, type FullBleedQuoteInput as t, type ImageLayer as u, type ImageWithCaptionInput as v, type LayoutHints as w, type ListBlockInput as x, type MapLayer as y, type MapMarker as z };
1528
+ export { type RightFeatureInput as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DARK_SURFACE as D, type LayoutHints as E, type FactCardInput as F, type GradientBackgroundConfig as G, type LeftFeatureInput as H, type ImageBackgroundConfig as I, type ListBlockInput as J, type MapLayer as K, LIGHT_SURFACE as L, type MapBlockInput as M, type MapMarker as N, type MapTileStyle as O, type PatternBackgroundConfig as P, type PersistentLayer as Q, type PersistentLayerConfig as R, type PersistentLayerTemplate as S, type PersistentLayerTemplateConfig as T, type PersistentLayerTemplateType as U, type PhotoGridInput as V, type Position as W, type ProgressIndicatorConfig as X, type PullQuoteInput as Y, type QuoteBlockInput as Z, type RenderStyle as _, type AccentPosition as a, type SectionHeaderInput as a0, type ShapeLayer as a1, type SolidBackgroundConfig as a2, type StartBlockConfig as a3, type StatHighlightInput as a4, type SurfaceScheme as a5, THEME_SCHEMA_VERSION as a6, type TableLayer as a7, type TableLayerStyle as a8, type TemplateBlock as a9, calculateFontScale as aA, createTemplateContext as aB, createTheme as aC, getAspectRatioString as aD, getBlockAtTime as aE, getCaptionAtTime as aF, getLayoutHints as aG, getRegisteredThemes as aH, getSafeTextBounds as aI, getSegmentAtTime as aJ, getTwoColumnPositions as aK, getViewport as aL, getViewportOrientation as aM, isPersistentLayerTemplate as aN, isTemplateBlock as aO, scaledFontSize$1 as aP, lookupRegisteredTheme as aQ, registerTheme as aR, scaledFontSize as aS, unregisterTheme as aT, validateDoc as aU, type TemplateContext as aa, type TemplateFunction as ab, type TemplateRegistry as ac, type TextLayer as ad, type TextStyle as ae, type Theme as af, type ThemeColorPalette as ag, type ThemeColorScheme as ah, type ThemeSchemaVersion as ai, type ThemeSeedColors as aj, type ThemeStyle as ak, type ThemeTypography as al, type TitleBlockInput as am, type TitleCaptionConfig as an, type Transition as ao, type TransitionType as ap, type TwoColumnInput as aq, VIEWPORT_PRESETS as ar, type VideoLayer as as, type VideoPullQuoteInput as at, type VideoWithCaptionInput as au, type ViewportConfig as av, type ViewportOrientation as aw, type ViewportPreset as ax, applySurface as ay, calculateDuration as az, type Animation as b, type AnimationType as c, type AudioBookmark as d, type AudioSegment as e, type AudioTimingData as f, type AudioTrack as g, type CaptionTrack as h, type CaptionWord as i, type ColorScheme as j, type ComparisonBarInput as k, type CornerBrandingConfig as l, DEFAULT_DOC_FONT as m, DEFAULT_TITLE_FONT as n, type DataTableInput as o, type DateEventInput as p, type DeepPartial as q, type DefinitionCardInput as r, type Doc as s, type DocBlock as t, type FontFamily as u, type FontFamilyKind as v, type FullBleedQuoteInput as w, type ImageLayer as x, type ImageWithCaptionInput as y, type Layer as z };
@@ -0,0 +1,84 @@
1
+ import { x as ImageLayer, ad as TextLayer, a1 as ShapeLayer } from './Doc-BeSeH2iX.js';
2
+
3
+ /**
4
+ * ImageEditDoc — JSON document describing a layered, editable image.
5
+ *
6
+ * This is the persistent state of the `<ImageEditor>` component. It lives
7
+ * inside a `<imagebasename>_files/` sidecar folder (exposed as a
8
+ * {@link ContentContainer}) at `state.json`, alongside referenced asset
9
+ * bytes in `assets/` and version snapshots in `.versions/`.
10
+ *
11
+ * Layers compose the existing core {@link Layer} types (image / text /
12
+ * shape) so renderers can share infrastructure with the doc system.
13
+ * Editor-specific metadata (name, visibility, lock, opacity, blendMode)
14
+ * lives in {@link EditorLayerMeta} and is merged onto each layer. The
15
+ * {@link Layer.animation} field is permitted but ignored by the image
16
+ * editor — animations are a slideshow concept.
17
+ *
18
+ * All asset paths in layers (e.g. `ImageLayer.content.src`) are
19
+ * relative to the sidecar root, keeping the document portable.
20
+ */
21
+
22
+ /**
23
+ * Per-layer editor metadata. Merged into each layer so the persisted
24
+ * shape is a single object. All fields optional; sensible defaults
25
+ * apply when absent (visible: true, locked: false, opacity: 1).
26
+ */
27
+ interface EditorLayerMeta {
28
+ /** Human-readable name shown in the layers panel. */
29
+ name?: string;
30
+ /** When false, the layer is hidden from rendering. Default true. */
31
+ visible?: boolean;
32
+ /** When true, the layer cannot be selected/edited. Default false. */
33
+ locked?: boolean;
34
+ /** 0..1 multiplier on the layer's alpha. Default 1. */
35
+ opacity?: number;
36
+ /**
37
+ * Canvas blend mode (matches the CSS / Canvas2D vocabulary).
38
+ * Default 'source-over' (normal compositing).
39
+ */
40
+ blendMode?: GlobalCompositeOperation;
41
+ }
42
+ /** A layer in an {@link ImageEditDoc}. */
43
+ type ImageEditLayer = (ImageLayer | TextLayer | ShapeLayer) & EditorLayerMeta;
44
+ /** The layer kinds the image editor supports. */
45
+ type ImageEditLayerKind = ImageEditLayer['type'];
46
+ /** Canvas dimensions and background. */
47
+ interface ImageEditCanvas {
48
+ /** Canvas width in pixels. */
49
+ width: number;
50
+ /** Canvas height in pixels. */
51
+ height: number;
52
+ /**
53
+ * Background fill (CSS color, or `'transparent'` for an alpha canvas).
54
+ * Default: `'transparent'`.
55
+ */
56
+ background?: string;
57
+ }
58
+ /** Optional document metadata. */
59
+ interface ImageEditMeta {
60
+ /** Path to the original source image (sidecar-relative). Set when the doc is seeded from an existing image. */
61
+ sourcePath?: string;
62
+ /** ISO timestamp set on first save. */
63
+ createdAt?: string;
64
+ /** ISO timestamp updated on every save. */
65
+ updatedAt?: string;
66
+ }
67
+ /**
68
+ * The persisted image-editor document.
69
+ *
70
+ * Layers are composited back-to-front: `layers[0]` is the bottom of the stack
71
+ * (typically the base raster), `layers[layers.length - 1]` is the top.
72
+ */
73
+ interface ImageEditDoc {
74
+ /** Schema version. Bumped on breaking changes. */
75
+ version: 1;
76
+ /** Canvas configuration. */
77
+ canvas: ImageEditCanvas;
78
+ /** Layers, back-to-front. */
79
+ layers: ImageEditLayer[];
80
+ /** Optional metadata. */
81
+ meta?: ImageEditMeta;
82
+ }
83
+
84
+ export type { EditorLayerMeta as E, ImageEditCanvas as I, ImageEditDoc as a, ImageEditLayer as b, ImageEditLayerKind as c, ImageEditMeta as d };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=colorUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/colorUtils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { isHex, oklchLighten, oklchDarken, oklchSetChroma, contrastRatio, pickContrastingText, deriveScale, relativeLuminance, } from '../schemas/colorUtils.js';
3
+ describe('isHex', () => {
4
+ it('accepts #rgb and #rrggbb', () => {
5
+ expect(isHex('#fff')).toBe(true);
6
+ expect(isHex('#123abc')).toBe(true);
7
+ expect(isHex('#FF0080')).toBe(true);
8
+ });
9
+ it('rejects malformed strings', () => {
10
+ expect(isHex('fff')).toBe(false);
11
+ expect(isHex('#1234')).toBe(false);
12
+ expect(isHex('#xyz')).toBe(false);
13
+ expect(isHex('rgb(0,0,0)')).toBe(false);
14
+ });
15
+ });
16
+ describe('oklchLighten / oklchDarken', () => {
17
+ it('lighten produces a lighter color (higher luminance)', () => {
18
+ const dark = '#101010';
19
+ const lighter = oklchLighten(dark, 0.2);
20
+ expect(relativeLuminance(lighter)).toBeGreaterThan(relativeLuminance(dark));
21
+ });
22
+ it('darken produces a darker color (lower luminance)', () => {
23
+ const light = '#e0e0e0';
24
+ const darker = oklchDarken(light, 0.2);
25
+ expect(relativeLuminance(darker)).toBeLessThan(relativeLuminance(light));
26
+ });
27
+ it('round-trips approximately stable for moderate adjustments', () => {
28
+ const seed = '#3182ce';
29
+ const round = oklchDarken(oklchLighten(seed, 0.1), 0.1);
30
+ // sRGB gamut clamping prevents perfect round-trip; expect within a small epsilon.
31
+ expect(round).toMatch(/^#[0-9a-f]{6}$/);
32
+ const lumDiff = Math.abs(relativeLuminance(seed) - relativeLuminance(round));
33
+ expect(lumDiff).toBeLessThan(0.05);
34
+ });
35
+ it('returns a hex string', () => {
36
+ expect(oklchLighten('#3182ce', 0.1)).toMatch(/^#[0-9a-f]{6}$/);
37
+ expect(oklchDarken('#3182ce', 0.1)).toMatch(/^#[0-9a-f]{6}$/);
38
+ });
39
+ it('falls back to input on parse failure', () => {
40
+ expect(oklchLighten('not-a-color', 0.1)).toBe('not-a-color');
41
+ });
42
+ });
43
+ describe('oklchSetChroma', () => {
44
+ it('reducing chroma toward 0 desaturates a color', () => {
45
+ const vivid = '#ff3366';
46
+ const muted = oklchSetChroma(vivid, 0.1);
47
+ // Muted version's R/G/B channels should be much closer to each other than vivid.
48
+ const parse = (h) => [
49
+ parseInt(h.slice(1, 3), 16),
50
+ parseInt(h.slice(3, 5), 16),
51
+ parseInt(h.slice(5, 7), 16),
52
+ ];
53
+ const [vr, vg, vb] = parse(vivid);
54
+ const [mr, mg, mb] = parse(muted);
55
+ const vSpread = Math.max(vr, vg, vb) - Math.min(vr, vg, vb);
56
+ const mSpread = Math.max(mr, mg, mb) - Math.min(mr, mg, mb);
57
+ expect(mSpread).toBeLessThan(vSpread);
58
+ });
59
+ });
60
+ describe('contrastRatio', () => {
61
+ it('white-on-black is the maximum (≈21)', () => {
62
+ expect(contrastRatio('#ffffff', '#000000')).toBeCloseTo(21, 0);
63
+ });
64
+ it('same-color is 1', () => {
65
+ expect(contrastRatio('#aabbcc', '#aabbcc')).toBeCloseTo(1, 5);
66
+ });
67
+ it('is symmetric', () => {
68
+ expect(contrastRatio('#222', '#ddd')).toBeCloseTo(contrastRatio('#ddd', '#222'), 5);
69
+ });
70
+ });
71
+ describe('pickContrastingText', () => {
72
+ it('returns dark text for light backgrounds', () => {
73
+ expect(pickContrastingText('#ffffff')).toBe('#1a202c');
74
+ expect(pickContrastingText('#f7fafc')).toBe('#1a202c');
75
+ });
76
+ it('returns light text for dark backgrounds', () => {
77
+ expect(pickContrastingText('#000000')).toBe('#f7fafc');
78
+ expect(pickContrastingText('#1a202c')).toBe('#f7fafc');
79
+ });
80
+ it('respects custom light/dark options', () => {
81
+ expect(pickContrastingText('#000000', '#fefefe', '#020202')).toBe('#fefefe');
82
+ });
83
+ });
84
+ describe('deriveScale', () => {
85
+ it('produces 5 stops with base in the middle', () => {
86
+ const scale = deriveScale('#3182ce', 0.15);
87
+ expect(scale.base).toBe('#3182ce');
88
+ expect(relativeLuminance(scale.lighter2)).toBeGreaterThan(relativeLuminance(scale.lighter1));
89
+ expect(relativeLuminance(scale.lighter1)).toBeGreaterThan(relativeLuminance(scale.base));
90
+ expect(relativeLuminance(scale.base)).toBeGreaterThan(relativeLuminance(scale.darker1));
91
+ expect(relativeLuminance(scale.darker1)).toBeGreaterThan(relativeLuminance(scale.darker2));
92
+ });
93
+ });
94
+ //# sourceMappingURL=colorUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.test.js","sourceRoot":"","sources":["../../src/__tests__/colorUtils.test.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { VIEWPORT_PRESETS } from '../schemas/Viewport.js';
7
7
  // ---------------------------------------------------------------------------
8
8
  function makeTemplateBlock(overrides = {}) {
9
9
  return {
10
- template: 'titleBlock',
10
+ template: 'title',
11
11
  id: 'test-title-1',
12
12
  duration: 5,
13
13
  audioSegment: 0,
@@ -35,7 +35,7 @@ const defaultContext = {
35
35
  // ---------------------------------------------------------------------------
36
36
  describe('getLayers', () => {
37
37
  it('generates layers for a known template block', () => {
38
- const block = makeTemplateBlock({ template: 'titleBlock', title: 'Test Title' });
38
+ const block = makeTemplateBlock({ template: 'title', title: 'Test Title' });
39
39
  const layers = getLayers(block, defaultContext);
40
40
  expect(Array.isArray(layers)).toBe(true);
41
41
  expect(layers.length).toBeGreaterThan(0);
@@ -68,6 +68,30 @@ describe('getLayers', () => {
68
68
  const layers = getLayers(block, defaultContext);
69
69
  expect(layers).toEqual(existingLayers);
70
70
  });
71
+ it('resolves legacy template aliases through TEMPLATE_ALIASES', () => {
72
+ // Regression: `getLayers` previously did `block.template in templateRegistry`
73
+ // without alias resolution, so docs authored with the legacy long ids
74
+ // (`titleBlock`, `quoteBlock`, `mapBlock`, `listBlock`) rendered as
75
+ // empty SVG cards in the linear/document view — `hasTemplate()` accepts
76
+ // the alias, so `isAnnotatedBlock` returns true and the card wrapper
77
+ // renders, but the registry lookup below would miss the alias and the
78
+ // layer array came back empty.
79
+ const aliasedToCanonical = [
80
+ ['titleBlock', 'title'],
81
+ ['quoteBlock', 'quote'],
82
+ ['listBlock', 'list'],
83
+ ];
84
+ for (const [alias] of aliasedToCanonical) {
85
+ const block = makeTemplateBlock({
86
+ template: alias,
87
+ title: 'Aliased',
88
+ items: ['a', 'b', 'c'],
89
+ quote: 'q',
90
+ });
91
+ const layers = getLayers(block, defaultContext);
92
+ expect(layers.length).toBeGreaterThan(0);
93
+ }
94
+ });
71
95
  it('returns empty array for unknown template', () => {
72
96
  const block = {
73
97
  template: 'totally_nonexistent',
@@ -84,7 +108,7 @@ describe('getLayers', () => {
84
108
  expect(layers).toEqual([]);
85
109
  });
86
110
  it('uses default context values when context is omitted', () => {
87
- const block = makeTemplateBlock({ template: 'titleBlock', title: 'Defaults' });
111
+ const block = makeTemplateBlock({ template: 'title', title: 'Defaults' });
88
112
  const layers = getLayers(block);
89
113
  expect(Array.isArray(layers)).toBe(true);
90
114
  expect(layers.length).toBeGreaterThan(0);
@@ -120,7 +144,7 @@ describe('getLayers', () => {
120
144
  topLayers: [topLayer],
121
145
  };
122
146
  it('injects persistent bottom and top layers around block layers', () => {
123
- const block = makeTemplateBlock({ template: 'titleBlock', title: 'With Persistent' });
147
+ const block = makeTemplateBlock({ template: 'title', title: 'With Persistent' });
124
148
  const layers = getLayers(block, { ...defaultContext, persistentLayers: persistentConfig });
125
149
  // First layer should be the bottom persistent layer
126
150
  expect(layers[0]).toEqual(bottomLayer);
@@ -131,7 +155,7 @@ describe('getLayers', () => {
131
155
  });
132
156
  it('respects useBottomLayer: false opt-out', () => {
133
157
  const block = makeTemplateBlock({
134
- template: 'titleBlock',
158
+ template: 'title',
135
159
  title: 'No Bottom',
136
160
  useBottomLayer: false,
137
161
  });
@@ -143,7 +167,7 @@ describe('getLayers', () => {
143
167
  });
144
168
  it('respects useTopLayer: false opt-out', () => {
145
169
  const block = makeTemplateBlock({
146
- template: 'titleBlock',
170
+ template: 'title',
147
171
  title: 'No Top',
148
172
  useTopLayer: false,
149
173
  });
@@ -154,7 +178,7 @@ describe('getLayers', () => {
154
178
  expect(layers[layers.length - 1]).not.toEqual(topLayer);
155
179
  });
156
180
  it('skips injection when no persistent layers are configured', () => {
157
- const block = makeTemplateBlock({ template: 'titleBlock', title: 'No Persistent' });
181
+ const block = makeTemplateBlock({ template: 'title', title: 'No Persistent' });
158
182
  const withoutPersistent = getLayers(block, defaultContext);
159
183
  const withEmptyPersistent = getLayers(block, {
160
184
  ...defaultContext,
@@ -1 +1 @@
1
- {"version":3,"file":"getLayers.test.js","sourceRoot":"","sources":["../../src/__tests__/getLayers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getLayers.test.js","sourceRoot":"","sources":["../../src/__tests__/getLayers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=iconResolve.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconResolve.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/iconResolve.test.ts"],"names":[],"mappings":""}