@prismicio/types-internal 3.17.0 → 4.0.0-canary.3fe5f1e

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 (758) hide show
  1. package/README.md +36 -20
  2. package/dist/_virtual/_rolldown/runtime.js +13 -0
  3. package/dist/common/asset.d.ts +22 -0
  4. package/dist/common/asset.d.ts.map +1 -0
  5. package/dist/common/asset.js +21 -0
  6. package/dist/common/asset.js.map +1 -0
  7. package/dist/common/embed.d.ts +21 -0
  8. package/dist/common/embed.d.ts.map +1 -0
  9. package/dist/common/embed.js +20 -0
  10. package/dist/common/embed.js.map +1 -0
  11. package/dist/common/hexaColorCode.d.ts +8 -0
  12. package/dist/common/hexaColorCode.d.ts.map +1 -0
  13. package/dist/common/hexaColorCode.js +8 -0
  14. package/dist/common/hexaColorCode.js.map +1 -0
  15. package/dist/common/nonEmptyString.d.ts +8 -0
  16. package/dist/common/nonEmptyString.d.ts.map +1 -0
  17. package/dist/common/nonEmptyString.js +7 -0
  18. package/dist/common/nonEmptyString.js.map +1 -0
  19. package/dist/common/widgetKey.d.ts +8 -0
  20. package/dist/common/widgetKey.d.ts.map +1 -0
  21. package/dist/common/widgetKey.js +8 -0
  22. package/dist/common/widgetKey.js.map +1 -0
  23. package/dist/content/boolean.d.ts +11 -0
  24. package/dist/content/boolean.d.ts.map +1 -0
  25. package/dist/content/boolean.js +11 -0
  26. package/dist/content/boolean.js.map +1 -0
  27. package/dist/content/codec/boolean.js +31 -0
  28. package/dist/content/codec/boolean.js.map +1 -0
  29. package/dist/content/codec/document.js +49 -0
  30. package/dist/content/codec/document.js.map +1 -0
  31. package/dist/content/codec/embed.js +42 -0
  32. package/dist/content/codec/embed.js.map +1 -0
  33. package/dist/content/codec/empty.js +35 -0
  34. package/dist/content/codec/empty.js.map +1 -0
  35. package/dist/content/codec/field.js +41 -0
  36. package/dist/content/codec/field.js.map +1 -0
  37. package/dist/content/codec/geopoint.js +32 -0
  38. package/dist/content/codec/geopoint.js.map +1 -0
  39. package/dist/content/codec/group.js +127 -0
  40. package/dist/content/codec/group.js.map +1 -0
  41. package/dist/content/codec/image.js +44 -0
  42. package/dist/content/codec/image.js.map +1 -0
  43. package/dist/content/codec/integrationField.js +31 -0
  44. package/dist/content/codec/integrationField.js.map +1 -0
  45. package/dist/content/codec/legacyContentCtx.d.ts +50 -0
  46. package/dist/content/codec/legacyContentCtx.d.ts.map +1 -0
  47. package/dist/content/codec/legacyContentCtx.js +68 -0
  48. package/dist/content/codec/legacyContentCtx.js.map +1 -0
  49. package/dist/content/codec/link.js +93 -0
  50. package/dist/content/codec/link.js.map +1 -0
  51. package/dist/content/codec/nestable.js +91 -0
  52. package/dist/content/codec/nestable.js.map +1 -0
  53. package/dist/content/codec/repeatable.js +56 -0
  54. package/dist/content/codec/repeatable.js.map +1 -0
  55. package/dist/content/codec/richText.js +87 -0
  56. package/dist/content/codec/richText.js.map +1 -0
  57. package/dist/content/codec/separator.js +26 -0
  58. package/dist/content/codec/separator.js.map +1 -0
  59. package/dist/content/codec/slice.js +220 -0
  60. package/dist/content/codec/slice.js.map +1 -0
  61. package/dist/content/codec/slices.js +106 -0
  62. package/dist/content/codec/slices.js.map +1 -0
  63. package/dist/content/codec/table.js +56 -0
  64. package/dist/content/codec/table.js.map +1 -0
  65. package/dist/content/codec/uid.js +31 -0
  66. package/dist/content/codec/uid.js.map +1 -0
  67. package/dist/content/codec/widget.js +39 -0
  68. package/dist/content/codec/widget.js.map +1 -0
  69. package/dist/content/document.d.ts +9 -0
  70. package/dist/content/document.d.ts.map +1 -0
  71. package/dist/content/document.js +9 -0
  72. package/dist/content/document.js.map +1 -0
  73. package/dist/content/embed.d.ts +24 -0
  74. package/dist/content/embed.d.ts.map +1 -0
  75. package/dist/content/embed.js +12 -0
  76. package/dist/content/embed.js.map +1 -0
  77. package/dist/content/empty.d.ts +11 -0
  78. package/dist/content/empty.d.ts.map +1 -0
  79. package/dist/content/empty.js +11 -0
  80. package/dist/content/empty.js.map +1 -0
  81. package/dist/content/field.d.ts +49 -0
  82. package/dist/content/field.d.ts.map +1 -0
  83. package/dist/content/field.js +52 -0
  84. package/dist/content/field.js.map +1 -0
  85. package/dist/content/geopoint.d.ts +14 -0
  86. package/dist/content/geopoint.d.ts.map +1 -0
  87. package/dist/content/geopoint.js +9 -0
  88. package/dist/content/geopoint.js.map +1 -0
  89. package/dist/content/group.d.ts +19 -0
  90. package/dist/content/group.d.ts.map +1 -0
  91. package/dist/content/group.js +19 -0
  92. package/dist/content/group.js.map +1 -0
  93. package/dist/content/image.d.ts +52 -0
  94. package/dist/content/image.d.ts.map +1 -0
  95. package/dist/content/image.js +10 -0
  96. package/dist/content/image.js.map +1 -0
  97. package/dist/content/integrationField.d.ts +11 -0
  98. package/dist/content/integrationField.d.ts.map +1 -0
  99. package/dist/content/integrationField.js +11 -0
  100. package/dist/content/integrationField.js.map +1 -0
  101. package/dist/content/legacy/boolean.d.ts +1 -0
  102. package/dist/content/legacy/boolean.js +7 -0
  103. package/dist/content/legacy/boolean.js.map +1 -0
  104. package/dist/content/legacy/document.d.ts +8 -0
  105. package/dist/content/legacy/document.d.ts.map +1 -0
  106. package/dist/content/legacy/document.js +15 -0
  107. package/dist/content/legacy/document.js.map +1 -0
  108. package/dist/content/legacy/embed.d.ts +1 -0
  109. package/dist/content/legacy/embed.js +23 -0
  110. package/dist/content/legacy/embed.js.map +1 -0
  111. package/dist/content/legacy/empty.d.ts +1 -0
  112. package/dist/content/legacy/empty.js +7 -0
  113. package/dist/content/legacy/empty.js.map +1 -0
  114. package/dist/content/legacy/field.d.ts +1 -0
  115. package/dist/content/legacy/field.js +7 -0
  116. package/dist/content/legacy/field.js.map +1 -0
  117. package/dist/content/legacy/geopoint.d.ts +1 -0
  118. package/dist/content/legacy/geopoint.js +10 -0
  119. package/dist/content/legacy/geopoint.js.map +1 -0
  120. package/dist/content/legacy/group.d.ts +9 -0
  121. package/dist/content/legacy/group.d.ts.map +1 -0
  122. package/dist/content/legacy/group.js +10 -0
  123. package/dist/content/legacy/group.js.map +1 -0
  124. package/dist/content/legacy/image.d.ts +1 -0
  125. package/dist/content/legacy/image.js +33 -0
  126. package/dist/content/legacy/image.js.map +1 -0
  127. package/dist/content/legacy/integrationField.d.ts +1 -0
  128. package/dist/content/legacy/integrationField.js +7 -0
  129. package/dist/content/legacy/integrationField.js.map +1 -0
  130. package/dist/content/legacy/link.d.ts +41 -0
  131. package/dist/content/legacy/link.d.ts.map +1 -0
  132. package/dist/content/legacy/link.js +88 -0
  133. package/dist/content/legacy/link.js.map +1 -0
  134. package/dist/content/legacy/nestable.d.ts +1 -0
  135. package/dist/content/legacy/nestable.js +32 -0
  136. package/dist/content/legacy/nestable.js.map +1 -0
  137. package/dist/content/legacy/repeatable.d.ts +1 -0
  138. package/dist/content/legacy/repeatable.js +7 -0
  139. package/dist/content/legacy/repeatable.js.map +1 -0
  140. package/dist/content/legacy/richText.d.ts +109 -0
  141. package/dist/content/legacy/richText.d.ts.map +1 -0
  142. package/dist/content/legacy/richText.js +100 -0
  143. package/dist/content/legacy/richText.js.map +1 -0
  144. package/dist/content/legacy/separator.d.ts +1 -0
  145. package/dist/content/legacy/separator.js +7 -0
  146. package/dist/content/legacy/separator.js.map +1 -0
  147. package/dist/content/legacy/slice.js +22 -0
  148. package/dist/content/legacy/slice.js.map +1 -0
  149. package/dist/content/legacy/slices.js +13 -0
  150. package/dist/content/legacy/slices.js.map +1 -0
  151. package/dist/content/legacy/table.d.ts +1 -0
  152. package/dist/content/legacy/table.js +19 -0
  153. package/dist/content/legacy/table.js.map +1 -0
  154. package/dist/content/legacy/uid.js +7 -0
  155. package/dist/content/legacy/uid.js.map +1 -0
  156. package/dist/content/link.d.ts +163 -0
  157. package/dist/content/link.d.ts.map +1 -0
  158. package/dist/content/link.js +50 -0
  159. package/dist/content/link.js.map +1 -0
  160. package/dist/content/nestable.d.ts +19 -0
  161. package/dist/content/nestable.d.ts.map +1 -0
  162. package/dist/content/nestable.js +56 -0
  163. package/dist/content/nestable.js.map +1 -0
  164. package/dist/content/repeatable.d.ts +97 -0
  165. package/dist/content/repeatable.d.ts.map +1 -0
  166. package/dist/content/repeatable.js +17 -0
  167. package/dist/content/repeatable.js.map +1 -0
  168. package/dist/content/richText.d.ts +91 -0
  169. package/dist/content/richText.d.ts.map +1 -0
  170. package/dist/content/richText.js +24 -0
  171. package/dist/content/richText.js.map +1 -0
  172. package/dist/content/separator.d.ts +10 -0
  173. package/dist/content/separator.d.ts.map +1 -0
  174. package/dist/content/separator.js +8 -0
  175. package/dist/content/separator.js.map +1 -0
  176. package/dist/content/slice.d.ts +24 -0
  177. package/dist/content/slice.d.ts.map +1 -0
  178. package/dist/content/slice.js +27 -0
  179. package/dist/content/slice.js.map +1 -0
  180. package/dist/content/slices.d.ts +56 -0
  181. package/dist/content/slices.d.ts.map +1 -0
  182. package/dist/content/slices.js +24 -0
  183. package/dist/content/slices.js.map +1 -0
  184. package/dist/content/table.d.ts +21 -0
  185. package/dist/content/table.d.ts.map +1 -0
  186. package/dist/content/table.js +13 -0
  187. package/dist/content/table.js.map +1 -0
  188. package/dist/content/uid.d.ts +11 -0
  189. package/dist/content/uid.d.ts.map +1 -0
  190. package/dist/content/uid.js +11 -0
  191. package/dist/content/uid.js.map +1 -0
  192. package/dist/content/widget.d.ts +11 -0
  193. package/dist/content/widget.d.ts.map +1 -0
  194. package/dist/content/widget.js +16 -0
  195. package/dist/content/widget.js.map +1 -0
  196. package/dist/helpers/contentPath.d.ts +15 -0
  197. package/dist/helpers/contentPath.d.ts.map +1 -0
  198. package/dist/helpers/contentPath.js +30 -0
  199. package/dist/helpers/contentPath.js.map +1 -0
  200. package/dist/helpers/customTypeModel.d.ts +15 -0
  201. package/dist/helpers/customTypeModel.d.ts.map +1 -0
  202. package/dist/helpers/customTypeModel.js +85 -0
  203. package/dist/helpers/customTypeModel.js.map +1 -0
  204. package/dist/helpers/documentContent.d.ts +20 -0
  205. package/dist/helpers/documentContent.d.ts.map +1 -0
  206. package/dist/helpers/documentContent.js +64 -0
  207. package/dist/helpers/documentContent.js.map +1 -0
  208. package/dist/helpers/sliceContent.d.ts +12 -0
  209. package/dist/helpers/sliceContent.d.ts.map +1 -0
  210. package/dist/helpers/sliceContent.js +60 -0
  211. package/dist/helpers/sliceContent.js.map +1 -0
  212. package/dist/helpers/traverseContent.d.ts +84 -0
  213. package/dist/helpers/traverseContent.d.ts.map +1 -0
  214. package/dist/helpers/traverseContent.js +374 -0
  215. package/dist/helpers/traverseContent.js.map +1 -0
  216. package/dist/helpers/traverseContentWithModel.d.ts +84 -0
  217. package/dist/helpers/traverseContentWithModel.d.ts.map +1 -0
  218. package/dist/helpers/traverseContentWithModel.js +388 -0
  219. package/dist/helpers/traverseContentWithModel.js.map +1 -0
  220. package/dist/index.d.ts +56 -0
  221. package/dist/index.js +9 -0
  222. package/dist/io-ts.d.ts +4363 -0
  223. package/dist/io-ts.d.ts.map +1 -0
  224. package/dist/io-ts.js +220 -0
  225. package/dist/io-ts.js.map +1 -0
  226. package/dist/model/boolean.d.ts +16 -0
  227. package/dist/model/boolean.d.ts.map +1 -0
  228. package/dist/model/boolean.js +16 -0
  229. package/dist/model/boolean.js.map +1 -0
  230. package/dist/model/color.d.ts +15 -0
  231. package/dist/model/color.d.ts.map +1 -0
  232. package/dist/model/color.js +15 -0
  233. package/dist/model/color.js.map +1 -0
  234. package/dist/model/customType.d.ts +31 -0
  235. package/dist/model/customType.d.ts.map +1 -0
  236. package/dist/model/customType.js +18 -0
  237. package/dist/model/customType.js.map +1 -0
  238. package/dist/model/date.d.ts +16 -0
  239. package/dist/model/date.d.ts.map +1 -0
  240. package/dist/model/date.js +16 -0
  241. package/dist/model/date.js.map +1 -0
  242. package/dist/model/embed.d.ts +16 -0
  243. package/dist/model/embed.d.ts.map +1 -0
  244. package/dist/model/embed.js +16 -0
  245. package/dist/model/embed.js.map +1 -0
  246. package/dist/model/geopoint.d.ts +14 -0
  247. package/dist/model/geopoint.d.ts.map +1 -0
  248. package/dist/model/geopoint.js +12 -0
  249. package/dist/model/geopoint.js.map +1 -0
  250. package/dist/model/group.d.ts +567 -0
  251. package/dist/model/group.d.ts.map +1 -0
  252. package/dist/model/group.js +23 -0
  253. package/dist/model/group.js.map +1 -0
  254. package/dist/model/image.d.ts +24 -0
  255. package/dist/model/image.d.ts.map +1 -0
  256. package/dist/model/image.js +41 -0
  257. package/dist/model/image.js.map +1 -0
  258. package/dist/model/integrationField.d.ts +16 -0
  259. package/dist/model/integrationField.d.ts.map +1 -0
  260. package/dist/model/integrationField.js +16 -0
  261. package/dist/model/integrationField.js.map +1 -0
  262. package/dist/model/link.d.ts +48 -0
  263. package/dist/model/link.d.ts.map +1 -0
  264. package/dist/model/link.js +94 -0
  265. package/dist/model/link.js.map +1 -0
  266. package/dist/model/nestable.d.ts +23 -0
  267. package/dist/model/nestable.d.ts.map +1 -0
  268. package/dist/model/nestable.js +40 -0
  269. package/dist/model/nestable.js.map +1 -0
  270. package/dist/model/number.d.ts +18 -0
  271. package/dist/model/number.d.ts.map +1 -0
  272. package/dist/model/number.js +19 -0
  273. package/dist/model/number.js.map +1 -0
  274. package/dist/model/range.d.ts +18 -0
  275. package/dist/model/range.d.ts.map +1 -0
  276. package/dist/model/range.js +19 -0
  277. package/dist/model/range.js.map +1 -0
  278. package/dist/model/richText.d.ts +24 -0
  279. package/dist/model/richText.d.ts.map +1 -0
  280. package/dist/model/richText.js +73 -0
  281. package/dist/model/richText.js.map +1 -0
  282. package/dist/model/section.d.ts +11 -0
  283. package/dist/model/section.d.ts.map +1 -0
  284. package/dist/model/section.js +10 -0
  285. package/dist/model/section.js.map +1 -0
  286. package/dist/model/select.d.ts +17 -0
  287. package/dist/model/select.d.ts.map +1 -0
  288. package/dist/model/select.js +22 -0
  289. package/dist/model/select.js.map +1 -0
  290. package/dist/model/separator.d.ts +13 -0
  291. package/dist/model/separator.d.ts.map +1 -0
  292. package/dist/model/separator.js +11 -0
  293. package/dist/model/separator.js.map +1 -0
  294. package/dist/model/slice.d.ts +1476 -0
  295. package/dist/model/slice.d.ts.map +1 -0
  296. package/dist/model/slice.js +68 -0
  297. package/dist/model/slice.js.map +1 -0
  298. package/dist/model/slices.d.ts +33 -0
  299. package/dist/model/slices.d.ts.map +1 -0
  300. package/dist/model/slices.js +29 -0
  301. package/dist/model/slices.js.map +1 -0
  302. package/dist/model/table.d.ts +14 -0
  303. package/dist/model/table.d.ts.map +1 -0
  304. package/dist/model/table.js +22 -0
  305. package/dist/model/table.js.map +1 -0
  306. package/dist/model/text.d.ts +16 -0
  307. package/dist/model/text.d.ts.map +1 -0
  308. package/dist/model/text.js +16 -0
  309. package/dist/model/text.js.map +1 -0
  310. package/dist/model/timestamp.d.ts +16 -0
  311. package/dist/model/timestamp.d.ts.map +1 -0
  312. package/dist/model/timestamp.js +16 -0
  313. package/dist/model/timestamp.js.map +1 -0
  314. package/dist/model/uid.d.ts +16 -0
  315. package/dist/model/uid.d.ts.map +1 -0
  316. package/dist/model/uid.js +16 -0
  317. package/dist/model/uid.js.map +1 -0
  318. package/dist/model/widget.d.ts +60 -0
  319. package/dist/model/widget.d.ts.map +1 -0
  320. package/dist/model/widget.js +47 -0
  321. package/dist/model/widget.js.map +1 -0
  322. package/dist/zod4.d.ts +2321 -0
  323. package/dist/zod4.d.ts.map +1 -0
  324. package/dist/zod4.js +132 -0
  325. package/dist/zod4.js.map +1 -0
  326. package/package.json +55 -58
  327. package/src/common/asset.ts +29 -0
  328. package/src/common/embed.ts +27 -0
  329. package/src/common/hexaColorCode.ts +11 -0
  330. package/src/common/nonEmptyString.ts +9 -0
  331. package/src/common/widgetKey.ts +11 -0
  332. package/src/content/boolean.ts +23 -0
  333. package/src/content/codec/boolean.ts +38 -0
  334. package/src/content/codec/document.ts +60 -0
  335. package/src/content/codec/embed.ts +55 -0
  336. package/src/content/codec/empty.ts +49 -0
  337. package/src/content/codec/field.ts +96 -0
  338. package/src/content/codec/geopoint.ts +40 -0
  339. package/src/content/codec/group.ts +163 -0
  340. package/src/content/codec/image.ts +50 -0
  341. package/src/content/codec/integrationField.ts +38 -0
  342. package/src/content/{LegacyContentCtx.ts → codec/legacyContentCtx.ts} +17 -17
  343. package/src/content/codec/link.ts +103 -0
  344. package/src/content/codec/nestable.ts +146 -0
  345. package/src/content/codec/repeatable.ts +68 -0
  346. package/src/content/codec/richText.ts +117 -0
  347. package/src/content/codec/separator.ts +33 -0
  348. package/src/content/codec/slice.ts +276 -0
  349. package/src/content/codec/slices.ts +130 -0
  350. package/src/content/codec/table.ts +65 -0
  351. package/src/content/codec/uid.ts +36 -0
  352. package/src/content/codec/widget.ts +58 -0
  353. package/src/content/document.ts +8 -0
  354. package/src/content/embed.ts +12 -0
  355. package/src/content/empty.ts +10 -0
  356. package/src/content/field.ts +94 -0
  357. package/src/content/geopoint.ts +11 -0
  358. package/src/content/group.ts +99 -0
  359. package/src/content/image.ts +103 -0
  360. package/src/content/integrationField.ts +10 -0
  361. package/src/content/legacy/boolean.ts +5 -0
  362. package/src/content/legacy/document.ts +25 -0
  363. package/src/content/legacy/embed.ts +23 -0
  364. package/src/content/legacy/empty.ts +10 -0
  365. package/src/content/legacy/field.ts +8 -0
  366. package/src/content/legacy/geopoint.ts +10 -0
  367. package/src/content/legacy/group.ts +23 -0
  368. package/src/content/legacy/image.ts +43 -0
  369. package/src/content/legacy/integrationField.ts +5 -0
  370. package/src/content/legacy/link.ts +194 -0
  371. package/src/content/legacy/nestable.ts +55 -0
  372. package/src/content/legacy/repeatable.ts +7 -0
  373. package/src/content/legacy/richText.ts +198 -0
  374. package/src/content/legacy/separator.ts +6 -0
  375. package/src/content/legacy/slice.ts +38 -0
  376. package/src/content/legacy/slices.ts +17 -0
  377. package/src/content/legacy/table.ts +39 -0
  378. package/src/content/legacy/uid.ts +6 -0
  379. package/src/content/legacy/widget.ts +19 -0
  380. package/src/content/link.ts +154 -0
  381. package/src/content/nestable.ts +126 -0
  382. package/src/content/repeatable.ts +21 -0
  383. package/src/content/richText.ts +54 -0
  384. package/src/content/separator.ts +9 -0
  385. package/src/content/slice.ts +41 -0
  386. package/src/content/slices.ts +57 -0
  387. package/src/content/table.ts +14 -0
  388. package/src/content/uid.ts +10 -0
  389. package/src/content/widget.ts +21 -0
  390. package/src/content/{fields/withDefaultValues.ts → withDefaultValues.ts} +34 -39
  391. package/src/helpers/contentPath.ts +35 -0
  392. package/src/helpers/customTypeModel.ts +113 -0
  393. package/src/helpers/documentContent.ts +108 -0
  394. package/src/helpers/sliceContent.ts +86 -0
  395. package/src/helpers/traverseContent.ts +594 -0
  396. package/src/helpers/traverseContentWithModel.ts +616 -0
  397. package/src/index.ts +123 -0
  398. package/src/io-ts.ts +351 -0
  399. package/src/model/boolean.ts +15 -0
  400. package/src/model/color.ts +14 -0
  401. package/src/model/customType.ts +26 -0
  402. package/src/model/date.ts +15 -0
  403. package/src/model/diff/index.ts +4 -0
  404. package/src/{customtypes/diff/SharedSlice.ts → model/diff/sharedSlice.ts} +16 -18
  405. package/src/model/diff/utils.ts +45 -0
  406. package/src/model/diff/variation.ts +155 -0
  407. package/src/model/diff/widgets.ts +15 -0
  408. package/src/model/embed.ts +15 -0
  409. package/src/model/geopoint.ts +13 -0
  410. package/src/model/group.ts +39 -0
  411. package/src/model/image.ts +54 -0
  412. package/src/model/integrationField.ts +15 -0
  413. package/src/model/link.ts +141 -0
  414. package/src/model/nestable.ts +71 -0
  415. package/src/model/number.ts +26 -0
  416. package/src/model/range.ts +26 -0
  417. package/src/model/richText.ts +106 -0
  418. package/src/model/section.ts +12 -0
  419. package/src/model/select.ts +30 -0
  420. package/src/model/separator.ts +12 -0
  421. package/src/model/slice.ts +133 -0
  422. package/src/model/slices.ts +54 -0
  423. package/src/model/table.ts +29 -0
  424. package/src/model/text.ts +15 -0
  425. package/src/model/timestamp.ts +15 -0
  426. package/src/model/uid.ts +15 -0
  427. package/src/model/widget.ts +63 -0
  428. package/src/zod4.ts +187 -0
  429. package/lib/common/Asset.d.ts +0 -16
  430. package/lib/common/Asset.js +0 -11
  431. package/lib/common/Embed.d.ts +0 -15
  432. package/lib/common/Embed.js +0 -10
  433. package/lib/common/HexaColorCode.d.ts +0 -4
  434. package/lib/common/HexaColorCode.js +0 -7
  435. package/lib/common/UUID.d.ts +0 -6
  436. package/lib/common/UUID.js +0 -8
  437. package/lib/common/WidgetKey.d.ts +0 -3
  438. package/lib/common/WidgetKey.js +0 -8
  439. package/lib/common/index.d.ts +0 -3
  440. package/lib/common/index.js +0 -6
  441. package/lib/content/Document.d.ts +0 -11813
  442. package/lib/content/Document.js +0 -364
  443. package/lib/content/LegacyContentCtx.d.ts +0 -64
  444. package/lib/content/LegacyContentCtx.js +0 -130
  445. package/lib/content/fields/EmptyContent.d.ts +0 -16
  446. package/lib/content/fields/EmptyContent.js +0 -30
  447. package/lib/content/fields/GroupContent.d.ts +0 -53
  448. package/lib/content/fields/GroupContent.js +0 -307
  449. package/lib/content/fields/UIDContent.d.ts +0 -16
  450. package/lib/content/fields/UIDContent.js +0 -25
  451. package/lib/content/fields/WidgetContent.d.ts +0 -11749
  452. package/lib/content/fields/WidgetContent.js +0 -57
  453. package/lib/content/fields/index.d.ts +0 -6
  454. package/lib/content/fields/index.js +0 -9
  455. package/lib/content/fields/nestable/BooleanContent.d.ts +0 -18
  456. package/lib/content/fields/nestable/BooleanContent.js +0 -35
  457. package/lib/content/fields/nestable/EmbedContent.d.ts +0 -78
  458. package/lib/content/fields/nestable/EmbedContent.js +0 -56
  459. package/lib/content/fields/nestable/FieldContent/ColorContent.d.ts +0 -18
  460. package/lib/content/fields/nestable/FieldContent/ColorContent.js +0 -35
  461. package/lib/content/fields/nestable/FieldContent/DateContent.d.ts +0 -18
  462. package/lib/content/fields/nestable/FieldContent/DateContent.js +0 -35
  463. package/lib/content/fields/nestable/FieldContent/NumberContent.d.ts +0 -18
  464. package/lib/content/fields/nestable/FieldContent/NumberContent.js +0 -35
  465. package/lib/content/fields/nestable/FieldContent/RangeContent.d.ts +0 -18
  466. package/lib/content/fields/nestable/FieldContent/RangeContent.js +0 -35
  467. package/lib/content/fields/nestable/FieldContent/SelectContent.d.ts +0 -20
  468. package/lib/content/fields/nestable/FieldContent/SelectContent.js +0 -46
  469. package/lib/content/fields/nestable/FieldContent/TextContent.d.ts +0 -18
  470. package/lib/content/fields/nestable/FieldContent/TextContent.js +0 -35
  471. package/lib/content/fields/nestable/FieldContent/TimestampContent.d.ts +0 -18
  472. package/lib/content/fields/nestable/FieldContent/TimestampContent.js +0 -35
  473. package/lib/content/fields/nestable/FieldContent/common.d.ts +0 -1
  474. package/lib/content/fields/nestable/FieldContent/common.js +0 -4
  475. package/lib/content/fields/nestable/FieldContent/index.d.ts +0 -49
  476. package/lib/content/fields/nestable/FieldContent/index.js +0 -38
  477. package/lib/content/fields/nestable/GeoPointContent.d.ts +0 -33
  478. package/lib/content/fields/nestable/GeoPointContent.js +0 -31
  479. package/lib/content/fields/nestable/ImageContent.d.ts +0 -252
  480. package/lib/content/fields/nestable/ImageContent.js +0 -122
  481. package/lib/content/fields/nestable/IntegrationFieldContent.d.ts +0 -16
  482. package/lib/content/fields/nestable/IntegrationFieldContent.js +0 -28
  483. package/lib/content/fields/nestable/LinkContent.d.ts +0 -919
  484. package/lib/content/fields/nestable/LinkContent.js +0 -399
  485. package/lib/content/fields/nestable/NestableContent.d.ts +0 -1953
  486. package/lib/content/fields/nestable/NestableContent.js +0 -167
  487. package/lib/content/fields/nestable/RepeatableContent.d.ts +0 -182
  488. package/lib/content/fields/nestable/RepeatableContent.js +0 -146
  489. package/lib/content/fields/nestable/RichTextContent/Blocks.d.ts +0 -1261
  490. package/lib/content/fields/nestable/RichTextContent/Blocks.js +0 -170
  491. package/lib/content/fields/nestable/RichTextContent/index.d.ts +0 -1004
  492. package/lib/content/fields/nestable/RichTextContent/index.js +0 -28
  493. package/lib/content/fields/nestable/SeparatorContent.d.ts +0 -13
  494. package/lib/content/fields/nestable/SeparatorContent.js +0 -22
  495. package/lib/content/fields/nestable/TableContent.d.ts +0 -776
  496. package/lib/content/fields/nestable/TableContent.js +0 -167
  497. package/lib/content/fields/nestable/index.d.ts +0 -12
  498. package/lib/content/fields/nestable/index.js +0 -15
  499. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +0 -3934
  500. package/lib/content/fields/slices/Slice/CompositeSliceContent.js +0 -195
  501. package/lib/content/fields/slices/Slice/RepeatableContent.d.ts +0 -774
  502. package/lib/content/fields/slices/Slice/RepeatableContent.js +0 -21
  503. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +0 -3937
  504. package/lib/content/fields/slices/Slice/SharedSliceContent.js +0 -215
  505. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +0 -1962
  506. package/lib/content/fields/slices/Slice/SimpleSliceContent.js +0 -130
  507. package/lib/content/fields/slices/Slice/SlicePrimaryContent.d.ts +0 -1952
  508. package/lib/content/fields/slices/Slice/SlicePrimaryContent.js +0 -30
  509. package/lib/content/fields/slices/Slice/index.d.ts +0 -6810
  510. package/lib/content/fields/slices/Slice/index.js +0 -45
  511. package/lib/content/fields/slices/SliceItem.d.ts +0 -6846
  512. package/lib/content/fields/slices/SliceItem.js +0 -116
  513. package/lib/content/fields/slices/SlicesContent.d.ts +0 -9827
  514. package/lib/content/fields/slices/SlicesContent.js +0 -465
  515. package/lib/content/fields/slices/index.d.ts +0 -3
  516. package/lib/content/fields/slices/index.js +0 -6
  517. package/lib/content/fields/withDefaultValues.d.ts +0 -9
  518. package/lib/content/fields/withDefaultValues.js +0 -79
  519. package/lib/content/helpers.d.ts +0 -9
  520. package/lib/content/helpers.js +0 -22
  521. package/lib/content/index.d.ts +0 -4
  522. package/lib/content/index.js +0 -7
  523. package/lib/content/utils.d.ts +0 -50
  524. package/lib/content/utils.js +0 -35
  525. package/lib/customtypes/CustomType.d.ts +0 -3680
  526. package/lib/customtypes/CustomType.js +0 -184
  527. package/lib/customtypes/Section.d.ts +0 -3635
  528. package/lib/customtypes/Section.js +0 -66
  529. package/lib/customtypes/diff/Changes.d.ts +0 -17
  530. package/lib/customtypes/diff/Changes.js +0 -9
  531. package/lib/customtypes/diff/SharedSlice.d.ts +0 -1624
  532. package/lib/customtypes/diff/SharedSlice.js +0 -55
  533. package/lib/customtypes/diff/Variation.d.ts +0 -1605
  534. package/lib/customtypes/diff/Variation.js +0 -113
  535. package/lib/customtypes/diff/Widgets.d.ts +0 -11
  536. package/lib/customtypes/diff/Widgets.js +0 -2
  537. package/lib/customtypes/diff/index.d.ts +0 -4
  538. package/lib/customtypes/diff/index.js +0 -7
  539. package/lib/customtypes/index.d.ts +0 -4
  540. package/lib/customtypes/index.js +0 -7
  541. package/lib/customtypes/widgets/Group.d.ts +0 -1352
  542. package/lib/customtypes/widgets/Group.js +0 -92
  543. package/lib/customtypes/widgets/UID.d.ts +0 -19
  544. package/lib/customtypes/widgets/UID.js +0 -21
  545. package/lib/customtypes/widgets/Widget.d.ts +0 -4457
  546. package/lib/customtypes/widgets/Widget.js +0 -49
  547. package/lib/customtypes/widgets/index.d.ts +0 -6
  548. package/lib/customtypes/widgets/index.js +0 -9
  549. package/lib/customtypes/widgets/nestable/BooleanField.d.ts +0 -20
  550. package/lib/customtypes/widgets/nestable/BooleanField.js +0 -21
  551. package/lib/customtypes/widgets/nestable/Color.d.ts +0 -17
  552. package/lib/customtypes/widgets/nestable/Color.js +0 -20
  553. package/lib/customtypes/widgets/nestable/Date.d.ts +0 -19
  554. package/lib/customtypes/widgets/nestable/Date.js +0 -21
  555. package/lib/customtypes/widgets/nestable/Embed.d.ts +0 -19
  556. package/lib/customtypes/widgets/nestable/Embed.js +0 -21
  557. package/lib/customtypes/widgets/nestable/GeoPoint.d.ts +0 -15
  558. package/lib/customtypes/widgets/nestable/GeoPoint.js +0 -19
  559. package/lib/customtypes/widgets/nestable/Image.d.ts +0 -44
  560. package/lib/customtypes/widgets/nestable/Image.js +0 -29
  561. package/lib/customtypes/widgets/nestable/IntegrationField.d.ts +0 -19
  562. package/lib/customtypes/widgets/nestable/IntegrationField.js +0 -21
  563. package/lib/customtypes/widgets/nestable/Link.d.ts +0 -196
  564. package/lib/customtypes/widgets/nestable/Link.js +0 -167
  565. package/lib/customtypes/widgets/nestable/NestableWidget.d.ts +0 -217
  566. package/lib/customtypes/widgets/nestable/NestableWidget.js +0 -39
  567. package/lib/customtypes/widgets/nestable/Number.d.ts +0 -23
  568. package/lib/customtypes/widgets/nestable/Number.js +0 -24
  569. package/lib/customtypes/widgets/nestable/Range.d.ts +0 -23
  570. package/lib/customtypes/widgets/nestable/Range.js +0 -24
  571. package/lib/customtypes/widgets/nestable/RichText.d.ts +0 -73
  572. package/lib/customtypes/widgets/nestable/RichText.js +0 -131
  573. package/lib/customtypes/widgets/nestable/Select.d.ts +0 -21
  574. package/lib/customtypes/widgets/nestable/Select.js +0 -22
  575. package/lib/customtypes/widgets/nestable/Separator.d.ts +0 -14
  576. package/lib/customtypes/widgets/nestable/Separator.js +0 -18
  577. package/lib/customtypes/widgets/nestable/Table.d.ts +0 -21
  578. package/lib/customtypes/widgets/nestable/Table.js +0 -30
  579. package/lib/customtypes/widgets/nestable/Text.d.ts +0 -19
  580. package/lib/customtypes/widgets/nestable/Text.js +0 -21
  581. package/lib/customtypes/widgets/nestable/Timestamp.d.ts +0 -19
  582. package/lib/customtypes/widgets/nestable/Timestamp.js +0 -21
  583. package/lib/customtypes/widgets/nestable/index.d.ts +0 -17
  584. package/lib/customtypes/widgets/nestable/index.js +0 -20
  585. package/lib/customtypes/widgets/shared/ImageConstraint.d.ts +0 -7
  586. package/lib/customtypes/widgets/shared/ImageConstraint.js +0 -31
  587. package/lib/customtypes/widgets/shared/index.d.ts +0 -1
  588. package/lib/customtypes/widgets/shared/index.js +0 -8
  589. package/lib/customtypes/widgets/slices/CompositeSlice.d.ts +0 -455
  590. package/lib/customtypes/widgets/slices/CompositeSlice.js +0 -63
  591. package/lib/customtypes/widgets/slices/LegacySlice.d.ts +0 -442
  592. package/lib/customtypes/widgets/slices/LegacySlice.js +0 -12
  593. package/lib/customtypes/widgets/slices/SharedSlice.d.ts +0 -1807
  594. package/lib/customtypes/widgets/slices/SharedSlice.js +0 -118
  595. package/lib/customtypes/widgets/slices/SharedSliceRef.d.ts +0 -5
  596. package/lib/customtypes/widgets/slices/SharedSliceRef.js +0 -9
  597. package/lib/customtypes/widgets/slices/Slice.d.ts +0 -6
  598. package/lib/customtypes/widgets/slices/Slice.js +0 -2
  599. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.d.ts +0 -1259
  600. package/lib/customtypes/widgets/slices/SlicePrimaryWidget.js +0 -10
  601. package/lib/customtypes/widgets/slices/Slices.d.ts +0 -5917
  602. package/lib/customtypes/widgets/slices/Slices.js +0 -146
  603. package/lib/customtypes/widgets/slices/SlicesTypes.d.ts +0 -6
  604. package/lib/customtypes/widgets/slices/SlicesTypes.js +0 -11
  605. package/lib/customtypes/widgets/slices/index.d.ts +0 -8
  606. package/lib/customtypes/widgets/slices/index.js +0 -11
  607. package/lib/utils/Arrays.d.ts +0 -1
  608. package/lib/utils/Arrays.js +0 -13
  609. package/lib/utils/DocumentId.d.ts +0 -2
  610. package/lib/utils/DocumentId.js +0 -7
  611. package/lib/utils/Fields.d.ts +0 -6
  612. package/lib/utils/Fields.js +0 -2
  613. package/lib/utils/Objects.d.ts +0 -8
  614. package/lib/utils/Objects.js +0 -42
  615. package/lib/utils/index.d.ts +0 -4
  616. package/lib/utils/index.js +0 -8
  617. package/lib/validators/BasicTypes.d.ts +0 -10
  618. package/lib/validators/BasicTypes.js +0 -25
  619. package/lib/validators/DateFromString.d.ts +0 -3
  620. package/lib/validators/DateFromString.js +0 -11
  621. package/lib/validators/DateFromStringOrNumber.d.ts +0 -3
  622. package/lib/validators/DateFromStringOrNumber.js +0 -10
  623. package/lib/validators/DateFromTsMs.d.ts +0 -3
  624. package/lib/validators/DateFromTsMs.js +0 -10
  625. package/lib/validators/DefaultOrElse.d.ts +0 -5
  626. package/lib/validators/DefaultOrElse.js +0 -21
  627. package/lib/validators/IntFromNumber.d.ts +0 -5
  628. package/lib/validators/IntFromNumber.js +0 -14
  629. package/lib/validators/IntFromPixels.d.ts +0 -8
  630. package/lib/validators/IntFromPixels.js +0 -24
  631. package/lib/validators/NonEmptyString.d.ts +0 -3
  632. package/lib/validators/NonEmptyString.js +0 -6
  633. package/lib/validators/NonEmptyStringOrNull.d.ts +0 -3
  634. package/lib/validators/NonEmptyStringOrNull.js +0 -15
  635. package/lib/validators/NumberOrNull.d.ts +0 -3
  636. package/lib/validators/NumberOrNull.js +0 -6
  637. package/lib/validators/NumberRange.d.ts +0 -32
  638. package/lib/validators/NumberRange.js +0 -40
  639. package/lib/validators/StringFromBoolean.d.ts +0 -5
  640. package/lib/validators/StringFromBoolean.js +0 -10
  641. package/lib/validators/StringFromNumber.d.ts +0 -5
  642. package/lib/validators/StringFromNumber.js +0 -10
  643. package/lib/validators/StringOrNull.d.ts +0 -3
  644. package/lib/validators/StringOrNull.js +0 -6
  645. package/lib/validators/TrimmedString.d.ts +0 -5
  646. package/lib/validators/TrimmedString.js +0 -23
  647. package/lib/validators/function.d.ts +0 -34
  648. package/lib/validators/function.js +0 -100
  649. package/lib/validators/index.d.ts +0 -15
  650. package/lib/validators/index.js +0 -31
  651. package/src/common/Asset.ts +0 -25
  652. package/src/common/Embed.ts +0 -22
  653. package/src/common/HexaColorCode.ts +0 -11
  654. package/src/common/UUID.ts +0 -19
  655. package/src/common/WidgetKey.ts +0 -13
  656. package/src/common/index.ts +0 -3
  657. package/src/content/Document.ts +0 -539
  658. package/src/content/fields/EmptyContent.ts +0 -45
  659. package/src/content/fields/GroupContent.ts +0 -466
  660. package/src/content/fields/UIDContent.ts +0 -42
  661. package/src/content/fields/WidgetContent.ts +0 -76
  662. package/src/content/fields/index.ts +0 -6
  663. package/src/content/fields/nestable/BooleanContent.ts +0 -52
  664. package/src/content/fields/nestable/EmbedContent.ts +0 -74
  665. package/src/content/fields/nestable/FieldContent/ColorContent.ts +0 -49
  666. package/src/content/fields/nestable/FieldContent/DateContent.ts +0 -49
  667. package/src/content/fields/nestable/FieldContent/NumberContent.ts +0 -49
  668. package/src/content/fields/nestable/FieldContent/RangeContent.ts +0 -49
  669. package/src/content/fields/nestable/FieldContent/SelectContent.ts +0 -60
  670. package/src/content/fields/nestable/FieldContent/TextContent.ts +0 -49
  671. package/src/content/fields/nestable/FieldContent/TimestampContent.ts +0 -49
  672. package/src/content/fields/nestable/FieldContent/common.ts +0 -1
  673. package/src/content/fields/nestable/FieldContent/index.ts +0 -40
  674. package/src/content/fields/nestable/GeoPointContent.ts +0 -48
  675. package/src/content/fields/nestable/ImageContent.ts +0 -196
  676. package/src/content/fields/nestable/IntegrationFieldContent.ts +0 -51
  677. package/src/content/fields/nestable/LinkContent.ts +0 -651
  678. package/src/content/fields/nestable/NestableContent.ts +0 -241
  679. package/src/content/fields/nestable/RepeatableContent.ts +0 -224
  680. package/src/content/fields/nestable/RichTextContent/Blocks.ts +0 -238
  681. package/src/content/fields/nestable/RichTextContent/index.ts +0 -42
  682. package/src/content/fields/nestable/SeparatorContent.ts +0 -34
  683. package/src/content/fields/nestable/TableContent.ts +0 -234
  684. package/src/content/fields/nestable/index.ts +0 -12
  685. package/src/content/fields/slices/Slice/CompositeSliceContent.ts +0 -293
  686. package/src/content/fields/slices/Slice/RepeatableContent.ts +0 -29
  687. package/src/content/fields/slices/Slice/SharedSliceContent.ts +0 -305
  688. package/src/content/fields/slices/Slice/SimpleSliceContent.ts +0 -180
  689. package/src/content/fields/slices/Slice/SlicePrimaryContent.ts +0 -40
  690. package/src/content/fields/slices/Slice/index.ts +0 -52
  691. package/src/content/fields/slices/SliceItem.ts +0 -184
  692. package/src/content/fields/slices/SlicesContent.ts +0 -677
  693. package/src/content/fields/slices/index.ts +0 -3
  694. package/src/content/helpers.ts +0 -25
  695. package/src/content/index.ts +0 -4
  696. package/src/content/utils.ts +0 -145
  697. package/src/customtypes/CustomType.ts +0 -280
  698. package/src/customtypes/Section.ts +0 -98
  699. package/src/customtypes/diff/Variation.ts +0 -167
  700. package/src/customtypes/diff/Widgets.ts +0 -17
  701. package/src/customtypes/diff/index.ts +0 -4
  702. package/src/customtypes/index.ts +0 -4
  703. package/src/customtypes/widgets/Group.ts +0 -120
  704. package/src/customtypes/widgets/UID.ts +0 -27
  705. package/src/customtypes/widgets/Widget.ts +0 -83
  706. package/src/customtypes/widgets/index.ts +0 -6
  707. package/src/customtypes/widgets/nestable/BooleanField.ts +0 -29
  708. package/src/customtypes/widgets/nestable/Color.ts +0 -25
  709. package/src/customtypes/widgets/nestable/Date.ts +0 -27
  710. package/src/customtypes/widgets/nestable/Embed.ts +0 -27
  711. package/src/customtypes/widgets/nestable/GeoPoint.ts +0 -25
  712. package/src/customtypes/widgets/nestable/Image.ts +0 -39
  713. package/src/customtypes/widgets/nestable/IntegrationField.ts +0 -26
  714. package/src/customtypes/widgets/nestable/Link.ts +0 -313
  715. package/src/customtypes/widgets/nestable/NestableWidget.ts +0 -40
  716. package/src/customtypes/widgets/nestable/Number.ts +0 -30
  717. package/src/customtypes/widgets/nestable/Range.ts +0 -30
  718. package/src/customtypes/widgets/nestable/RichText.ts +0 -215
  719. package/src/customtypes/widgets/nestable/Select.ts +0 -34
  720. package/src/customtypes/widgets/nestable/Separator.ts +0 -24
  721. package/src/customtypes/widgets/nestable/Table.ts +0 -38
  722. package/src/customtypes/widgets/nestable/Text.ts +0 -27
  723. package/src/customtypes/widgets/nestable/Timestamp.ts +0 -27
  724. package/src/customtypes/widgets/nestable/index.ts +0 -17
  725. package/src/customtypes/widgets/shared/ImageConstraint.ts +0 -41
  726. package/src/customtypes/widgets/shared/index.ts +0 -1
  727. package/src/customtypes/widgets/slices/CompositeSlice.ts +0 -79
  728. package/src/customtypes/widgets/slices/LegacySlice.ts +0 -15
  729. package/src/customtypes/widgets/slices/SharedSlice.ts +0 -152
  730. package/src/customtypes/widgets/slices/SharedSliceRef.ts +0 -10
  731. package/src/customtypes/widgets/slices/Slice.ts +0 -7
  732. package/src/customtypes/widgets/slices/SlicePrimaryWidget.ts +0 -12
  733. package/src/customtypes/widgets/slices/Slices.ts +0 -184
  734. package/src/customtypes/widgets/slices/SlicesTypes.ts +0 -11
  735. package/src/customtypes/widgets/slices/index.ts +0 -8
  736. package/src/utils/Arrays.ts +0 -12
  737. package/src/utils/DocumentId.ts +0 -8
  738. package/src/utils/Fields.ts +0 -4
  739. package/src/utils/Objects.ts +0 -53
  740. package/src/utils/index.ts +0 -4
  741. package/src/validators/BasicTypes.ts +0 -55
  742. package/src/validators/DateFromString.ts +0 -19
  743. package/src/validators/DateFromStringOrNumber.ts +0 -17
  744. package/src/validators/DateFromTsMs.ts +0 -17
  745. package/src/validators/DefaultOrElse.ts +0 -24
  746. package/src/validators/IntFromNumber.ts +0 -22
  747. package/src/validators/IntFromPixels.ts +0 -32
  748. package/src/validators/NonEmptyString.ts +0 -8
  749. package/src/validators/NonEmptyStringOrNull.ts +0 -22
  750. package/src/validators/NumberOrNull.ts +0 -5
  751. package/src/validators/NumberRange.ts +0 -51
  752. package/src/validators/StringFromBoolean.ts +0 -19
  753. package/src/validators/StringFromNumber.ts +0 -19
  754. package/src/validators/StringOrNull.ts +0 -5
  755. package/src/validators/TrimmedString.ts +0 -33
  756. package/src/validators/function.ts +0 -115
  757. package/src/validators/index.ts +0 -15
  758. /package/src/{customtypes/diff/Changes.ts → model/diff/changes.ts} +0 -0
