@delmaredigital/payload-puck 0.6.10 → 0.6.13

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 (583) hide show
  1. package/README.md +79 -1
  2. package/dist/admin/EditWithPuckButton.d.ts +1 -1
  3. package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
  4. package/dist/admin/EditWithPuckButton.js +65 -25
  5. package/dist/admin/EditWithPuckButton.js.map +1 -1
  6. package/dist/admin/EditWithPuckCell.js +43 -13
  7. package/dist/admin/EditWithPuckCell.js.map +1 -1
  8. package/dist/admin/PuckEditorView.d.ts +1 -1
  9. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  10. package/dist/admin/PuckEditorView.js +118 -32
  11. package/dist/admin/PuckEditorView.js.map +1 -1
  12. package/dist/admin/client.d.ts +2 -2
  13. package/dist/admin/client.d.ts.map +1 -1
  14. package/dist/admin/client.js +4 -4
  15. package/dist/admin/client.js.map +1 -1
  16. package/dist/admin/generateAdminComponents.js +7 -7
  17. package/dist/admin/generateAdminComponents.js.map +1 -1
  18. package/dist/admin/index.d.ts +5 -5
  19. package/dist/admin/index.d.ts.map +1 -1
  20. package/dist/admin/index.js +3 -2
  21. package/dist/admin/index.js.map +1 -1
  22. package/dist/ai/collections/AiContext.js +56 -29
  23. package/dist/ai/collections/AiContext.js.map +1 -1
  24. package/dist/ai/collections/AiPrompts.js +24 -19
  25. package/dist/ai/collections/AiPrompts.js.map +1 -1
  26. package/dist/ai/createAiApiRoutes.js +28 -19
  27. package/dist/ai/createAiApiRoutes.js.map +1 -1
  28. package/dist/ai/createAiGenerate.js +7 -8
  29. package/dist/ai/createAiGenerate.js.map +1 -1
  30. package/dist/ai/createAiPlugin.js +7 -9
  31. package/dist/ai/createAiPlugin.js.map +1 -1
  32. package/dist/ai/hooks/useAiContext.js +50 -39
  33. package/dist/ai/hooks/useAiContext.js.map +1 -1
  34. package/dist/ai/hooks/useAiPrompts.js +33 -25
  35. package/dist/ai/hooks/useAiPrompts.js.map +1 -1
  36. package/dist/ai/index.js +9 -10
  37. package/dist/ai/index.js.map +1 -1
  38. package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
  39. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
  40. package/dist/ai/plugins/ContextEditorPanel.js +399 -107
  41. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
  42. package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
  43. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
  44. package/dist/ai/plugins/PromptEditorPanel.js +237 -51
  45. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
  46. package/dist/ai/plugins/contextEditorPlugin.js +12 -5
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
  48. package/dist/ai/plugins/promptApiRoutes.js +119 -50
  49. package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
  50. package/dist/ai/plugins/promptEditorPlugin.js +12 -5
  51. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
  52. package/dist/ai/presets/componentAiDefaults.js +108 -83
  53. package/dist/ai/presets/componentAiDefaults.js.map +1 -1
  54. package/dist/ai/presets/index.js +12 -18
  55. package/dist/ai/presets/index.js.map +1 -1
  56. package/dist/ai/presets/instructions/interactive.js +85 -75
  57. package/dist/ai/presets/instructions/interactive.js.map +1 -1
  58. package/dist/ai/presets/instructions/layout.js +122 -117
  59. package/dist/ai/presets/instructions/layout.js.map +1 -1
  60. package/dist/ai/presets/instructions/media.js +31 -29
  61. package/dist/ai/presets/instructions/media.js.map +1 -1
  62. package/dist/ai/presets/instructions/pagePatterns.js +4 -6
  63. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
  64. package/dist/ai/presets/instructions/schemas.js +495 -137
  65. package/dist/ai/presets/instructions/schemas.js.map +1 -1
  66. package/dist/ai/presets/instructions/typography.js +38 -33
  67. package/dist/ai/presets/instructions/typography.js.map +1 -1
  68. package/dist/ai/tools/index.js +92 -55
  69. package/dist/ai/tools/index.js.map +1 -1
  70. package/dist/ai/types.js +7 -1
  71. package/dist/ai/types.js.map +1 -1
  72. package/dist/ai/utils/injectAiConfig.js +33 -40
  73. package/dist/ai/utils/injectAiConfig.js.map +1 -1
  74. package/dist/api/createPuckApiRoutes.d.ts +1 -1
  75. package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
  76. package/dist/api/createPuckApiRoutes.js +123 -65
  77. package/dist/api/createPuckApiRoutes.js.map +1 -1
  78. package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
  79. package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
  80. package/dist/api/createPuckApiRoutesVersions.js +88 -37
  81. package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
  82. package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
  83. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  84. package/dist/api/createPuckApiRoutesWithId.js +166 -72
  85. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  86. package/dist/api/index.d.ts +5 -5
  87. package/dist/api/index.d.ts.map +1 -1
  88. package/dist/api/index.js +6 -6
  89. package/dist/api/index.js.map +1 -1
  90. package/dist/api/payload-config.d.js +15 -0
  91. package/dist/api/payload-config.d.js.map +1 -0
  92. package/dist/api/types.js +4 -1
  93. package/dist/api/types.js.map +1 -1
  94. package/dist/api/utils/mapRootProps.d.ts +1 -1
  95. package/dist/api/utils/mapRootProps.d.ts.map +1 -1
  96. package/dist/api/utils/mapRootProps.js +77 -44
  97. package/dist/api/utils/mapRootProps.js.map +1 -1
  98. package/dist/collections/Templates.js +24 -20
  99. package/dist/collections/Templates.js.map +1 -1
  100. package/dist/components/AccordionClient.d.ts +2 -2
  101. package/dist/components/AccordionClient.d.ts.map +1 -1
  102. package/dist/components/AccordionClient.js +81 -22
  103. package/dist/components/AccordionClient.js.map +1 -1
  104. package/dist/components/AnimatedWrapper.d.ts +2 -2
  105. package/dist/components/AnimatedWrapper.d.ts.map +1 -1
  106. package/dist/components/AnimatedWrapper.js +31 -16
  107. package/dist/components/AnimatedWrapper.js.map +1 -1
  108. package/dist/components/exports.js +2 -2
  109. package/dist/components/exports.js.map +1 -1
  110. package/dist/components/index.d.ts +5 -5
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/index.js +7 -7
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/interactive/Accordion.d.ts +1 -1
  115. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  116. package/dist/components/interactive/Accordion.js +149 -55
  117. package/dist/components/interactive/Accordion.js.map +1 -1
  118. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  119. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  120. package/dist/components/interactive/Accordion.server.js +25 -7
  121. package/dist/components/interactive/Accordion.server.js.map +1 -1
  122. package/dist/components/interactive/Button.d.ts +3 -3
  123. package/dist/components/interactive/Button.d.ts.map +1 -1
  124. package/dist/components/interactive/Button.js +89 -43
  125. package/dist/components/interactive/Button.js.map +1 -1
  126. package/dist/components/interactive/Button.server.d.ts +2 -2
  127. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  128. package/dist/components/interactive/Button.server.js +40 -20
  129. package/dist/components/interactive/Button.server.js.map +1 -1
  130. package/dist/components/interactive/Card.d.ts +3 -3
  131. package/dist/components/interactive/Card.d.ts.map +1 -1
  132. package/dist/components/interactive/Card.js +131 -39
  133. package/dist/components/interactive/Card.js.map +1 -1
  134. package/dist/components/interactive/Card.server.d.ts +3 -3
  135. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  136. package/dist/components/interactive/Card.server.js +72 -11
  137. package/dist/components/interactive/Card.server.js.map +1 -1
  138. package/dist/components/interactive/Divider.d.ts +1 -1
  139. package/dist/components/interactive/Divider.d.ts.map +1 -1
  140. package/dist/components/interactive/Divider.js +54 -26
  141. package/dist/components/interactive/Divider.js.map +1 -1
  142. package/dist/components/interactive/Divider.server.d.ts +1 -1
  143. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  144. package/dist/components/interactive/Divider.server.js +28 -12
  145. package/dist/components/interactive/Divider.server.js.map +1 -1
  146. package/dist/components/interactive/index.d.ts +4 -4
  147. package/dist/components/interactive/index.d.ts.map +1 -1
  148. package/dist/components/interactive/index.js +5 -5
  149. package/dist/components/interactive/index.js.map +1 -1
  150. package/dist/components/layout/Container.d.ts +1 -1
  151. package/dist/components/layout/Container.d.ts.map +1 -1
  152. package/dist/components/layout/Container.js +101 -47
  153. package/dist/components/layout/Container.js.map +1 -1
  154. package/dist/components/layout/Container.server.d.ts +1 -1
  155. package/dist/components/layout/Container.server.d.ts.map +1 -1
  156. package/dist/components/layout/Container.server.js +67 -19
  157. package/dist/components/layout/Container.server.js.map +1 -1
  158. package/dist/components/layout/Flex.d.ts +2 -2
  159. package/dist/components/layout/Flex.d.ts.map +1 -1
  160. package/dist/components/layout/Flex.js +124 -55
  161. package/dist/components/layout/Flex.js.map +1 -1
  162. package/dist/components/layout/Flex.server.d.ts +1 -1
  163. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  164. package/dist/components/layout/Flex.server.js +50 -14
  165. package/dist/components/layout/Flex.server.js.map +1 -1
  166. package/dist/components/layout/Grid.d.ts +1 -1
  167. package/dist/components/layout/Grid.d.ts.map +1 -1
  168. package/dist/components/layout/Grid.js +93 -44
  169. package/dist/components/layout/Grid.js.map +1 -1
  170. package/dist/components/layout/Grid.server.d.ts +1 -1
  171. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  172. package/dist/components/layout/Grid.server.js +56 -14
  173. package/dist/components/layout/Grid.server.js.map +1 -1
  174. package/dist/components/layout/Section.d.ts +1 -1
  175. package/dist/components/layout/Section.d.ts.map +1 -1
  176. package/dist/components/layout/Section.js +147 -64
  177. package/dist/components/layout/Section.js.map +1 -1
  178. package/dist/components/layout/Section.server.d.ts +1 -1
  179. package/dist/components/layout/Section.server.d.ts.map +1 -1
  180. package/dist/components/layout/Section.server.js +92 -28
  181. package/dist/components/layout/Section.server.js.map +1 -1
  182. package/dist/components/layout/Spacer.d.ts +1 -1
  183. package/dist/components/layout/Spacer.d.ts.map +1 -1
  184. package/dist/components/layout/Spacer.js +80 -30
  185. package/dist/components/layout/Spacer.js.map +1 -1
  186. package/dist/components/layout/Spacer.server.d.ts +1 -1
  187. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  188. package/dist/components/layout/Spacer.server.js +31 -9
  189. package/dist/components/layout/Spacer.server.js.map +1 -1
  190. package/dist/components/layout/Template.d.ts +1 -1
  191. package/dist/components/layout/Template.d.ts.map +1 -1
  192. package/dist/components/layout/Template.js +58 -30
  193. package/dist/components/layout/Template.js.map +1 -1
  194. package/dist/components/layout/Template.server.d.ts +1 -1
  195. package/dist/components/layout/Template.server.d.ts.map +1 -1
  196. package/dist/components/layout/Template.server.js +43 -11
  197. package/dist/components/layout/Template.server.js.map +1 -1
  198. package/dist/components/layout/index.d.ts +8 -8
  199. package/dist/components/layout/index.d.ts.map +1 -1
  200. package/dist/components/layout/index.js +8 -8
  201. package/dist/components/layout/index.js.map +1 -1
  202. package/dist/components/media/Image.d.ts +3 -3
  203. package/dist/components/media/Image.d.ts.map +1 -1
  204. package/dist/components/media/Image.js +122 -39
  205. package/dist/components/media/Image.js.map +1 -1
  206. package/dist/components/media/Image.server.d.ts +3 -3
  207. package/dist/components/media/Image.server.d.ts.map +1 -1
  208. package/dist/components/media/Image.server.js +76 -13
  209. package/dist/components/media/Image.server.js.map +1 -1
  210. package/dist/components/media/index.d.ts +1 -1
  211. package/dist/components/media/index.d.ts.map +1 -1
  212. package/dist/components/media/index.js +2 -2
  213. package/dist/components/media/index.js.map +1 -1
  214. package/dist/components/typography/Heading.d.ts +2 -2
  215. package/dist/components/typography/Heading.d.ts.map +1 -1
  216. package/dist/components/typography/Heading.js +45 -25
  217. package/dist/components/typography/Heading.js.map +1 -1
  218. package/dist/components/typography/Heading.server.d.ts +2 -2
  219. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  220. package/dist/components/typography/Heading.server.js +16 -10
  221. package/dist/components/typography/Heading.server.js.map +1 -1
  222. package/dist/components/typography/RichText.editor.d.ts +1 -1
  223. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  224. package/dist/components/typography/RichText.editor.js +44 -19
  225. package/dist/components/typography/RichText.editor.js.map +1 -1
  226. package/dist/components/typography/RichText.server.d.ts +2 -2
  227. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  228. package/dist/components/typography/RichText.server.js +33 -14
  229. package/dist/components/typography/RichText.server.js.map +1 -1
  230. package/dist/components/typography/Text.d.ts +2 -2
  231. package/dist/components/typography/Text.d.ts.map +1 -1
  232. package/dist/components/typography/Text.js +49 -23
  233. package/dist/components/typography/Text.js.map +1 -1
  234. package/dist/components/typography/Text.server.d.ts +2 -2
  235. package/dist/components/typography/Text.server.d.ts.map +1 -1
  236. package/dist/components/typography/Text.server.js +21 -8
  237. package/dist/components/typography/Text.server.js.map +1 -1
  238. package/dist/components/typography/index.d.ts +4 -4
  239. package/dist/components/typography/index.d.ts.map +1 -1
  240. package/dist/components/typography/index.js +5 -5
  241. package/dist/components/typography/index.js.map +1 -1
  242. package/dist/config/config.editor.d.ts +3 -3
  243. package/dist/config/config.editor.d.ts.map +1 -1
  244. package/dist/config/config.editor.js +119 -54
  245. package/dist/config/config.editor.js.map +1 -1
  246. package/dist/config/index.d.ts +4 -4
  247. package/dist/config/index.d.ts.map +1 -1
  248. package/dist/config/index.js +62 -35
  249. package/dist/config/index.js.map +1 -1
  250. package/dist/config/merge.d.ts +1 -1
  251. package/dist/config/merge.d.ts.map +1 -1
  252. package/dist/config/merge.js +23 -26
  253. package/dist/config/merge.js.map +1 -1
  254. package/dist/config/presets.d.ts +4 -4
  255. package/dist/config/presets.js +195 -75
  256. package/dist/config/presets.js.map +1 -1
  257. package/dist/config/types.js +6 -2
  258. package/dist/config/types.js.map +1 -1
  259. package/dist/editor/PuckEditor.d.ts +12 -4
  260. package/dist/editor/PuckEditor.d.ts.map +1 -1
  261. package/dist/editor/PuckEditor.js +168 -67
  262. package/dist/editor/PuckEditor.js.map +1 -1
  263. package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
  264. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  265. package/dist/editor/PuckEditorImpl.client.js +304 -152
  266. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  267. package/dist/editor/components/DarkModeStyles.js +11 -12
  268. package/dist/editor/components/DarkModeStyles.js.map +1 -1
  269. package/dist/editor/components/HeaderActions.js +308 -64
  270. package/dist/editor/components/HeaderActions.js.map +1 -1
  271. package/dist/editor/components/IframeWrapper.d.ts +1 -1
  272. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  273. package/dist/editor/components/IframeWrapper.js +82 -58
  274. package/dist/editor/components/IframeWrapper.js.map +1 -1
  275. package/dist/editor/components/LoadingState.d.ts +1 -1
  276. package/dist/editor/components/LoadingState.d.ts.map +1 -1
  277. package/dist/editor/components/LoadingState.js +17 -3
  278. package/dist/editor/components/LoadingState.js.map +1 -1
  279. package/dist/editor/components/PreviewModal.js +234 -78
  280. package/dist/editor/components/PreviewModal.js.map +1 -1
  281. package/dist/editor/components/PreviewModeToggle.js +43 -15
  282. package/dist/editor/components/PreviewModeToggle.js.map +1 -1
  283. package/dist/editor/components/VersionHistory.js +219 -71
  284. package/dist/editor/components/VersionHistory.js.map +1 -1
  285. package/dist/editor/hooks/useDarkMode.js +36 -23
  286. package/dist/editor/hooks/useDarkMode.js.map +1 -1
  287. package/dist/editor/hooks/useUnsavedChanges.js +8 -8
  288. package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
  289. package/dist/editor/index.js +5 -6
  290. package/dist/editor/index.js.map +1 -1
  291. package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
  292. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
  293. package/dist/editor/plugins/index.js +4 -4
  294. package/dist/editor/plugins/index.js.map +1 -1
  295. package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
  296. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
  297. package/dist/editor/utils/detectPageTree.js +5 -5
  298. package/dist/editor/utils/detectPageTree.js.map +1 -1
  299. package/dist/editor/utils/index.js +1 -0
  300. package/dist/editor/utils/index.js.map +1 -1
  301. package/dist/editor/utils/injectPageTreeFields.js +13 -9
  302. package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
  303. package/dist/endpoints/ai.js +58 -34
  304. package/dist/endpoints/ai.js.map +1 -1
  305. package/dist/endpoints/context.js +86 -40
  306. package/dist/endpoints/context.js.map +1 -1
  307. package/dist/endpoints/index.js +153 -76
  308. package/dist/endpoints/index.js.map +1 -1
  309. package/dist/endpoints/postcss.d.js +5 -0
  310. package/dist/endpoints/postcss.d.js.map +1 -0
  311. package/dist/endpoints/prompts.js +81 -39
  312. package/dist/endpoints/prompts.js.map +1 -1
  313. package/dist/endpoints/styles.js +34 -36
  314. package/dist/endpoints/styles.js.map +1 -1
  315. package/dist/exports/client.js +2 -2
  316. package/dist/exports/client.js.map +1 -1
  317. package/dist/exports/rsc.js +2 -2
  318. package/dist/exports/rsc.js.map +1 -1
  319. package/dist/fields/AlignmentField.d.ts +1 -1
  320. package/dist/fields/AlignmentField.d.ts.map +1 -1
  321. package/dist/fields/AlignmentField.js +93 -30
  322. package/dist/fields/AlignmentField.js.map +1 -1
  323. package/dist/fields/AnimationField.d.ts +2 -2
  324. package/dist/fields/AnimationField.d.ts.map +1 -1
  325. package/dist/fields/AnimationField.js +558 -84
  326. package/dist/fields/AnimationField.js.map +1 -1
  327. package/dist/fields/BackgroundField.d.ts +2 -2
  328. package/dist/fields/BackgroundField.d.ts.map +1 -1
  329. package/dist/fields/BackgroundField.js +754 -120
  330. package/dist/fields/BackgroundField.js.map +1 -1
  331. package/dist/fields/BorderField.d.ts +2 -2
  332. package/dist/fields/BorderField.d.ts.map +1 -1
  333. package/dist/fields/BorderField.js +275 -73
  334. package/dist/fields/BorderField.js.map +1 -1
  335. package/dist/fields/ColorPickerField.d.ts +2 -2
  336. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  337. package/dist/fields/ColorPickerField.js +210 -68
  338. package/dist/fields/ColorPickerField.js.map +1 -1
  339. package/dist/fields/ContentAlignmentField.d.ts +1 -1
  340. package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
  341. package/dist/fields/ContentAlignmentField.js +161 -75
  342. package/dist/fields/ContentAlignmentField.js.map +1 -1
  343. package/dist/fields/DimensionsField.d.ts +2 -2
  344. package/dist/fields/DimensionsField.d.ts.map +1 -1
  345. package/dist/fields/DimensionsField.js +575 -146
  346. package/dist/fields/DimensionsField.js.map +1 -1
  347. package/dist/fields/FlexAlignmentField.d.ts +2 -2
  348. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  349. package/dist/fields/FlexAlignmentField.js +189 -51
  350. package/dist/fields/FlexAlignmentField.js.map +1 -1
  351. package/dist/fields/FolderPickerField.d.ts +8 -1
  352. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  353. package/dist/fields/FolderPickerField.js +288 -75
  354. package/dist/fields/FolderPickerField.js.map +1 -1
  355. package/dist/fields/GradientEditor.d.ts +2 -2
  356. package/dist/fields/GradientEditor.d.ts.map +1 -1
  357. package/dist/fields/GradientEditor.js +462 -86
  358. package/dist/fields/GradientEditor.js.map +1 -1
  359. package/dist/fields/LockedField.d.ts +15 -2
  360. package/dist/fields/LockedField.d.ts.map +1 -1
  361. package/dist/fields/LockedField.js +180 -49
  362. package/dist/fields/LockedField.js.map +1 -1
  363. package/dist/fields/MarginField.d.ts +2 -2
  364. package/dist/fields/MarginField.d.ts.map +1 -1
  365. package/dist/fields/MarginField.js +144 -46
  366. package/dist/fields/MarginField.js.map +1 -1
  367. package/dist/fields/MediaField.d.ts +1 -1
  368. package/dist/fields/MediaField.d.ts.map +1 -1
  369. package/dist/fields/MediaField.js +688 -186
  370. package/dist/fields/MediaField.js.map +1 -1
  371. package/dist/fields/PaddingField.d.ts +2 -2
  372. package/dist/fields/PaddingField.d.ts.map +1 -1
  373. package/dist/fields/PaddingField.js +144 -46
  374. package/dist/fields/PaddingField.js.map +1 -1
  375. package/dist/fields/PageSegmentField.d.ts +15 -2
  376. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  377. package/dist/fields/PageSegmentField.js +156 -54
  378. package/dist/fields/PageSegmentField.js.map +1 -1
  379. package/dist/fields/ResetField.d.ts +1 -1
  380. package/dist/fields/ResetField.d.ts.map +1 -1
  381. package/dist/fields/ResetField.js +59 -31
  382. package/dist/fields/ResetField.js.map +1 -1
  383. package/dist/fields/ResponsiveField.d.ts +1 -1
  384. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  385. package/dist/fields/ResponsiveField.js +233 -90
  386. package/dist/fields/ResponsiveField.js.map +1 -1
  387. package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
  388. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  389. package/dist/fields/ResponsiveVisibilityField.js +119 -36
  390. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  391. package/dist/fields/SizeField.d.ts +3 -3
  392. package/dist/fields/SizeField.d.ts.map +1 -1
  393. package/dist/fields/SizeField.js +226 -52
  394. package/dist/fields/SizeField.js.map +1 -1
  395. package/dist/fields/SlugPreviewField.d.ts +8 -1
  396. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  397. package/dist/fields/SlugPreviewField.js +65 -16
  398. package/dist/fields/SlugPreviewField.js.map +1 -1
  399. package/dist/fields/TemplateField.d.ts +1 -1
  400. package/dist/fields/TemplateField.d.ts.map +1 -1
  401. package/dist/fields/TemplateField.js +362 -120
  402. package/dist/fields/TemplateField.js.map +1 -1
  403. package/dist/fields/TransformField.d.ts +2 -2
  404. package/dist/fields/TransformField.d.ts.map +1 -1
  405. package/dist/fields/TransformField.js +517 -81
  406. package/dist/fields/TransformField.js.map +1 -1
  407. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  408. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  409. package/dist/fields/VerticalAlignmentField.js +93 -30
  410. package/dist/fields/VerticalAlignmentField.js.map +1 -1
  411. package/dist/fields/WidthField.d.ts +2 -2
  412. package/dist/fields/WidthField.d.ts.map +1 -1
  413. package/dist/fields/WidthField.js +278 -81
  414. package/dist/fields/WidthField.js.map +1 -1
  415. package/dist/fields/index.d.ts +41 -41
  416. package/dist/fields/index.d.ts.map +1 -1
  417. package/dist/fields/index.js +37 -43
  418. package/dist/fields/index.js.map +1 -1
  419. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
  420. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
  421. package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
  422. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
  423. package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
  424. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
  425. package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
  426. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
  427. package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
  428. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
  429. package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
  430. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
  431. package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
  432. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
  433. package/dist/fields/richtext/controls/HighlightControl.js +54 -17
  434. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
  435. package/dist/fields/richtext/controls/index.d.ts +5 -5
  436. package/dist/fields/richtext/controls/index.d.ts.map +1 -1
  437. package/dist/fields/richtext/controls/index.js +8 -11
  438. package/dist/fields/richtext/controls/index.js.map +1 -1
  439. package/dist/fields/richtext/controls/shared.js +108 -63
  440. package/dist/fields/richtext/controls/shared.js.map +1 -1
  441. package/dist/fields/richtext/createRichTextField.d.ts +18 -4
  442. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
  443. package/dist/fields/richtext/createRichTextField.js +113 -26
  444. package/dist/fields/richtext/createRichTextField.js.map +1 -1
  445. package/dist/fields/richtext/extensions/FontSize.js +26 -20
  446. package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
  447. package/dist/fields/richtext/extensions/index.d.ts +1 -1
  448. package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
  449. package/dist/fields/richtext/extensions/index.js +2 -2
  450. package/dist/fields/richtext/extensions/index.js.map +1 -1
  451. package/dist/fields/richtext/index.d.ts +6 -6
  452. package/dist/fields/richtext/index.d.ts.map +1 -1
  453. package/dist/fields/richtext/index.js +8 -8
  454. package/dist/fields/richtext/index.js.map +1 -1
  455. package/dist/fields/shared.d.ts +1 -1
  456. package/dist/fields/shared.d.ts.map +1 -1
  457. package/dist/fields/shared.js +915 -478
  458. package/dist/fields/shared.js.map +1 -1
  459. package/dist/hooks/index.d.ts +2 -2
  460. package/dist/hooks/index.d.ts.map +1 -1
  461. package/dist/hooks/index.js +3 -3
  462. package/dist/hooks/index.js.map +1 -1
  463. package/dist/hooks/useResponsiveStyles.d.ts +1 -1
  464. package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
  465. package/dist/hooks/useResponsiveStyles.js +36 -32
  466. package/dist/hooks/useResponsiveStyles.js.map +1 -1
  467. package/dist/hooks/useScrollAnimation.js +26 -24
  468. package/dist/hooks/useScrollAnimation.js.map +1 -1
  469. package/dist/index.d.ts +4 -4
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +5 -5
  472. package/dist/index.js.map +1 -1
  473. package/dist/layouts/LayoutWrapper.d.ts +3 -3
  474. package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
  475. package/dist/layouts/LayoutWrapper.js +115 -51
  476. package/dist/layouts/LayoutWrapper.js.map +1 -1
  477. package/dist/layouts/defaults.d.ts +1 -1
  478. package/dist/layouts/defaults.d.ts.map +1 -1
  479. package/dist/layouts/defaults.js +23 -31
  480. package/dist/layouts/defaults.js.map +1 -1
  481. package/dist/layouts/index.d.ts +4 -4
  482. package/dist/layouts/index.d.ts.map +1 -1
  483. package/dist/layouts/index.js +5 -4
  484. package/dist/layouts/index.js.map +1 -1
  485. package/dist/layouts/types.js +4 -2
  486. package/dist/layouts/types.js.map +1 -1
  487. package/dist/layouts/utils.d.ts +1 -1
  488. package/dist/layouts/utils.d.ts.map +1 -1
  489. package/dist/layouts/utils.js +32 -40
  490. package/dist/layouts/utils.js.map +1 -1
  491. package/dist/next/index.js +31 -34
  492. package/dist/next/index.js.map +1 -1
  493. package/dist/plugin/collections/Pages.d.ts +2 -2
  494. package/dist/plugin/collections/Pages.d.ts.map +1 -1
  495. package/dist/plugin/collections/Pages.js +46 -43
  496. package/dist/plugin/collections/Pages.js.map +1 -1
  497. package/dist/plugin/fields/index.d.ts +3 -3
  498. package/dist/plugin/fields/index.d.ts.map +1 -1
  499. package/dist/plugin/fields/index.js +100 -78
  500. package/dist/plugin/fields/index.js.map +1 -1
  501. package/dist/plugin/fields/types.d.ts +1 -1
  502. package/dist/plugin/fields/types.d.ts.map +1 -1
  503. package/dist/plugin/fields/types.js +26 -2
  504. package/dist/plugin/fields/types.js.map +1 -1
  505. package/dist/plugin/hooks/index.d.ts +1 -1
  506. package/dist/plugin/hooks/index.d.ts.map +1 -1
  507. package/dist/plugin/hooks/index.js +2 -2
  508. package/dist/plugin/hooks/index.js.map +1 -1
  509. package/dist/plugin/hooks/isHomepageUnique.js +28 -19
  510. package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
  511. package/dist/plugin/index.d.ts +8 -8
  512. package/dist/plugin/index.d.ts.map +1 -1
  513. package/dist/plugin/index.js +192 -188
  514. package/dist/plugin/index.js.map +1 -1
  515. package/dist/render/HybridPageRenderer.d.ts +2 -2
  516. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  517. package/dist/render/HybridPageRenderer.js +58 -10
  518. package/dist/render/HybridPageRenderer.js.map +1 -1
  519. package/dist/render/PageRenderer.d.ts +2 -2
  520. package/dist/render/PageRenderer.d.ts.map +1 -1
  521. package/dist/render/PageRenderer.js +31 -14
  522. package/dist/render/PageRenderer.js.map +1 -1
  523. package/dist/render/PuckEditor.client.d.ts +1 -1
  524. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  525. package/dist/render/PuckEditor.client.js +33 -16
  526. package/dist/render/PuckEditor.client.js.map +1 -1
  527. package/dist/render/index.d.ts +5 -5
  528. package/dist/render/index.d.ts.map +1 -1
  529. package/dist/render/index.js +5 -6
  530. package/dist/render/index.js.map +1 -1
  531. package/dist/styles/puck-dark-mode.css +101 -0
  532. package/dist/theme/context.d.ts +2 -2
  533. package/dist/theme/context.d.ts.map +1 -1
  534. package/dist/theme/context.js +21 -18
  535. package/dist/theme/context.js.map +1 -1
  536. package/dist/theme/defaults.d.ts +1 -1
  537. package/dist/theme/defaults.d.ts.map +1 -1
  538. package/dist/theme/defaults.js +83 -37
  539. package/dist/theme/defaults.js.map +1 -1
  540. package/dist/theme/example.d.ts +1 -1
  541. package/dist/theme/example.d.ts.map +1 -1
  542. package/dist/theme/example.js +68 -30
  543. package/dist/theme/example.js.map +1 -1
  544. package/dist/theme/index.d.ts +5 -5
  545. package/dist/theme/index.d.ts.map +1 -1
  546. package/dist/theme/index.js +6 -5
  547. package/dist/theme/index.js.map +1 -1
  548. package/dist/theme/types.js +6 -2
  549. package/dist/theme/types.js.map +1 -1
  550. package/dist/theme/utils.d.ts +1 -1
  551. package/dist/theme/utils.d.ts.map +1 -1
  552. package/dist/theme/utils.js +24 -25
  553. package/dist/theme/utils.js.map +1 -1
  554. package/dist/types/index.d.ts +42 -6
  555. package/dist/types/index.d.ts.map +1 -1
  556. package/dist/types/index.js +3 -1
  557. package/dist/types/index.js.map +1 -1
  558. package/dist/utils/index.d.ts +2 -2
  559. package/dist/utils/index.d.ts.map +1 -1
  560. package/dist/utils/index.js +13 -22
  561. package/dist/utils/index.js.map +1 -1
  562. package/dist/utils/migration.d.ts +1 -1
  563. package/dist/utils/migration.d.ts.map +1 -1
  564. package/dist/utils/migration.js +43 -49
  565. package/dist/utils/migration.js.map +1 -1
  566. package/dist/utils/validation.d.ts +1 -1
  567. package/dist/utils/validation.d.ts.map +1 -1
  568. package/dist/utils/validation.js +36 -43
  569. package/dist/utils/validation.js.map +1 -1
  570. package/dist/version.d.ts +1 -1
  571. package/dist/version.js +2 -1
  572. package/dist/version.js.map +1 -1
  573. package/dist/views/PuckConfigContext.d.ts +1 -1
  574. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  575. package/dist/views/PuckConfigContext.js +25 -10
  576. package/dist/views/PuckConfigContext.js.map +1 -1
  577. package/dist/views/PuckEditorView.d.ts +1 -1
  578. package/dist/views/PuckEditorView.d.ts.map +1 -1
  579. package/dist/views/PuckEditorView.js +137 -41
  580. package/dist/views/PuckEditorView.js.map +1 -1
  581. package/dist/views/index.js +2 -2
  582. package/dist/views/index.js.map +1 -1
  583. package/package.json +62 -42
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { createElement } from 'react';
3
3
  import { History } from 'lucide-react';