@@ -0,0 +1,155 @@
1
+ import type { GroupModel } from "../group"
2
+ import { GroupFieldType } from "../group"
3
+ import type { NestableModel } from "../nestable"
4
+ import type { SharedSliceVariation } from "../slice"
5
+ import { type DiffChange, DiffOperation } from "./changes"
6
+ import { isNotEmpty, zipObjects } from "./utils"
7
+ import type {
8
+ GroupWidgetWithFieldsDiff,
9
+ NestableWidgetDiff,
10
+ SlicePrimaryWidgetDiff,
11
+ } from "./widgets"
12
+
13
+ export type VariationMetadata = Omit<SharedSliceVariation, "primary" | "items">
14
+ export type VariationDiff = DiffChange<
15
+ SharedSliceVariation,
16
+ Partial<VariationMetadata> & {
17
+ primary?: Record<string, SlicePrimaryWidgetDiff>
18
+ items?: Record<string, NestableWidgetDiff>
19
+ }
20
+ >
21
+
22
+ function compareVariationMeta(
23
+ variationA?: SharedSliceVariation,
24
+ variationB?: SharedSliceVariation,
25
+ ): Partial<VariationMetadata> {
26
+ const zippedVariations = zipObjects(variationA, variationB)
27
+
28
+ return Object.entries(zippedVariations).reduce((acc, [key, value]) => {
29
+ if (key === "primary" || key === "items") return acc
30
+
31
+ if (value?.left === value?.right) return acc
32
+ return { ...acc, [key]: value?.right }
33
+ }, {})
34
+ }
35
+
36
+ function compareWidgets<TWidget extends NestableModel | GroupModel>(
37
+ widgetsA?: { [key: string]: TWidget },
38
+ widgetsB?: { [key: string]: TWidget },
39
+ ):
40
+ | Record<string, TWidget extends GroupModel ? SlicePrimaryWidgetDiff : NestableWidgetDiff>
41
+ | undefined {
42
+ const zippedWidgets = zipObjects(widgetsA, widgetsB)
43
+
44
+ const diffWidgets = Object.entries(zippedWidgets).reduce((acc, [widgetKey, widgetValue]) => {
45
+ if (JSON.stringify(widgetValue?.left) === JSON.stringify(widgetValue?.right)) return acc
46
+
47
+ const changes = (() => {
48
+ if (!widgetValue?.left && !widgetValue?.right) return
49
+
50
+ if (widgetValue?.left && !widgetValue.right) {
51
+ return {
52
+ op: DiffOperation.Removed,
53
+ }
54
+ }
55
+
56
+ if (!widgetValue?.left && widgetValue?.right) {
57
+ if (widgetValue.right?.type === GroupFieldType) {
58
+ const group: GroupWidgetWithFieldsDiff = {
59
+ ...widgetValue.right,
60
+ config: {
61
+ ...widgetValue.right.config,
62
+ fields: {},
63
+ },
64
+ }
65
+ // On added groups, this basically marks all fields in the group as added
66
+ group.config.fields = compareWidgets(undefined, widgetValue.right.config?.fields) || {}
67
+
68
+ return {
69
+ op: DiffOperation.Added,
70
+ value: group,
71
+ }
72
+ }
73
+
74
+ return {
75
+ op: DiffOperation.Added,
76
+ value: widgetValue.right,
77
+ }
78
+ }
79
+
80
+ if (widgetValue.right?.type === GroupFieldType) {
81
+ const group: GroupWidgetWithFieldsDiff = {
82
+ ...widgetValue.right,
83
+ config: {
84
+ ...widgetValue.right.config,
85
+ fields: {},
86
+ },
87
+ }
88
+ // On updated groups, this also compares the fields inside the group
89
+ group.config.fields =
90
+ compareWidgets(
91
+ widgetValue.left?.type === GroupFieldType
92
+ ? widgetValue.left?.config?.fields
93
+ : undefined,
94
+ widgetValue.right.config?.fields,
95
+ ) || {}
96
+
97
+ return {
98
+ op: DiffOperation.Updated,
99
+ value: group,
100
+ }
101
+ }
102
+
103
+ return {
104
+ op: DiffOperation.Updated,
105
+ value: widgetValue.right,
106
+ }
107
+ })()
108
+
109
+ if (!changes) return acc
110
+
111
+ return {
112
+ ...acc,
113
+ [widgetKey]: changes,
114
+ }
115
+ }, {})
116
+
117
+ return isNotEmpty(diffWidgets) ? diffWidgets : undefined
118
+ }
119
+
120
+ export const VariationComparator = {
121
+ compare(
122
+ variationA?: SharedSliceVariation,
123
+ variationB?: SharedSliceVariation,
124
+ ): VariationDiff | undefined {
125
+ if (variationA && !variationB)
126
+ return {
127
+ op: DiffOperation.Removed,
128
+ }
129
+ if (!variationA && variationB) {
130
+ return {
131
+ op: DiffOperation.Added,
132
+ value: variationB,
133
+ }
134
+ }
135
+
136
+ const diffMeta = compareVariationMeta(variationA, variationB)
137
+
138
+ const diffPrimary = compareWidgets(variationA?.primary, variationB?.primary)
139
+ const diffItems = compareWidgets(variationA?.items, variationB?.items)
140
+
141
+ const diffVariation = {
142
+ ...diffMeta,
143
+ ...(diffPrimary ? { primary: diffPrimary } : {}),
144
+ ...(diffItems ? { items: diffItems } : {}),
145
+ }
146
+
147
+ if (isNotEmpty(diffVariation)) {
148
+ return {
149
+ op: DiffOperation.Updated,
150
+ value: diffVariation,
151
+ }
152
+ }
153
+ return undefined
154
+ },
155
+ }
@@ -0,0 +1,15 @@
1
+ import type { GroupModel } from "../group"
2
+ import type { NestableModel } from "../nestable"
3
+ import type { DiffChange } from "./changes"
4
+
5
+ export type NestableWidgetDiff = DiffChange<NestableModel, NestableModel>
6
+
7
+ export type GroupWidgetWithFieldsDiff = Omit<GroupModel, "config"> & {
8
+ config: Omit<NonNullable<GroupModel["config"]>, "fields"> & {
9
+ fields?: Record<string, GroupWidgetDiff | NestableWidgetDiff>
10
+ }
11
+ }
12
+
13
+ export type GroupWidgetDiff = DiffChange<GroupWidgetWithFieldsDiff, GroupWidgetWithFieldsDiff>
14
+
15
+ export type SlicePrimaryWidgetDiff = NestableWidgetDiff | GroupWidgetDiff
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const EmbedConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ useAsTitle: z.optional(z.boolean()),
7
+ })
8
+
9
+ export const EmbedModelSchema = z.object({
10
+ type: z.literal("Embed"),
11
+ fieldset: z.nullish(z.string()),
12
+ config: z.optional(EmbedConfigSchema),
13
+ })
14
+
15
+ export type EmbedModel = z.infer<typeof EmbedModelSchema>
@@ -0,0 +1,13 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const GeoPointConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ })
6
+
7
+ export const GeoPointModelSchema = z.object({
8
+ type: z.literal("GeoPoint"),
9
+ fieldset: z.nullish(z.string()),
10
+ config: z.optional(GeoPointConfigSchema),
11
+ })
12
+
13
+ export type GeoPointModel = z.infer<typeof GeoPointModelSchema>
@@ -0,0 +1,39 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { WidgetKeySchema } from "../common/widgetKey"
4
+ import type { NestableModel } from "./nestable"
5
+ import { NestableModelSchema } from "./nestable"
6
+
7
+ export const GroupFieldType = "Group"
8
+
9
+ // Factory to create group config schema with configurable widget types
10
+ const createGroupConfigSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
11
+ z.object({
12
+ label: z.nullish(z.string()),
13
+ repeat: z.optional(z.boolean()),
14
+ fields: z.optional(z.record(WidgetKeySchema, widgets)),
15
+ })
16
+
17
+ // Factory to create group schema with configurable widget types
18
+ const createGroupSchema = <TWidgets extends z.ZodMiniType>(widgets: TWidgets) =>
19
+ z.object({
20
+ type: z.literal(GroupFieldType),
21
+ fieldset: z.nullish(z.string()),
22
+ icon: z.optional(z.string()),
23
+ description: z.optional(z.string()),
24
+ config: z.optional(createGroupConfigSchema(widgets)),
25
+ })
26
+
27
+ // NestedGroup - only allows Nestable in fields (no further nesting)
28
+ export const NestedGroupModelSchema = createGroupSchema(NestableModelSchema)
29
+
30
+ export type NestedGroupModel = z.infer<typeof NestedGroupModelSchema>
31
+
32
+ // Group - allows Nestable | NestedGroup in fields (max 2 levels of nesting)
33
+ export const GroupModelSchema = createGroupSchema(
34
+ z.union([NestableModelSchema, NestedGroupModelSchema]) as z.ZodMiniType<
35
+ NestableModel | NestedGroupModel
36
+ >,
37
+ )
38
+
39
+ export type GroupModel = z.infer<typeof GroupModelSchema>
@@ -0,0 +1,54 @@
1
+ import { z } from "zod/mini"
2
+
3
+ /**
4
+ * SideConstraint accepts multiple input formats and normalizes to number | null:
5
+ * - Integer values
6
+ * - String integers (e.g., "100")
7
+ * - Pixel strings (e.g., "100px")
8
+ * - "auto" or "" → null
9
+ * - null
10
+ */
11
+ export const SideConstraintSchema: z.ZodMiniType<number | null> = z.union([
12
+ z.pipe(
13
+ z.literal("auto"),
14
+ z.transform(() => null),
15
+ ),
16
+ z.pipe(
17
+ z.literal(""),
18
+ z.transform(() => null),
19
+ ),
20
+ z.null(),
21
+ z.number().check(z.int()),
22
+ z.pipe(
23
+ z.string(),
24
+ z.transform((s: string) => parseInt(s.replace("px", ""), 10)),
25
+ ),
26
+ ])
27
+
28
+ export const ImageConstraintSchema = z.object({
29
+ width: z.optional(SideConstraintSchema),
30
+ height: z.optional(SideConstraintSchema),
31
+ })
32
+
33
+ export type ImageConstraint = z.infer<typeof ImageConstraintSchema>
34
+
35
+ const ThumbnailSchema = z.object({
36
+ name: z.string(),
37
+ width: z.optional(SideConstraintSchema),
38
+ height: z.optional(SideConstraintSchema),
39
+ })
40
+
41
+ const ImageConfigSchema = z.object({
42
+ label: z.nullish(z.string()),
43
+ placeholder: z.optional(z.string()),
44
+ constraint: z.optional(ImageConstraintSchema),
45
+ thumbnails: z.optional(z.array(ThumbnailSchema)),
46
+ })
47
+
48
+ export const ImageModelSchema = z.object({
49
+ type: z.literal("Image"),
50
+ fieldset: z.nullish(z.string()),
51
+ config: z.optional(ImageConfigSchema),
52
+ })
53
+
54
+ export type ImageModel = z.infer<typeof ImageModelSchema>
@@ -0,0 +1,15 @@
1
+ import { z } from "zod/mini"
2
+
3
+ const IntegrationFieldConfigSchema = z.object({
4
+ label: z.nullish(z.string()),
5
+ placeholder: z.optional(z.string()),
6
+ catalog: z.optional(z.string()),
7
+ })
8
+
9
+ export const IntegrationFieldModelSchema = z.object({
10
+ type: z.literal("IntegrationFields"),
11
+ fieldset: z.nullish(z.string()),
12
+ config: z.optional(IntegrationFieldConfigSchema),
13
+ })
14
+
15
+ export type IntegrationFieldModel = z.infer<typeof IntegrationFieldModelSchema>
@@ -0,0 +1,141 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts string | string[], normalizes string to [string]
4
+ const MasksArrayStringSchema = z.pipe(
5
+ z.union([z.array(z.string()), z.string()]),
6
+ z.transform((val): string[] => (typeof val === "string" ? [val] : val)),
7
+ )
8
+
9
+ // --- CustomTypes hierarchy (field selection in content relationship fields) ---
10
+
11
+ // Level 2
12
+
13
+ const noDuplicateStrings = z.refine(
14
+ (arr) => new Set(arr as string[]).size === (arr as string[]).length,
15
+ "Fields have duplicates.",
16
+ )
17
+
18
+ const CustomTypeLevel2FieldGroupFieldsSchema = z.array(z.string()).check(noDuplicateStrings)
19
+
20
+ const CustomTypeLevel2FieldSchema = z.union([
21
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldGroupFieldsSchema }),
22
+ z.string(),
23
+ ])
24
+
25
+ const noDuplicateIds = (items: unknown) => {
26
+ const arr = items as { id: string }[] | string[]
27
+ const ids = new Set(arr.map((item) => (typeof item === "string" ? item : item.id)))
28
+ return ids.size === arr.length
29
+ }
30
+
31
+ const CustomTypeLevel2FieldsSchema = z
32
+ .array(CustomTypeLevel2FieldSchema)
33
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
34
+
35
+ const CustomTypeLevel2Schema = z.union([
36
+ z.string(),
37
+ z.object({ id: z.string(), fields: CustomTypeLevel2FieldsSchema }),
38
+ ])
39
+
40
+ const CustomTypesLevel2Schema = z
41
+ .array(CustomTypeLevel2Schema)
42
+ .check(z.refine(noDuplicateIds, "Custom types have duplicates."))
43
+
44
+ // Level 1
45
+
46
+ const CustomTypeLevel1FieldCustomTypesSchema = z.object({
47
+ id: z.string(),
48
+ customtypes: CustomTypesLevel2Schema,
49
+ })
50
+
51
+ const CustomTypeLevel1FieldGroupFieldSchema = z.union([
52
+ CustomTypeLevel1FieldCustomTypesSchema,
53
+ z.string(),
54
+ ])
55
+
56
+ const CustomTypeLevel1FieldGroupFieldsSchema = z
57
+ .array(CustomTypeLevel1FieldGroupFieldSchema)
58
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
59
+
60
+ const CustomTypeLevel1FieldSchema = z.union([
61
+ z.object({
62
+ id: z.string(),
63
+ fields: CustomTypeLevel1FieldGroupFieldsSchema,
64
+ }),
65
+ CustomTypeLevel1FieldCustomTypesSchema,
66
+ z.string(),
67
+ ])
68
+
69
+ const CustomTypeLevel1FieldsSchema = z
70
+ .array(CustomTypeLevel1FieldSchema)
71
+ .check(z.refine(noDuplicateIds, "Fields have duplicates."))
72
+
73
+ const CustomTypeLevel1Schema = z.union([
74
+ z.string(),
75
+ z.object({ id: z.string(), fields: CustomTypeLevel1FieldsSchema }),
76
+ ])
77
+
78
+ const CustomTypesSchema = z.array(CustomTypeLevel1Schema).check(({ value, issues }) => {
79
+ const cts = value as ({ id: string } | string)[]
80
+ const push = (message: string) => issues.push({ code: "custom", input: value, message })
81
+ const strings = new Set<string>()
82
+ const objects = new Set<string>()
83
+ for (const ct of cts) {
84
+ let failed = false
85
+ if (typeof ct === "string") {
86
+ failed = objects.has(ct)
87
+ strings.add(ct)
88
+ } else {
89
+ const { id } = ct
90
+ failed = strings.has(id) || objects.has(id)
91
+ objects.add(id)
92
+ }
93
+ if (failed) {
94
+ push("Custom types have duplicates.")
95
+ return
96
+ }
97
+ }
98
+ if (objects.size > 1) {
99
+ push("Cannot have multiple custom types with fields selection.")
100
+ return
101
+ }
102
+ if (strings.size > 0 && objects.size > 0) {
103
+ push("Cannot mix custom types as strings and objects with fields.")
104
+ }
105
+ })
106
+
107
+ // --- Select with fallback to null ---
108
+
109
+ const SelectWithFallbackSchema = z.pipe(
110
+ z.unknown(),
111
+ z.transform((val): "media" | "document" | "web" | null => {
112
+ if (val === "media" || val === "document" || val === "web" || val === null) {
113
+ return val
114
+ }
115
+ return null
116
+ }),
117
+ )
118
+
119
+ // --- LinkConfig and Link ---
120
+
121
+ const LinkConfigSchema = z.object({
122
+ label: z.nullish(z.string()),
123
+ useAsTitle: z.optional(z.boolean()),
124
+ placeholder: z.optional(z.string()),
125
+ select: z.optional(SelectWithFallbackSchema),
126
+ customtypes: z.optional(CustomTypesSchema),
127
+ masks: z.optional(MasksArrayStringSchema),
128
+ tags: z.optional(MasksArrayStringSchema),
129
+ allowTargetBlank: z.optional(z.boolean()),
130
+ allowText: z.optional(z.boolean()),
131
+ repeat: z.optional(z.boolean()),
132
+ variants: z.optional(z.array(z.string())),
133
+ })
134
+
135
+ export const LinkModelSchema = z.object({
136
+ type: z.literal("Link"),
137
+ fieldset: z.nullish(z.string()),
138
+ config: z.optional(LinkConfigSchema),
139
+ })
140
+
141
+ export type LinkModel = z.infer<typeof LinkModelSchema>
@@ -0,0 +1,71 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import type { BooleanModel } from "./boolean"
4
+ import { BooleanModelSchema } from "./boolean"
5
+ import type { ColorModel } from "./color"
6
+ import { ColorModelSchema } from "./color"
7
+ import type { DateModel } from "./date"
8
+ import { DateModelSchema } from "./date"
9
+ import type { EmbedModel } from "./embed"
10
+ import { EmbedModelSchema } from "./embed"
11
+ import type { GeoPointModel } from "./geopoint"
12
+ import { GeoPointModelSchema } from "./geopoint"
13
+ import type { ImageModel } from "./image"
14
+ import { ImageModelSchema } from "./image"
15
+ import type { IntegrationFieldModel } from "./integrationField"
16
+ import { IntegrationFieldModelSchema } from "./integrationField"
17
+ import type { LinkModel } from "./link"
18
+ import { LinkModelSchema } from "./link"
19
+ import type { NumberModel } from "./number"
20
+ import { NumberModelSchema } from "./number"
21
+ import type { RangeModel } from "./range"
22
+ import { RangeModelSchema } from "./range"
23
+ import type { RichTextModel } from "./richText"
24
+ import { RichTextModelSchema } from "./richText"
25
+ import type { SelectModel } from "./select"
26
+ import { SelectModelSchema } from "./select"
27
+ import type { SeparatorModel } from "./separator"
28
+ import { SeparatorModelSchema } from "./separator"
29
+ import type { TableModel } from "./table"
30
+ import { TableModelSchema } from "./table"
31
+ import type { TextModel } from "./text"
32
+ import { TextModelSchema } from "./text"
33
+ import type { TimestampModel } from "./timestamp"
34
+ import { TimestampModelSchema } from "./timestamp"
35
+
36
+ export const NestableModelSchema = z.union([
37
+ BooleanModelSchema,
38
+ ColorModelSchema,
39
+ DateModelSchema,
40
+ EmbedModelSchema,
41
+ GeoPointModelSchema,
42
+ ImageModelSchema,
43
+ IntegrationFieldModelSchema,
44
+ LinkModelSchema,
45
+ NumberModelSchema,
46
+ RangeModelSchema,
47
+ RichTextModelSchema,
48
+ SelectModelSchema,
49
+ SeparatorModelSchema,
50
+ TableModelSchema,
51
+ TextModelSchema,
52
+ TimestampModelSchema,
53
+ ])
54
+
55
+ export type NestableModel =
56
+ | BooleanModel
57
+ | ColorModel
58
+ | DateModel
59
+ | EmbedModel
60
+ | GeoPointModel
61
+ | ImageModel
62
+ | IntegrationFieldModel
63
+ | LinkModel
64
+ | NumberModel
65
+ | RangeModel
66
+ | RichTextModel
67
+ | SelectModel
68
+ | SeparatorModel
69
+ | TableModel
70
+ | TextModel
71
+ | TimestampModel
@@ -0,0 +1,26 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts number directly or string that parses to number (like io-ts NumberFromString)
4
+ const NumberOrStringToNumber = z.union([
5
+ z.number(),
6
+ z.pipe(
7
+ z.string(),
8
+ z.transform((s) => Number(s)),
9
+ ),
10
+ ])
11
+
12
+ const NumberConfigSchema = z.object({
13
+ label: z.nullish(z.string()),
14
+ placeholder: z.optional(z.string()),
15
+ min: z.optional(NumberOrStringToNumber),
16
+ max: z.optional(NumberOrStringToNumber),
17
+ step: z.optional(NumberOrStringToNumber),
18
+ })
19
+
20
+ export const NumberModelSchema = z.object({
21
+ type: z.literal("Number"),
22
+ fieldset: z.nullish(z.string()),
23
+ config: z.optional(NumberConfigSchema),
24
+ })
25
+
26
+ export type NumberModel = z.infer<typeof NumberModelSchema>
@@ -0,0 +1,26 @@
1
+ import { z } from "zod/mini"
2
+
3
+ // Accepts number directly or string that parses to number (like io-ts NumberFromString)
4
+ const NumberOrStringToNumber = z.union([
5
+ z.number(),
6
+ z.pipe(
7
+ z.string(),
8
+ z.transform((s) => Number(s)),
9
+ ),
10
+ ])
11
+
12
+ const RangeConfigSchema = z.object({
13
+ label: z.nullish(z.string()),
14
+ placeholder: z.optional(z.string()),
15
+ min: z.optional(NumberOrStringToNumber),
16
+ max: z.optional(NumberOrStringToNumber),
17
+ step: z.optional(NumberOrStringToNumber),
18
+ })
19
+
20
+ export const RangeModelSchema = z.object({
21
+ type: z.literal("Range"),
22
+ fieldset: z.nullish(z.string()),
23
+ config: z.optional(RangeConfigSchema),
24
+ })
25
+
26
+ export type RangeModel = z.infer<typeof RangeModelSchema>
@@ -0,0 +1,106 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { ImageConstraintSchema } from "./image"
4
+
5
+ export const RichTextFieldType = "StructuredText"
6
+
7
+ export const DEFAULT_OPTION = "paragraph"
8
+
9
+ export const RichTextNodeType = {
10
+ heading1: "heading1",
11
+ heading2: "heading2",
12
+ heading3: "heading3",
13
+ heading4: "heading4",
14
+ heading5: "heading5",
15
+ heading6: "heading6",
16
+ paragraph: "paragraph",
17
+ preformatted: "preformatted",
18
+ orderedList: "o-list-item",
19
+ list: "list-item",
20
+ image: "image",
21
+ embed: "embed",
22
+ hyperlink: "hyperlink",
23
+ strong: "strong",
24
+ em: "em",
25
+ rtl: "rtl",
26
+ } as const
27
+
28
+ const VALID_NODE_TYPES = Object.values(RichTextNodeType)
29
+
30
+ /**
31
+ * RichTextOptions parses comma-separated node types, filters invalid ones,
32
+ * and defaults to "paragraph" if empty or null.
33
+ */
34
+ const RichTextOptionsSchema = z.pipe(
35
+ z.union([z.string(), z.null()]),
36
+ z.transform((s: string | null) => {
37
+ if (!s) return DEFAULT_OPTION
38
+ const entries = s.split(",").map((e: string) => e.trim())
39
+ const filtered = entries.filter((e: string) =>
40
+ VALID_NODE_TYPES.includes(e as (typeof VALID_NODE_TYPES)[number]),
41
+ )
42
+ return filtered.length ? filtered.join(",") : DEFAULT_OPTION
43
+ }),
44
+ )
45
+
46
+ /**
47
+ * RichTextLabels accepts multiple formats and normalizes to string[]:
48
+ * - null → []
49
+ * - "label" → ["label"]
50
+ * - ["a", "b"] → ["a", "b"]
51
+ * - { "": [{name: "a"}], "key": [{name: "b"}] } → ["a", "b"] (legacy format)
52
+ */
53
+ const LegacyLabelsFormat = z.record(z.string(), z.array(z.object({ name: z.string() })))
54
+
55
+ const RichTextLabelsSchema: z.ZodMiniType<string[]> = z.pipe(
56
+ z.union([
57
+ z.pipe(
58
+ z.null(),
59
+ z.transform(() => [] as string[]),
60
+ ),
61
+ z.pipe(
62
+ z.string(),
63
+ z.transform((s: string) => [s]),
64
+ ),
65
+ z.array(z.string()),
66
+ z.pipe(
67
+ LegacyLabelsFormat,
68
+ z.transform((obj: Record<string, Array<{ name: string }>>) => {
69
+ const entries = Object.entries(obj)
70
+ if (!entries.length) return [] as string[]
71
+
72
+ // Handle legacy format with empty key
73
+ if (obj[""]) {
74
+ return obj[""].map((l: { name: string }) => l.name)
75
+ }
76
+
77
+ // Convert all entries to flat array of names
78
+ return entries
79
+ .reduce<string[]>((acc, [, labelsEntries]) => {
80
+ return acc.concat(labelsEntries.map((l: { name: string }) => l.name))
81
+ }, [])
82
+ .filter(Boolean)
83
+ }),
84
+ ),
85
+ ]),
86
+ z.transform((result: string[]) => result as string[]),
87
+ )
88
+
89
+ const RichTextConfigSchema = z.object({
90
+ label: z.nullish(z.string()),
91
+ placeholder: z.optional(z.string()),
92
+ useAsTitle: z.optional(z.boolean()),
93
+ single: z.optional(RichTextOptionsSchema),
94
+ multi: z.optional(RichTextOptionsSchema),
95
+ imageConstraint: z.optional(ImageConstraintSchema),
96
+ labels: z.optional(RichTextLabelsSchema),
97
+ allowTargetBlank: z.optional(z.boolean()),
98
+ })
99
+
100
+ export const RichTextModelSchema = z.object({
101
+ type: z.literal(RichTextFieldType),
102
+ fieldset: z.nullish(z.string()),
103
+ config: z.optional(RichTextConfigSchema),
104
+ })
105
+
106
+ export type RichTextModel = z.infer<typeof RichTextModelSchema>
@@ -0,0 +1,12 @@
1
+ import { z } from "zod/mini"
2
+
3
+ import { WidgetKeySchema } from "../common/widgetKey"
4
+ import { DynamicWidgetModelSchema, StaticWidgetModelSchema } from "./widget"
5
+
6
+ // StaticSection = Record<WidgetKey, StaticWidget>
7
+ export const StaticSectionModelSchema = z.record(WidgetKeySchema, StaticWidgetModelSchema)
8
+ export type StaticSectionModel = z.infer<typeof StaticSectionModelSchema>
9
+
10
+ // DynamicSection = Record<WidgetKey, DynamicWidget>
11
+ export const DynamicSectionModelSchema = z.record(WidgetKeySchema, DynamicWidgetModelSchema)
12
+ export type DynamicSectionModel = z.infer<typeof DynamicSectionModelSchema>