4
- import { VersionHistoryPanel } from './VersionHistoryPanel';
4
+ import { VersionHistoryPanel } from './VersionHistoryPanel.js';
5
5
  /**
6
6
  * Creates a Puck plugin for version history
7
7
  *
@@ -20,17 +20,19 @@ import { VersionHistoryPanel } from './VersionHistoryPanel';
20
20
  *
21
21
  * <Puck plugins={[versionPlugin]} />
22
22
  * ```
23
- */
24
- export function createVersionHistoryPlugin(options) {
23
+ */ export function createVersionHistoryPlugin(options) {
25
24
  return {
26
25
  name: 'version-history',
27
26
  label: 'History',
28
- icon: createElement(History, { size: 20 }),
29
- render: () => createElement(VersionHistoryPanel, {
30
- pageId: options.pageId,
31
- apiEndpoint: options.apiEndpoint,
32
- onRestoreSuccess: options.onRestoreSuccess,
27
+ icon: /*#__PURE__*/ createElement(History, {
28
+ size: 20
33
29
  }),
30
+ render: ()=>/*#__PURE__*/ createElement(VersionHistoryPanel, {
31
+ pageId: options.pageId,
32
+ apiEndpoint: options.apiEndpoint,
33
+ onRestoreSuccess: options.onRestoreSuccess
34
+ })
34
35
  };
35
36
  }
37
+
36
38
  //# sourceMappingURL=versionHistoryPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"versionHistoryPlugin.js","sourceRoot":"","sources":["../../../src/editor/plugins/versionHistoryPlugin.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAkB3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAC7E,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,CACX,aAAa,CAAC,mBAAmB,EAAE;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC;KACL,CAAA;AACH,CAAC"}
1
+ {"version":3,"sources":["../../../src/editor/plugins/versionHistoryPlugin.tsx"],"sourcesContent":["'use client'\n\nimport { createElement } from 'react'\nimport { History } from 'lucide-react'\nimport type { Plugin } from '@puckeditor/core'\nimport { VersionHistoryPanel } from './VersionHistoryPanel.js'\n\nexport interface VersionHistoryPluginOptions {\n /**\n * Page ID to fetch versions for\n */\n pageId: string\n /**\n * API endpoint base path\n * @default '/api/puck/pages'\n */\n apiEndpoint?: string\n /**\n * Callback after successful restore (e.g., to mark editor as clean)\n */\n onRestoreSuccess?: () => void\n}\n\n/**\n * Creates a Puck plugin for version history\n *\n * Adds a \"History\" button to the plugin rail that opens a panel\n * showing version history with the ability to restore previous versions.\n *\n * @example\n * ```tsx\n * import { createVersionHistoryPlugin } from '@delmaredigital/payload-puck/editor'\n *\n * const versionPlugin = createVersionHistoryPlugin({\n * pageId: 'page-123',\n * apiEndpoint: '/api/puck/pages',\n * onRestoreSuccess: () => markEditorClean(),\n * })\n *\n * <Puck plugins={[versionPlugin]} />\n * ```\n */\nexport function createVersionHistoryPlugin(options: VersionHistoryPluginOptions): Plugin {\n return {\n name: 'version-history',\n label: 'History',\n icon: createElement(History, { size: 20 }),\n render: () =>\n createElement(VersionHistoryPanel, {\n pageId: options.pageId,\n apiEndpoint: options.apiEndpoint,\n onRestoreSuccess: options.onRestoreSuccess,\n }),\n }\n}\n"],"names":["createElement","History","VersionHistoryPanel","createVersionHistoryPlugin","options","name","label","icon","size","render","pageId","apiEndpoint","onRestoreSuccess"],"mappings":"AAAA;AAEA,SAASA,aAAa,QAAQ,QAAO;AACrC,SAASC,OAAO,QAAQ,eAAc;AAEtC,SAASC,mBAAmB,QAAQ,2BAA0B;AAkB9D;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASC,2BAA2BC,OAAoC;IAC7E,OAAO;QACLC,MAAM;QACNC,OAAO;QACPC,oBAAMP,cAAcC,SAAS;YAAEO,MAAM;QAAG;QACxCC,QAAQ,kBACNT,cAAcE,qBAAqB;gBACjCQ,QAAQN,QAAQM,MAAM;gBACtBC,aAAaP,QAAQO,WAAW;gBAChCC,kBAAkBR,QAAQQ,gBAAgB;YAC5C;IACJ;AACF"}
@@ -8,8 +8,7 @@
8
8
  * @param config - The Puck config to check
9
9
  * @param explicitProp - Optional explicit hasPageTree prop value
10
10
  * @returns Whether page-tree fields should be injected
11
- */
12
- export function detectPageTree(config, explicitProp) {
11
+ */ export function detectPageTree(config, explicitProp) {
13
12
  // Explicit prop takes precedence
14
13
  if (explicitProp !== undefined) {
15
14
  return explicitProp;
@@ -20,7 +19,8 @@ export function detectPageTree(config, explicitProp) {
20
19
  const hasPageTreeFields = 'folder' in rootFields && 'pageSegment' in rootFields;
21
20
  // If fields already exist, page-tree is already configured (via preset)
22
21
  // Return false to avoid re-injecting
23
- return false && hasPageTreeFields; // Never auto-inject - require explicit opt-in
22
+ return false && hasPageTreeFields // Never auto-inject - require explicit opt-in
23
+ ;
24
24
  }
25
25
  /**
26
26
  * Checks if a config already has page-tree fields configured.
@@ -28,9 +28,9 @@ export function detectPageTree(config, explicitProp) {
28
28
  *
29
29
  * @param config - The Puck config to check
30
30
  * @returns Whether the config already has page-tree fields
31
- */
32
- export function hasPageTreeFields(config) {
31
+ */ export function hasPageTreeFields(config) {
33
32
  const rootFields = config.root?.fields || {};
34
33
  return 'folder' in rootFields && 'pageSegment' in rootFields;
35
34
  }
35
+
36
36
  //# sourceMappingURL=detectPageTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detectPageTree.js","sourceRoot":"","sources":["../../../src/editor/utils/detectPageTree.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,YAAsB;IACvE,iCAAiC;IACjC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAA;IAC5C,MAAM,iBAAiB,GAAG,QAAQ,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,CAAA;IAE/E,wEAAwE;IACxE,qCAAqC;IACrC,OAAO,KAAK,IAAI,iBAAiB,CAAA,CAAC,8CAA8C;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAA;IAC5C,OAAO,QAAQ,IAAI,UAAU,IAAI,aAAa,IAAI,UAAU,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"sources":["../../../src/editor/utils/detectPageTree.ts"],"sourcesContent":["import type { Config as PuckConfig } from '@puckeditor/core'\n\n/**\n * Detects whether page-tree integration should be enabled.\n *\n * Detection priority:\n * 1. Explicit prop takes precedence (true/false)\n * 2. Auto-detect from config: checks if root.fields has both 'folder' and 'pageSegment'\n *\n * @param config - The Puck config to check\n * @param explicitProp - Optional explicit hasPageTree prop value\n * @returns Whether page-tree fields should be injected\n */\nexport function detectPageTree(config: PuckConfig, explicitProp?: boolean): boolean {\n // Explicit prop takes precedence\n if (explicitProp !== undefined) {\n return explicitProp\n }\n\n // Auto-detect from config: if root.fields already has folder and pageSegment,\n // the user is using pageTreeRoot preset - don't double-inject\n const rootFields = config.root?.fields || {}\n const hasPageTreeFields = 'folder' in rootFields && 'pageSegment' in rootFields\n\n // If fields already exist, page-tree is already configured (via preset)\n // Return false to avoid re-injecting\n return false && hasPageTreeFields // Never auto-inject - require explicit opt-in\n}\n\n/**\n * Checks if a config already has page-tree fields configured.\n * Useful for determining if injectPageTreeFields would be redundant.\n *\n * @param config - The Puck config to check\n * @returns Whether the config already has page-tree fields\n */\nexport function hasPageTreeFields(config: PuckConfig): boolean {\n const rootFields = config.root?.fields || {}\n return 'folder' in rootFields && 'pageSegment' in rootFields\n}\n"],"names":["detectPageTree","config","explicitProp","undefined","rootFields","root","fields","hasPageTreeFields"],"mappings":"AAEA;;;;;;;;;;CAUC,GACD,OAAO,SAASA,eAAeC,MAAkB,EAAEC,YAAsB;IACvE,iCAAiC;IACjC,IAAIA,iBAAiBC,WAAW;QAC9B,OAAOD;IACT;IAEA,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAME,aAAaH,OAAOI,IAAI,EAAEC,UAAU,CAAC;IAC3C,MAAMC,oBAAoB,YAAYH,cAAc,iBAAiBA;IAErE,wEAAwE;IACxE,qCAAqC;IACrC,OAAO,SAASG,kBAAkB,8CAA8C;;AAClF;AAEA;;;;;;CAMC,GACD,OAAO,SAASA,kBAAkBN,MAAkB;IAClD,MAAMG,aAAaH,OAAOI,IAAI,EAAEC,UAAU,CAAC;IAC3C,OAAO,YAAYF,cAAc,iBAAiBA;AACpD"}
@@ -1,3 +1,4 @@
1
1
  export { injectPageTreeFields } from './injectPageTreeFields.js';
2
2
  export { detectPageTree, hasPageTreeFields } from './detectPageTree.js';
3
+
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/editor/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"sources":["../../../src/editor/utils/index.ts"],"sourcesContent":["export { injectPageTreeFields } from './injectPageTreeFields.js'\nexport { detectPageTree, hasPageTreeFields } from './detectPageTree.js'\n"],"names":["injectPageTreeFields","detectPageTree","hasPageTreeFields"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,sBAAqB"}
@@ -7,16 +7,19 @@ import { createSlugPreviewField } from '../../fields/SlugPreviewField.js';
7
7
  *
8
8
  * @param config - The base Puck config to enhance
9
9
  * @returns A new config with page-tree fields injected into root.fields
10
- */
11
- export function injectPageTreeFields(config) {
10
+ */ export function injectPageTreeFields(config) {
12
11
  // Create page-tree specific fields
13
12
  const pageTreeFields = {
14
- folder: createFolderPickerField({ label: 'Folder' }),
15
- pageSegment: createLockedPageSegmentField({ label: 'Page Segment' }),
13
+ folder: createFolderPickerField({
14
+ label: 'Folder'
15
+ }),
16
+ pageSegment: createLockedPageSegmentField({
17
+ label: 'Page Segment'
18
+ }),
16
19
  slug: createSlugPreviewField({
17
20
  label: 'URL Slug',
18
- hint: 'Auto-generated from folder + page segment',
19
- }),
21
+ hint: 'Auto-generated from folder + page segment'
22
+ })
20
23
  };
21
24
  // Merge page-tree fields into root config, replacing existing slug field
22
25
  const existingRootFields = config.root?.fields || {};
@@ -27,9 +30,10 @@ export function injectPageTreeFields(config) {
27
30
  ...config.root,
28
31
  fields: {
29
32
  ...otherFields,
30
- ...pageTreeFields,
31
- },
32
- },
33
+ ...pageTreeFields
34
+ }
35
+ }
33
36
  };
34
37
  }
38
+
35
39
  //# sourceMappingURL=injectPageTreeFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectPageTreeFields.js","sourceRoot":"","sources":["../../../src/editor/utils/injectPageTreeFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkB;IACrD,mCAAmC;IACnC,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpD,WAAW,EAAE,4BAA4B,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QACpE,IAAI,EAAE,sBAAsB,CAAC;YAC3B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,2CAA2C;SAClD,CAAC;KACH,CAAA;IAED,yEAAyE;IACzE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAA;IACpD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,GAAG,kBAA6C,CAAA;IAE7F,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE;YACJ,GAAG,MAAM,CAAC,IAAI;YACd,MAAM,EAAE;gBACN,GAAG,WAAW;gBACd,GAAG,cAAc;aAClB;SACF;KACY,CAAA;AACjB,CAAC"}
1
+ {"version":3,"sources":["../../../src/editor/utils/injectPageTreeFields.ts"],"sourcesContent":["import type { Config as PuckConfig } from '@puckeditor/core'\nimport { createFolderPickerField } from '../../fields/FolderPickerField.js'\nimport { createLockedPageSegmentField } from '../../fields/PageSegmentField.js'\nimport { createSlugPreviewField } from '../../fields/SlugPreviewField.js'\n\n/**\n * Injects page-tree fields (folder, pageSegment, slug) into a Puck config's root fields.\n * Replaces any existing slug field with the page-tree slug preview.\n *\n * @param config - The base Puck config to enhance\n * @returns A new config with page-tree fields injected into root.fields\n */\nexport function injectPageTreeFields(config: PuckConfig): PuckConfig {\n // Create page-tree specific fields\n const pageTreeFields = {\n folder: createFolderPickerField({ label: 'Folder' }),\n pageSegment: createLockedPageSegmentField({ label: 'Page Segment' }),\n slug: createSlugPreviewField({\n label: 'URL Slug',\n hint: 'Auto-generated from folder + page segment',\n }),\n }\n\n // Merge page-tree fields into root config, replacing existing slug field\n const existingRootFields = config.root?.fields || {}\n const { slug: _existingSlug, ...otherFields } = existingRootFields as Record<string, unknown>\n\n return {\n ...config,\n root: {\n ...config.root,\n fields: {\n ...otherFields,\n ...pageTreeFields,\n },\n },\n } as PuckConfig\n}\n"],"names":["createFolderPickerField","createLockedPageSegmentField","createSlugPreviewField","injectPageTreeFields","config","pageTreeFields","folder","label","pageSegment","slug","hint","existingRootFields","root","fields","_existingSlug","otherFields"],"mappings":"AACA,SAASA,uBAAuB,QAAQ,oCAAmC;AAC3E,SAASC,4BAA4B,QAAQ,mCAAkC;AAC/E,SAASC,sBAAsB,QAAQ,mCAAkC;AAEzE;;;;;;CAMC,GACD,OAAO,SAASC,qBAAqBC,MAAkB;IACrD,mCAAmC;IACnC,MAAMC,iBAAiB;QACrBC,QAAQN,wBAAwB;YAAEO,OAAO;QAAS;QAClDC,aAAaP,6BAA6B;YAAEM,OAAO;QAAe;QAClEE,MAAMP,uBAAuB;YAC3BK,OAAO;YACPG,MAAM;QACR;IACF;IAEA,yEAAyE;IACzE,MAAMC,qBAAqBP,OAAOQ,IAAI,EAAEC,UAAU,CAAC;IACnD,MAAM,EAAEJ,MAAMK,aAAa,EAAE,GAAGC,aAAa,GAAGJ;IAEhD,OAAO;QACL,GAAGP,MAAM;QACTQ,MAAM;YACJ,GAAGR,OAAOQ,IAAI;YACdC,QAAQ;gBACN,GAAGE,WAAW;gBACd,GAAGV,cAAc;YACnB;QACF;IACF;AACF"}
@@ -2,39 +2,40 @@ import { pagePatternSystemContext } from '../ai/presets/index.js';
2
2
  /**
3
3
  * Collection slug for AI context
4
4
  * Matches the auto-generated collection from createPuckPlugin
5
- */
6
- const AI_CONTEXT_COLLECTION = 'puck-ai-context';
5
+ */ const AI_CONTEXT_COLLECTION = 'puck-ai-context';
7
6
  /**
8
7
  * Fetches dynamic context entries from the database
9
8
  * @param req - The Payload request object
10
9
  * @returns Concatenated context string or undefined if no entries
11
- */
12
- async function fetchDynamicContext(req) {
10
+ */ async function fetchDynamicContext(req) {
13
11
  try {
14
12
  // Check if the context collection exists (it's optional)
15
13
  const collections = req.payload.config.collections;
16
- const hasContextCollection = collections?.some((c) => c.slug === AI_CONTEXT_COLLECTION);
14
+ const hasContextCollection = collections?.some((c)=>c.slug === AI_CONTEXT_COLLECTION);
17
15
  if (!hasContextCollection) {
18
16
  return undefined;
19
17
  }
20
18
  // Fetch enabled context entries, sorted by order
21
19
  const result = await req.payload.find({
22
20
  collection: AI_CONTEXT_COLLECTION,
23
- where: { enabled: { equals: true } },
21
+ where: {
22
+ enabled: {
23
+ equals: true
24
+ }
25
+ },
24
26
  sort: 'order',
25
- limit: 100, // Reasonable limit for context entries
27
+ limit: 100
26
28
  });
27
29
  if (!result.docs || result.docs.length === 0) {
28
30
  return undefined;
29
31
  }
30
32
  // Format each context entry with its name as a header
31
- const contextBlocks = result.docs.map((doc) => {
33
+ const contextBlocks = result.docs.map((doc)=>{
32
34
  const header = doc.category ? `## ${doc.name} (${doc.category})` : `## ${doc.name}`;
33
35
  return `${header}\n\n${doc.content}`;
34
36
  });
35
37
  return contextBlocks.join('\n\n---\n\n');
36
- }
37
- catch (e) {
38
+ } catch (e) {
38
39
  // Log but don't fail - context is optional
39
40
  console.warn('[payload-puck] Failed to fetch dynamic AI context:', e);
40
41
  return undefined;
@@ -55,27 +56,37 @@ async function fetchDynamicContext(req) {
55
56
  * context: 'You build pages for Acme Corp...',
56
57
  * },
57
58
  * })
58
- */
59
- export function createAiEndpointHandler(options = {}) {
60
- return async (req) => {
59
+ */ export function createAiEndpointHandler(options = {}) {
60
+ return async (req)=>{
61
61
  // 1. Require authentication - AI features are admin-only
62
62
  if (!req.user) {
63
- return Response.json({ error: 'Unauthorized' }, { status: 401 });
63
+ return Response.json({
64
+ error: 'Unauthorized'
65
+ }, {
66
+ status: 401
67
+ });
64
68
  }
65
69
  // 2. Lazy import to avoid bundle bloat (like PostCSS pattern in styles.ts)
66
70
  let puckHandler;
67
71
  try {
68
72
  const cloudClient = await import('@puckeditor/cloud-client');
69
73
  puckHandler = cloudClient.puckHandler;
70
- }
71
- catch (e) {
74
+ } catch (e) {
72
75
  console.error('[payload-puck] Failed to load @puckeditor/cloud-client:', e);
73
- return Response.json({ error: 'AI requires @puckeditor/cloud-client. This should be bundled with the plugin.' }, { status: 500 });
76
+ return Response.json({
77
+ error: 'AI requires @puckeditor/cloud-client. This should be bundled with the plugin.'
78
+ }, {
79
+ status: 500
80
+ });
74
81
  }
75
82
  // 3. Check for API key
76
83
  const apiKey = process.env.PUCK_API_KEY;
77
84
  if (!apiKey) {
78
- return Response.json({ error: 'PUCK_API_KEY environment variable is not set' }, { status: 500 });
85
+ return Response.json({
86
+ error: 'PUCK_API_KEY environment variable is not set'
87
+ }, {
88
+ status: 500
89
+ });
79
90
  }
80
91
  // 4. Forward to Puck Cloud handler
81
92
  // puckHandler expects a standard Web Request object with specific pathname
@@ -92,25 +103,31 @@ export function createAiEndpointHandler(options = {}) {
92
103
  // BUT: if field has AI instructions, don't exclude it (we want AI to use it)
93
104
  // This handles fields added by page-tree or user customization
94
105
  if (body?.config?.root?.fields) {
95
- for (const [fieldName, field] of Object.entries(body.config.root.fields)) {
106
+ for (const [fieldName, field] of Object.entries(body.config.root.fields)){
96
107
  const f = field;
97
108
  // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions
98
109
  if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {
99
- f.ai = { ...f.ai, exclude: true };
110
+ f.ai = {
111
+ ...f.ai,
112
+ exclude: true
113
+ };
100
114
  }
101
115
  }
102
116
  }
103
117
  // Auto-exclude custom fields in components that don't have ai.exclude set
104
118
  // BUT: if field has AI instructions, don't exclude it (we want AI to use it)
105
119
  if (body?.config?.components) {
106
- for (const [, comp] of Object.entries(body.config.components)) {
120
+ for (const [, comp] of Object.entries(body.config.components)){
107
121
  const c = comp;
108
122
  if (c.fields) {
109
- for (const [, field] of Object.entries(c.fields)) {
123
+ for (const [, field] of Object.entries(c.fields)){
110
124
  const f = field;
111
125
  // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions
112
126
  if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {
113
- f.ai = { ...f.ai, exclude: true };
127
+ f.ai = {
128
+ ...f.ai,
129
+ exclude: true
130
+ };
114
131
  }
115
132
  }
116
133
  }
@@ -118,7 +135,11 @@ export function createAiEndpointHandler(options = {}) {
118
135
  }
119
136
  // Validate required fields - puckHandler expects config and pageData
120
137
  if (!body) {
121
- return Response.json({ error: 'Request body is required' }, { status: 400 });
138
+ return Response.json({
139
+ error: 'Request body is required'
140
+ }, {
141
+ status: 400
142
+ });
122
143
  }
123
144
  // Ensure config exists (puckHandler needs this)
124
145
  if (!body.config) {
@@ -140,7 +161,7 @@ export function createAiEndpointHandler(options = {}) {
140
161
  const webRequest = new Request(url, {
141
162
  method: 'POST',
142
163
  headers,
143
- body: JSON.stringify(body),
164
+ body: JSON.stringify(body)
144
165
  });
145
166
  // Build AI options, only including properties that have values
146
167
  // (passing `tools: undefined` explicitly prevents the default from applying)
@@ -171,24 +192,24 @@ export function createAiEndpointHandler(options = {}) {
171
192
  if (options.tools && Object.keys(options.tools).length > 0) {
172
193
  const toolContext = {
173
194
  payload: req.payload,
174
- user: req.user,
195
+ user: req.user
175
196
  };
176
197
  // Create wrapped tools that inject the context
177
198
  const wrappedTools = {};
178
- for (const [name, tool] of Object.entries(options.tools)) {
199
+ for (const [name, tool] of Object.entries(options.tools)){
179
200
  wrappedTools[name] = {
180
201
  name: tool.name,
181
202
  description: tool.description,
182
203
  inputSchema: tool.inputSchema,
183
204
  // Wrap execute to inject Payload context
184
- execute: (input) => tool.execute(input, toolContext),
205
+ execute: (input)=>tool.execute(input, toolContext)
185
206
  };
186
207
  }
187
208
  aiOptions.tools = wrappedTools;
188
209
  }
189
210
  const response = await puckHandler(webRequest, {
190
211
  ai: aiOptions,
191
- apiKey,
212
+ apiKey
192
213
  });
193
214
  if (!response.ok) {
194
215
  // Try to get more info from error response
@@ -196,18 +217,21 @@ export function createAiEndpointHandler(options = {}) {
196
217
  try {
197
218
  const errorBody = await clonedResponse.json();
198
219
  console.error('[payload-puck] Puck Cloud error body:', errorBody);
199
- }
200
- catch {
220
+ } catch {
201
221
  const errorText = await clonedResponse.text();
202
222
  console.error('[payload-puck] Puck Cloud error text:', errorText);
203
223
  }
204
224
  }
205
225
  return response;
206
- }
207
- catch (e) {
226
+ } catch (e) {
208
227
  console.error('[payload-puck] AI handler error:', e);
209
- return Response.json({ error: e instanceof Error ? e.message : 'AI request failed' }, { status: 500 });
228
+ return Response.json({
229
+ error: e instanceof Error ? e.message : 'AI request failed'
230
+ }, {
231
+ status: 500
232
+ });
210
233
  }
211
234
  };
212
235
  }
236
+
213
237
  //# sourceMappingURL=ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/endpoints/ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/endpoints/ai.ts"],"sourcesContent":["import type { PayloadHandler, PayloadRequest } from 'payload'\nimport type { AiTool, AiToolContext, AiContext } from '../ai/types.js'\nimport { pagePatternSystemContext } from '../ai/presets/index.js'\n\n// Re-export for convenience\nexport type { AiTool, AiToolContext }\n\n/**\n * Collection slug for AI context\n * Matches the auto-generated collection from createPuckPlugin\n */\nconst AI_CONTEXT_COLLECTION = 'puck-ai-context'\n\n/**\n * Fetches dynamic context entries from the database\n * @param req - The Payload request object\n * @returns Concatenated context string or undefined if no entries\n */\nasync function fetchDynamicContext(req: PayloadRequest): Promise<string | undefined> {\n try {\n // Check if the context collection exists (it's optional)\n const collections = req.payload.config.collections\n const hasContextCollection = collections?.some((c) => c.slug === AI_CONTEXT_COLLECTION)\n\n if (!hasContextCollection) {\n return undefined\n }\n\n // Fetch enabled context entries, sorted by order\n const result = await req.payload.find({\n collection: AI_CONTEXT_COLLECTION,\n where: { enabled: { equals: true } },\n sort: 'order',\n limit: 100, // Reasonable limit for context entries\n })\n\n if (!result.docs || result.docs.length === 0) {\n return undefined\n }\n\n // Format each context entry with its name as a header\n const contextBlocks = (result.docs as AiContext[]).map((doc) => {\n const header = doc.category ? `## ${doc.name} (${doc.category})` : `## ${doc.name}`\n return `${header}\\n\\n${doc.content}`\n })\n\n return contextBlocks.join('\\n\\n---\\n\\n')\n } catch (e) {\n // Log but don't fail - context is optional\n console.warn('[payload-puck] Failed to fetch dynamic AI context:', e)\n return undefined\n }\n}\n\n/**\n * Options for the AI endpoint handler\n */\nexport interface AiEndpointOptions {\n /**\n * Business context for AI generation\n * Helps the AI understand your brand, tone, and requirements\n */\n context?: string\n /**\n * Custom tools for AI to use during generation\n * These allow AI to perform actions like database lookups, API calls, etc.\n */\n tools?: Record<string, AiTool>\n}\n\n/**\n * Creates a Payload endpoint handler for Puck AI\n *\n * This handler wraps @puckeditor/cloud-client's puckHandler with\n * Payload authentication. It's auto-registered by createPuckPlugin\n * when `ai.enabled: true`.\n *\n * @example\n * // Automatically registered at /api/puck/ai when:\n * createPuckPlugin({\n * ai: {\n * enabled: true,\n * context: 'You build pages for Acme Corp...',\n * },\n * })\n */\nexport function createAiEndpointHandler(options: AiEndpointOptions = {}): PayloadHandler {\n return async (req) => {\n // 1. Require authentication - AI features are admin-only\n if (!req.user) {\n return Response.json({ error: 'Unauthorized' }, { status: 401 })\n }\n\n // 2. Lazy import to avoid bundle bloat (like PostCSS pattern in styles.ts)\n let puckHandler: typeof import('@puckeditor/cloud-client').puckHandler\n try {\n const cloudClient = await import('@puckeditor/cloud-client')\n puckHandler = cloudClient.puckHandler\n } catch (e) {\n console.error('[payload-puck] Failed to load @puckeditor/cloud-client:', e)\n return Response.json(\n { error: 'AI requires @puckeditor/cloud-client. This should be bundled with the plugin.' },\n { status: 500 }\n )\n }\n\n // 3. Check for API key\n const apiKey = process.env.PUCK_API_KEY\n if (!apiKey) {\n return Response.json(\n { error: 'PUCK_API_KEY environment variable is not set' },\n { status: 500 }\n )\n }\n\n // 4. Forward to Puck Cloud handler\n // puckHandler expects a standard Web Request object with specific pathname\n // The handler internally routes based on pathname - it expects /api/puck/chat\n // See: @puckeditor/cloud-client/src/routes.ts - routeRegistry['/api/puck/chat']\n try {\n // Get the request body\n const body = await req.json?.()\n\n // NOTE: We previously removed null values from defaultProps here, but this\n // was preventing the AI from knowing about optional styling fields.\n // Per Puck docs: \"All fields in defaultProps are considered required by the agent\"\n // Fields with null values still need to be present so the AI knows they exist.\n\n // Auto-exclude custom fields in root that don't have ai.exclude set\n // BUT: if field has AI instructions, don't exclude it (we want AI to use it)\n // This handles fields added by page-tree or user customization\n if (body?.config?.root?.fields) {\n for (const [fieldName, field] of Object.entries(body.config.root.fields)) {\n const f = field as any\n // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions\n if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {\n f.ai = { ...f.ai, exclude: true }\n }\n }\n }\n\n // Auto-exclude custom fields in components that don't have ai.exclude set\n // BUT: if field has AI instructions, don't exclude it (we want AI to use it)\n if (body?.config?.components) {\n for (const [, comp] of Object.entries(body.config.components)) {\n const c = comp as any\n if (c.fields) {\n for (const [, field] of Object.entries(c.fields)) {\n const f = field as any\n // Only exclude if: is custom, doesn't have exclude set, AND doesn't have instructions\n if (f.type === 'custom' && !f.ai?.exclude && !f.ai?.instructions) {\n f.ai = { ...f.ai, exclude: true }\n }\n }\n }\n }\n }\n\n // Validate required fields - puckHandler expects config and pageData\n if (!body) {\n return Response.json({ error: 'Request body is required' }, { status: 400 })\n }\n\n // Ensure config exists (puckHandler needs this)\n if (!body.config) {\n console.warn('[payload-puck] AI request missing config, this may cause issues')\n }\n\n // Construct URL with the pathname puckHandler expects\n // Our Payload endpoint is /api/puck/ai but puckHandler routes to /api/puck/chat\n const protocol = req.headers.get('x-forwarded-proto') || 'http'\n const host = req.headers.get('host') || 'localhost'\n const url = `${protocol}://${host}/api/puck/chat`\n\n // Create new headers without content-length (will be recalculated)\n const headers = new Headers()\n headers.set('content-type', 'application/json')\n // Copy auth headers\n const authHeader = req.headers.get('authorization')\n if (authHeader) {\n headers.set('authorization', authHeader)\n }\n\n const webRequest = new Request(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n })\n\n // Build AI options, only including properties that have values\n // (passing `tools: undefined` explicitly prevents the default from applying)\n const aiOptions: { context?: string; tools?: Record<string, any> } = {}\n\n // Build context from multiple sources:\n // 1. Static context from plugin config\n // 2. Dynamic context from database (puck-ai-context collection)\n // 3. Page pattern system context (composition guidance)\n const contextParts: string[] = []\n\n // Add static context from plugin config\n if (options.context) {\n contextParts.push(options.context)\n }\n\n // Fetch and add dynamic context from database\n const dynamicContext = await fetchDynamicContext(req)\n if (dynamicContext) {\n contextParts.push('# Business Context\\n\\n' + dynamicContext)\n }\n\n // Always add page pattern system context for better composition\n if (pagePatternSystemContext) {\n contextParts.push(pagePatternSystemContext)\n }\n\n // Combine all context parts\n if (contextParts.length > 0) {\n aiOptions.context = contextParts.join('\\n\\n---\\n\\n')\n }\n\n // Wrap tools to inject Payload context into execute functions\n if (options.tools && Object.keys(options.tools).length > 0) {\n const toolContext: AiToolContext = {\n payload: req.payload,\n user: req.user,\n }\n\n // Create wrapped tools that inject the context\n const wrappedTools: Record<string, any> = {}\n for (const [name, tool] of Object.entries(options.tools)) {\n wrappedTools[name] = {\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n // Wrap execute to inject Payload context\n execute: (input: any) => tool.execute(input, toolContext),\n }\n }\n aiOptions.tools = wrappedTools\n }\n\n const response = await puckHandler(webRequest, {\n ai: aiOptions,\n apiKey,\n })\n\n if (!response.ok) {\n // Try to get more info from error response\n const clonedResponse = response.clone()\n try {\n const errorBody = await clonedResponse.json()\n console.error('[payload-puck] Puck Cloud error body:', errorBody)\n } catch {\n const errorText = await clonedResponse.text()\n console.error('[payload-puck] Puck Cloud error text:', errorText)\n }\n }\n\n return response\n } catch (e) {\n console.error('[payload-puck] AI handler error:', e)\n return Response.json(\n { error: e instanceof Error ? e.message : 'AI request failed' },\n { status: 500 }\n )\n }\n }\n}\n"],"names":["pagePatternSystemContext","AI_CONTEXT_COLLECTION","fetchDynamicContext","req","collections","payload","config","hasContextCollection","some","c","slug","undefined","result","find","collection","where","enabled","equals","sort","limit","docs","length","contextBlocks","map","doc","header","category","name","content","join","e","console","warn","createAiEndpointHandler","options","user","Response","json","error","status","puckHandler","cloudClient","apiKey","process","env","PUCK_API_KEY","body","root","fields","fieldName","field","Object","entries","f","type","ai","exclude","instructions","components","comp","protocol","headers","get","host","url","Headers","set","authHeader","webRequest","Request","method","JSON","stringify","aiOptions","contextParts","context","push","dynamicContext","tools","keys","toolContext","wrappedTools","tool","description","inputSchema","execute","input","response","ok","clonedResponse","clone","errorBody","errorText","text","Error","message"],"mappings":"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"}
@@ -1,19 +1,21 @@
1
1
  /**
2
2
  * Collection slug for AI context
3
3
  * Matches the auto-generated collection from createPuckPlugin
4
- */
5
- const COLLECTION = 'puck-ai-context';
4
+ */ const COLLECTION = 'puck-ai-context';
6
5
  /**
7
6
  * List all AI context entries, sorted by order
8
7
  * Only returns enabled entries by default
9
8
  *
10
9
  * GET /api/puck/ai-context
11
10
  * Query: ?all=true to include disabled entries
12
- */
13
- export function createContextListHandler() {
14
- return async (req) => {
11
+ */ export function createContextListHandler() {
12
+ return async (req)=>{
15
13
  if (!req.user) {
16
- return Response.json({ error: 'Unauthorized' }, { status: 401 });
14
+ return Response.json({
15
+ error: 'Unauthorized'
16
+ }, {
17
+ status: 401
18
+ });
17
19
  }
18
20
  try {
19
21
  // Check if we should include all entries (including disabled)
@@ -21,14 +23,21 @@ export function createContextListHandler() {
21
23
  const result = await req.payload.find({
22
24
  collection: COLLECTION,
23
25
  sort: 'order',
24
- limit: 100, // Reasonable limit for context entries
25
- where: includeAll ? {} : { enabled: { equals: true } },
26
+ limit: 100,
27
+ where: includeAll ? {} : {
28
+ enabled: {
29
+ equals: true
30
+ }
31
+ }
26
32
  });
27
33
  return Response.json(result);
28
- }
29
- catch (e) {
34
+ } catch (e) {
30
35
  console.error('[payload-puck] Error listing context:', e);
31
- return Response.json({ error: e instanceof Error ? e.message : 'Failed to list context' }, { status: 500 });
36
+ return Response.json({
37
+ error: e instanceof Error ? e.message : 'Failed to list context'
38
+ }, {
39
+ status: 500
40
+ });
32
41
  }
33
42
  };
34
43
  }
@@ -37,26 +46,36 @@ export function createContextListHandler() {
37
46
  *
38
47
  * POST /api/puck/ai-context
39
48
  * Body: { name: string, content: string, category?: string, enabled?: boolean, order?: number }
40
- */
41
- export function createContextCreateHandler() {
42
- return async (req) => {
49
+ */ export function createContextCreateHandler() {
50
+ return async (req)=>{
43
51
  if (!req.user) {
44
- return Response.json({ error: 'Unauthorized' }, { status: 401 });
52
+ return Response.json({
53
+ error: 'Unauthorized'
54
+ }, {
55
+ status: 401
56
+ });
45
57
  }
46
58
  try {
47
59
  const data = await req.json?.();
48
60
  if (!data) {
49
- return Response.json({ error: 'Request body is required' }, { status: 400 });
61
+ return Response.json({
62
+ error: 'Request body is required'
63
+ }, {
64
+ status: 400
65
+ });
50
66
  }
51
67
  const doc = await req.payload.create({
52
68
  collection: COLLECTION,
53
- data,
69
+ data
54
70
  });
55
71
  return Response.json(doc);
56
- }
57
- catch (e) {
72
+ } catch (e) {
58
73
  console.error('[payload-puck] Error creating context:', e);
59
- return Response.json({ error: e instanceof Error ? e.message : 'Failed to create context' }, { status: 500 });
74
+ return Response.json({
75
+ error: e instanceof Error ? e.message : 'Failed to create context'
76
+ }, {
77
+ status: 500
78
+ });
60
79
  }
61
80
  };
62
81
  }
@@ -65,31 +84,45 @@ export function createContextCreateHandler() {
65
84
  *
66
85
  * PATCH /api/puck/ai-context/:id
67
86
  * Body: { name?: string, content?: string, category?: string, enabled?: boolean, order?: number }
68
- */
69
- export function createContextUpdateHandler() {
70
- return async (req) => {
87
+ */ export function createContextUpdateHandler() {
88
+ return async (req)=>{
71
89
  if (!req.user) {
72
- return Response.json({ error: 'Unauthorized' }, { status: 401 });
90
+ return Response.json({
91
+ error: 'Unauthorized'
92
+ }, {
93
+ status: 401
94
+ });
73
95
  }
74
96
  const id = req.routeParams?.id;
75
97
  if (!id) {
76
- return Response.json({ error: 'Context ID is required' }, { status: 400 });
98
+ return Response.json({
99
+ error: 'Context ID is required'
100
+ }, {
101
+ status: 400
102
+ });
77
103
  }
78
104
  try {
79
105
  const data = await req.json?.();
80
106
  if (!data) {
81
- return Response.json({ error: 'Request body is required' }, { status: 400 });
107
+ return Response.json({
108
+ error: 'Request body is required'
109
+ }, {
110
+ status: 400
111
+ });
82
112
  }
83
113
  const doc = await req.payload.update({
84
114
  collection: COLLECTION,
85
115
  id,
86
- data,
116
+ data
87
117
  });
88
118
  return Response.json(doc);
89
- }
90
- catch (e) {
119
+ } catch (e) {
91
120
  console.error('[payload-puck] Error updating context:', e);
92
- return Response.json({ error: e instanceof Error ? e.message : 'Failed to update context' }, { status: 500 });
121
+ return Response.json({
122
+ error: e instanceof Error ? e.message : 'Failed to update context'
123
+ }, {
124
+ status: 500
125
+ });
93
126
  }
94
127
  };
95
128
  }
@@ -97,27 +130,40 @@ export function createContextUpdateHandler() {
97
130
  * Delete an AI context entry
98
131
  *
99
132
  * DELETE /api/puck/ai-context/:id
100
- */
101
- export function createContextDeleteHandler() {
102
- return async (req) => {
133
+ */ export function createContextDeleteHandler() {
134
+ return async (req)=>{
103
135
  if (!req.user) {
104
- return Response.json({ error: 'Unauthorized' }, { status: 401 });
136
+ return Response.json({
137
+ error: 'Unauthorized'
138
+ }, {
139
+ status: 401
140
+ });
105
141
  }
106
142
  const id = req.routeParams?.id;
107
143
  if (!id) {
108
- return Response.json({ error: 'Context ID is required' }, { status: 400 });
144
+ return Response.json({
145
+ error: 'Context ID is required'
146
+ }, {
147
+ status: 400
148
+ });
109
149
  }
110
150
  try {
111
151
  await req.payload.delete({
112
152
  collection: COLLECTION,
113
- id,
153
+ id
114
154
  });
115
- return Response.json({ success: true });
116
- }
117
- catch (e) {
155
+ return Response.json({
156
+ success: true
157
+ });
158
+ } catch (e) {
118
159
  console.error('[payload-puck] Error deleting context:', e);
119
- return Response.json({ error: e instanceof Error ? e.message : 'Failed to delete context' }, { status: 500 });
160
+ return Response.json({
161
+ error: e instanceof Error ? e.message : 'Failed to delete context'
162
+ }, {
163
+ status: 500
164
+ });
120
165
  }
121
166
  };
122
167
  }
168
+
123
169
  //# sourceMappingURL=context.js.map