datocms-plugin-sdk 1.1.1 → 2.0.1

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 (393) hide show
  1. package/dist/cjs/connect.js +75 -214
  2. package/dist/cjs/connect.js.map +1 -1
  3. package/dist/cjs/{types.js → ctx/base.js} +1 -1
  4. package/dist/cjs/ctx/base.js.map +1 -0
  5. package/dist/cjs/ctx/commonExtras/field.js +3 -0
  6. package/dist/cjs/ctx/commonExtras/field.js.map +1 -0
  7. package/dist/cjs/ctx/commonExtras/itemForm.js +3 -0
  8. package/dist/cjs/ctx/commonExtras/itemForm.js.map +1 -0
  9. package/dist/cjs/ctx/commonExtras/sizing.js +3 -0
  10. package/dist/cjs/ctx/commonExtras/sizing.js.map +1 -0
  11. package/dist/cjs/ctx/pluginFrame.js +3 -0
  12. package/dist/cjs/ctx/pluginFrame.js.map +1 -0
  13. package/dist/cjs/hooks/assetSources.js +3 -0
  14. package/dist/cjs/hooks/assetSources.js.map +1 -0
  15. package/dist/cjs/hooks/buildItemPresentationInfo.js +3 -0
  16. package/dist/cjs/hooks/buildItemPresentationInfo.js.map +1 -0
  17. package/dist/cjs/hooks/contentAreaSidebarItems.js +3 -0
  18. package/dist/cjs/hooks/contentAreaSidebarItems.js.map +1 -0
  19. package/dist/cjs/hooks/customBlockStylesForStructuredTextField.js +3 -0
  20. package/dist/cjs/hooks/customBlockStylesForStructuredTextField.js.map +1 -0
  21. package/dist/cjs/hooks/customMarksForStructuredTextField.js +3 -0
  22. package/dist/cjs/hooks/customMarksForStructuredTextField.js.map +1 -0
  23. package/dist/cjs/hooks/executeFieldDropdownAction.js +3 -0
  24. package/dist/cjs/hooks/executeFieldDropdownAction.js.map +1 -0
  25. package/dist/cjs/hooks/executeItemFormDropdownAction.js +3 -0
  26. package/dist/cjs/hooks/executeItemFormDropdownAction.js.map +1 -0
  27. package/dist/cjs/hooks/executeItemsDropdownAction.js +3 -0
  28. package/dist/cjs/hooks/executeItemsDropdownAction.js.map +1 -0
  29. package/dist/cjs/hooks/executeUploadsDropdownAction.js +3 -0
  30. package/dist/cjs/hooks/executeUploadsDropdownAction.js.map +1 -0
  31. package/dist/cjs/hooks/fieldDropdownActions.js +3 -0
  32. package/dist/cjs/hooks/fieldDropdownActions.js.map +1 -0
  33. package/dist/cjs/hooks/initialLocationQueryForItemSelector.js +3 -0
  34. package/dist/cjs/hooks/initialLocationQueryForItemSelector.js.map +1 -0
  35. package/dist/cjs/hooks/itemCollectionOutlets.js +3 -0
  36. package/dist/cjs/hooks/itemCollectionOutlets.js.map +1 -0
  37. package/dist/cjs/hooks/itemFormDropdownActions.js +3 -0
  38. package/dist/cjs/hooks/itemFormDropdownActions.js.map +1 -0
  39. package/dist/cjs/hooks/itemFormOutlets.js +3 -0
  40. package/dist/cjs/hooks/itemFormOutlets.js.map +1 -0
  41. package/dist/cjs/hooks/itemFormSidebarPanels.js +3 -0
  42. package/dist/cjs/hooks/itemFormSidebarPanels.js.map +1 -0
  43. package/dist/cjs/hooks/itemFormSidebars.js +3 -0
  44. package/dist/cjs/hooks/itemFormSidebars.js.map +1 -0
  45. package/dist/cjs/hooks/itemsDropdownActions.js +3 -0
  46. package/dist/cjs/hooks/itemsDropdownActions.js.map +1 -0
  47. package/dist/cjs/hooks/mainNavigationTabs.js +3 -0
  48. package/dist/cjs/hooks/mainNavigationTabs.js.map +1 -0
  49. package/dist/cjs/hooks/manualFieldExtensions.js +3 -0
  50. package/dist/cjs/hooks/manualFieldExtensions.js.map +1 -0
  51. package/dist/cjs/hooks/onBeforeItemUpsert.js +3 -0
  52. package/dist/cjs/hooks/onBeforeItemUpsert.js.map +1 -0
  53. package/dist/cjs/hooks/onBeforeItemsDestroy.js +3 -0
  54. package/dist/cjs/hooks/onBeforeItemsDestroy.js.map +1 -0
  55. package/dist/cjs/hooks/onBeforeItemsPublish.js +3 -0
  56. package/dist/cjs/hooks/onBeforeItemsPublish.js.map +1 -0
  57. package/dist/cjs/hooks/onBeforeItemsUnpublish.js +3 -0
  58. package/dist/cjs/hooks/onBeforeItemsUnpublish.js.map +1 -0
  59. package/dist/cjs/hooks/onBoot.js +3 -0
  60. package/dist/cjs/hooks/onBoot.js.map +1 -0
  61. package/dist/cjs/hooks/overrideFieldExtensions.js +3 -0
  62. package/dist/cjs/hooks/overrideFieldExtensions.js.map +1 -0
  63. package/dist/cjs/hooks/renderAssetSource.js +11 -0
  64. package/dist/cjs/hooks/renderAssetSource.js.map +1 -0
  65. package/dist/cjs/hooks/renderConfigScreen.js +11 -0
  66. package/dist/cjs/hooks/renderConfigScreen.js.map +1 -0
  67. package/dist/cjs/hooks/renderFieldExtension.js +11 -0
  68. package/dist/cjs/hooks/renderFieldExtension.js.map +1 -0
  69. package/dist/cjs/hooks/renderItemCollectionOutlet.js +11 -0
  70. package/dist/cjs/hooks/renderItemCollectionOutlet.js.map +1 -0
  71. package/dist/cjs/hooks/renderItemFormOutlet.js +11 -0
  72. package/dist/cjs/hooks/renderItemFormOutlet.js.map +1 -0
  73. package/dist/cjs/hooks/renderItemFormSidebar.js +11 -0
  74. package/dist/cjs/hooks/renderItemFormSidebar.js.map +1 -0
  75. package/dist/cjs/hooks/renderItemFormSidebarPanel.js +11 -0
  76. package/dist/cjs/hooks/renderItemFormSidebarPanel.js.map +1 -0
  77. package/dist/cjs/hooks/renderManualFieldExtensionConfigScreen.js +11 -0
  78. package/dist/cjs/hooks/renderManualFieldExtensionConfigScreen.js.map +1 -0
  79. package/dist/cjs/hooks/renderModal.js +11 -0
  80. package/dist/cjs/hooks/renderModal.js.map +1 -0
  81. package/dist/cjs/hooks/renderPage.js +11 -0
  82. package/dist/cjs/hooks/renderPage.js.map +1 -0
  83. package/dist/cjs/hooks/renderUploadSidebar.js +11 -0
  84. package/dist/cjs/hooks/renderUploadSidebar.js.map +1 -0
  85. package/dist/cjs/hooks/renderUploadSidebarPanel.js +11 -0
  86. package/dist/cjs/hooks/renderUploadSidebarPanel.js.map +1 -0
  87. package/dist/cjs/hooks/settingsAreaSidebarItemGroups.js +3 -0
  88. package/dist/cjs/hooks/settingsAreaSidebarItemGroups.js.map +1 -0
  89. package/dist/cjs/hooks/uploadSidebarPanels.js +3 -0
  90. package/dist/cjs/hooks/uploadSidebarPanels.js.map +1 -0
  91. package/dist/cjs/hooks/uploadSidebars.js +3 -0
  92. package/dist/cjs/hooks/uploadSidebars.js.map +1 -0
  93. package/dist/cjs/hooks/uploadsDropdownActions.js +3 -0
  94. package/dist/cjs/hooks/uploadsDropdownActions.js.map +1 -0
  95. package/dist/cjs/hooks/validateManualFieldExtensionParameters.js +3 -0
  96. package/dist/cjs/hooks/validateManualFieldExtensionParameters.js.map +1 -0
  97. package/dist/cjs/icon.js +3 -0
  98. package/dist/cjs/icon.js.map +1 -0
  99. package/dist/cjs/index.js +46 -1
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/manifest.js +3172 -0
  102. package/dist/cjs/manifest.js.map +1 -0
  103. package/dist/cjs/manifestTypes.js +3 -0
  104. package/dist/cjs/manifestTypes.js.map +1 -0
  105. package/dist/cjs/shared.js +3 -0
  106. package/dist/cjs/shared.js.map +1 -0
  107. package/dist/cjs/utils.js +136 -0
  108. package/dist/cjs/utils.js.map +1 -0
  109. package/dist/esm/connect.d.ts +44 -244
  110. package/dist/esm/connect.js +74 -212
  111. package/dist/esm/connect.js.map +1 -1
  112. package/dist/esm/ctx/base.d.ts +684 -0
  113. package/dist/esm/ctx/base.js +2 -0
  114. package/dist/esm/ctx/base.js.map +1 -0
  115. package/dist/esm/ctx/commonExtras/field.d.ts +29 -0
  116. package/dist/esm/ctx/commonExtras/field.js +2 -0
  117. package/dist/esm/ctx/commonExtras/field.js.map +1 -0
  118. package/dist/esm/ctx/commonExtras/itemForm.d.ts +148 -0
  119. package/dist/esm/ctx/commonExtras/itemForm.js +2 -0
  120. package/dist/esm/ctx/commonExtras/itemForm.js.map +1 -0
  121. package/dist/esm/ctx/commonExtras/sizing.d.ts +23 -0
  122. package/dist/esm/ctx/commonExtras/sizing.js +2 -0
  123. package/dist/esm/ctx/commonExtras/sizing.js.map +1 -0
  124. package/dist/esm/ctx/pluginFrame.d.ts +12 -0
  125. package/dist/esm/ctx/pluginFrame.js +2 -0
  126. package/dist/esm/ctx/pluginFrame.js.map +1 -0
  127. package/dist/esm/hooks/assetSources.d.ts +42 -0
  128. package/dist/esm/hooks/assetSources.js +2 -0
  129. package/dist/esm/hooks/assetSources.js.map +1 -0
  130. package/dist/esm/hooks/buildItemPresentationInfo.d.ts +29 -0
  131. package/dist/esm/hooks/buildItemPresentationInfo.js +2 -0
  132. package/dist/esm/hooks/buildItemPresentationInfo.js.map +1 -0
  133. package/dist/esm/hooks/contentAreaSidebarItems.d.ts +40 -0
  134. package/dist/esm/hooks/contentAreaSidebarItems.js +2 -0
  135. package/dist/esm/hooks/contentAreaSidebarItems.js.map +1 -0
  136. package/dist/esm/hooks/customBlockStylesForStructuredTextField.d.ts +36 -0
  137. package/dist/esm/hooks/customBlockStylesForStructuredTextField.js +2 -0
  138. package/dist/esm/hooks/customBlockStylesForStructuredTextField.js.map +1 -0
  139. package/dist/esm/hooks/customMarksForStructuredTextField.d.ts +57 -0
  140. package/dist/esm/hooks/customMarksForStructuredTextField.js +2 -0
  141. package/dist/esm/hooks/customMarksForStructuredTextField.js.map +1 -0
  142. package/dist/esm/hooks/executeFieldDropdownAction.d.ts +17 -0
  143. package/dist/esm/hooks/executeFieldDropdownAction.js +2 -0
  144. package/dist/esm/hooks/executeFieldDropdownAction.js.map +1 -0
  145. package/dist/esm/hooks/executeItemFormDropdownAction.d.ts +16 -0
  146. package/dist/esm/hooks/executeItemFormDropdownAction.js +2 -0
  147. package/dist/esm/hooks/executeItemFormDropdownAction.js.map +1 -0
  148. package/dist/esm/hooks/executeItemsDropdownAction.d.ts +20 -0
  149. package/dist/esm/hooks/executeItemsDropdownAction.js +2 -0
  150. package/dist/esm/hooks/executeItemsDropdownAction.js.map +1 -0
  151. package/dist/esm/hooks/executeUploadsDropdownAction.d.ts +20 -0
  152. package/dist/esm/hooks/executeUploadsDropdownAction.js +2 -0
  153. package/dist/esm/hooks/executeUploadsDropdownAction.js.map +1 -0
  154. package/dist/esm/hooks/fieldDropdownActions.d.ts +20 -0
  155. package/dist/esm/hooks/fieldDropdownActions.js +2 -0
  156. package/dist/esm/hooks/fieldDropdownActions.js.map +1 -0
  157. package/dist/esm/hooks/initialLocationQueryForItemSelector.d.ts +27 -0
  158. package/dist/esm/hooks/initialLocationQueryForItemSelector.js +2 -0
  159. package/dist/esm/hooks/initialLocationQueryForItemSelector.js.map +1 -0
  160. package/dist/esm/hooks/itemCollectionOutlets.d.ts +31 -0
  161. package/dist/esm/hooks/itemCollectionOutlets.js +2 -0
  162. package/dist/esm/hooks/itemCollectionOutlets.js.map +1 -0
  163. package/dist/esm/hooks/itemFormDropdownActions.d.ts +20 -0
  164. package/dist/esm/hooks/itemFormDropdownActions.js +2 -0
  165. package/dist/esm/hooks/itemFormDropdownActions.js.map +1 -0
  166. package/dist/esm/hooks/itemFormOutlets.d.ts +30 -0
  167. package/dist/esm/hooks/itemFormOutlets.js +2 -0
  168. package/dist/esm/hooks/itemFormOutlets.js.map +1 -0
  169. package/dist/esm/hooks/itemFormSidebarPanels.d.ts +48 -0
  170. package/dist/esm/hooks/itemFormSidebarPanels.js +2 -0
  171. package/dist/esm/hooks/itemFormSidebarPanels.js.map +1 -0
  172. package/dist/esm/hooks/itemFormSidebars.d.ts +38 -0
  173. package/dist/esm/hooks/itemFormSidebars.js +2 -0
  174. package/dist/esm/hooks/itemFormSidebars.js.map +1 -0
  175. package/dist/esm/hooks/itemsDropdownActions.d.ts +23 -0
  176. package/dist/esm/hooks/itemsDropdownActions.js +2 -0
  177. package/dist/esm/hooks/itemsDropdownActions.js.map +1 -0
  178. package/dist/esm/hooks/mainNavigationTabs.d.ts +44 -0
  179. package/dist/esm/hooks/mainNavigationTabs.js +2 -0
  180. package/dist/esm/hooks/mainNavigationTabs.js.map +1 -0
  181. package/dist/esm/hooks/manualFieldExtensions.d.ts +59 -0
  182. package/dist/esm/hooks/manualFieldExtensions.js +2 -0
  183. package/dist/esm/hooks/manualFieldExtensions.js.map +1 -0
  184. package/dist/esm/hooks/onBeforeItemUpsert.d.ts +16 -0
  185. package/dist/esm/hooks/onBeforeItemUpsert.js +2 -0
  186. package/dist/esm/hooks/onBeforeItemUpsert.js.map +1 -0
  187. package/dist/esm/hooks/onBeforeItemsDestroy.d.ts +15 -0
  188. package/dist/esm/hooks/onBeforeItemsDestroy.js +2 -0
  189. package/dist/esm/hooks/onBeforeItemsDestroy.js.map +1 -0
  190. package/dist/esm/hooks/onBeforeItemsPublish.d.ts +15 -0
  191. package/dist/esm/hooks/onBeforeItemsPublish.js +2 -0
  192. package/dist/esm/hooks/onBeforeItemsPublish.js.map +1 -0
  193. package/dist/esm/hooks/onBeforeItemsUnpublish.d.ts +15 -0
  194. package/dist/esm/hooks/onBeforeItemsUnpublish.js +2 -0
  195. package/dist/esm/hooks/onBeforeItemsUnpublish.js.map +1 -0
  196. package/dist/esm/hooks/onBoot.d.ts +11 -0
  197. package/dist/esm/hooks/onBoot.js +2 -0
  198. package/dist/esm/hooks/onBoot.js.map +1 -0
  199. package/dist/esm/hooks/overrideFieldExtensions.d.ts +88 -0
  200. package/dist/esm/hooks/overrideFieldExtensions.js +2 -0
  201. package/dist/esm/hooks/overrideFieldExtensions.js.map +1 -0
  202. package/dist/esm/hooks/renderAssetSource.d.ts +98 -0
  203. package/dist/esm/hooks/renderAssetSource.js +8 -0
  204. package/dist/esm/hooks/renderAssetSource.js.map +1 -0
  205. package/dist/esm/hooks/renderConfigScreen.d.ts +12 -0
  206. package/dist/esm/hooks/renderConfigScreen.js +8 -0
  207. package/dist/esm/hooks/renderConfigScreen.js.map +1 -0
  208. package/dist/esm/hooks/renderFieldExtension.d.ts +20 -0
  209. package/dist/esm/hooks/renderFieldExtension.js +8 -0
  210. package/dist/esm/hooks/renderFieldExtension.js.map +1 -0
  211. package/dist/esm/hooks/renderItemCollectionOutlet.d.ts +15 -0
  212. package/dist/esm/hooks/renderItemCollectionOutlet.js +8 -0
  213. package/dist/esm/hooks/renderItemCollectionOutlet.js.map +1 -0
  214. package/dist/esm/hooks/renderItemFormOutlet.d.ts +16 -0
  215. package/dist/esm/hooks/renderItemFormOutlet.js +8 -0
  216. package/dist/esm/hooks/renderItemFormOutlet.js.map +1 -0
  217. package/dist/esm/hooks/renderItemFormSidebar.d.ts +21 -0
  218. package/dist/esm/hooks/renderItemFormSidebar.js +8 -0
  219. package/dist/esm/hooks/renderItemFormSidebar.js.map +1 -0
  220. package/dist/esm/hooks/renderItemFormSidebarPanel.d.ts +21 -0
  221. package/dist/esm/hooks/renderItemFormSidebarPanel.js +8 -0
  222. package/dist/esm/hooks/renderItemFormSidebarPanel.js.map +1 -0
  223. package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.d.ts +55 -0
  224. package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.js +8 -0
  225. package/dist/esm/hooks/renderManualFieldExtensionConfigScreen.js.map +1 -0
  226. package/dist/esm/hooks/renderModal.d.ts +37 -0
  227. package/dist/esm/hooks/renderModal.js +8 -0
  228. package/dist/esm/hooks/renderModal.js.map +1 -0
  229. package/dist/esm/hooks/renderPage.d.ts +16 -0
  230. package/dist/esm/hooks/renderPage.js +8 -0
  231. package/dist/esm/hooks/renderPage.js.map +1 -0
  232. package/dist/esm/hooks/renderUploadSidebar.d.ts +25 -0
  233. package/dist/esm/hooks/renderUploadSidebar.js +8 -0
  234. package/dist/esm/hooks/renderUploadSidebar.js.map +1 -0
  235. package/dist/esm/hooks/renderUploadSidebarPanel.d.ts +25 -0
  236. package/dist/esm/hooks/renderUploadSidebarPanel.js +8 -0
  237. package/dist/esm/hooks/renderUploadSidebarPanel.js.map +1 -0
  238. package/dist/esm/hooks/settingsAreaSidebarItemGroups.d.ts +53 -0
  239. package/dist/esm/hooks/settingsAreaSidebarItemGroups.js +2 -0
  240. package/dist/esm/hooks/settingsAreaSidebarItemGroups.js.map +1 -0
  241. package/dist/esm/hooks/uploadSidebarPanels.d.ts +48 -0
  242. package/dist/esm/hooks/uploadSidebarPanels.js +2 -0
  243. package/dist/esm/hooks/uploadSidebarPanels.js.map +1 -0
  244. package/dist/esm/hooks/uploadSidebars.d.ts +35 -0
  245. package/dist/esm/hooks/uploadSidebars.js +2 -0
  246. package/dist/esm/hooks/uploadSidebars.js.map +1 -0
  247. package/dist/esm/hooks/uploadsDropdownActions.d.ts +19 -0
  248. package/dist/esm/hooks/uploadsDropdownActions.js +2 -0
  249. package/dist/esm/hooks/uploadsDropdownActions.js.map +1 -0
  250. package/dist/esm/hooks/validateManualFieldExtensionParameters.d.ts +9 -0
  251. package/dist/esm/hooks/validateManualFieldExtensionParameters.js +2 -0
  252. package/dist/esm/hooks/validateManualFieldExtensionParameters.js.map +1 -0
  253. package/dist/esm/icon.d.ts +6 -0
  254. package/dist/esm/icon.js +2 -0
  255. package/dist/esm/icon.js.map +1 -0
  256. package/dist/esm/index.d.ts +57 -12
  257. package/dist/esm/index.js +46 -1
  258. package/dist/esm/index.js.map +1 -1
  259. package/dist/esm/manifest.d.ts +2 -0
  260. package/dist/esm/manifest.js +3169 -0
  261. package/dist/esm/manifest.js.map +1 -0
  262. package/dist/esm/manifestTypes.d.ts +146 -0
  263. package/dist/esm/manifestTypes.js +2 -0
  264. package/dist/esm/manifestTypes.js.map +1 -0
  265. package/dist/esm/shared.d.ts +56 -0
  266. package/dist/esm/shared.js +2 -0
  267. package/dist/esm/shared.js.map +1 -0
  268. package/dist/esm/utils.d.ts +31 -0
  269. package/dist/esm/utils.js +129 -0
  270. package/dist/esm/utils.js.map +1 -0
  271. package/dist/types/connect.d.ts +44 -244
  272. package/dist/types/ctx/base.d.ts +684 -0
  273. package/dist/types/ctx/commonExtras/field.d.ts +29 -0
  274. package/dist/types/ctx/commonExtras/itemForm.d.ts +148 -0
  275. package/dist/types/ctx/commonExtras/sizing.d.ts +23 -0
  276. package/dist/types/ctx/pluginFrame.d.ts +12 -0
  277. package/dist/types/hooks/assetSources.d.ts +42 -0
  278. package/dist/types/hooks/buildItemPresentationInfo.d.ts +29 -0
  279. package/dist/types/hooks/contentAreaSidebarItems.d.ts +40 -0
  280. package/dist/types/hooks/customBlockStylesForStructuredTextField.d.ts +36 -0
  281. package/dist/types/hooks/customMarksForStructuredTextField.d.ts +57 -0
  282. package/dist/types/hooks/executeFieldDropdownAction.d.ts +17 -0
  283. package/dist/types/hooks/executeItemFormDropdownAction.d.ts +16 -0
  284. package/dist/types/hooks/executeItemsDropdownAction.d.ts +20 -0
  285. package/dist/types/hooks/executeUploadsDropdownAction.d.ts +20 -0
  286. package/dist/types/hooks/fieldDropdownActions.d.ts +20 -0
  287. package/dist/types/hooks/initialLocationQueryForItemSelector.d.ts +27 -0
  288. package/dist/types/hooks/itemCollectionOutlets.d.ts +31 -0
  289. package/dist/types/hooks/itemFormDropdownActions.d.ts +20 -0
  290. package/dist/types/hooks/itemFormOutlets.d.ts +30 -0
  291. package/dist/types/hooks/itemFormSidebarPanels.d.ts +48 -0
  292. package/dist/types/hooks/itemFormSidebars.d.ts +38 -0
  293. package/dist/types/hooks/itemsDropdownActions.d.ts +23 -0
  294. package/dist/types/hooks/mainNavigationTabs.d.ts +44 -0
  295. package/dist/types/hooks/manualFieldExtensions.d.ts +59 -0
  296. package/dist/types/hooks/onBeforeItemUpsert.d.ts +16 -0
  297. package/dist/types/hooks/onBeforeItemsDestroy.d.ts +15 -0
  298. package/dist/types/hooks/onBeforeItemsPublish.d.ts +15 -0
  299. package/dist/types/hooks/onBeforeItemsUnpublish.d.ts +15 -0
  300. package/dist/types/hooks/onBoot.d.ts +11 -0
  301. package/dist/types/hooks/overrideFieldExtensions.d.ts +88 -0
  302. package/dist/types/hooks/renderAssetSource.d.ts +98 -0
  303. package/dist/types/hooks/renderConfigScreen.d.ts +12 -0
  304. package/dist/types/hooks/renderFieldExtension.d.ts +20 -0
  305. package/dist/types/hooks/renderItemCollectionOutlet.d.ts +15 -0
  306. package/dist/types/hooks/renderItemFormOutlet.d.ts +16 -0
  307. package/dist/types/hooks/renderItemFormSidebar.d.ts +21 -0
  308. package/dist/types/hooks/renderItemFormSidebarPanel.d.ts +21 -0
  309. package/dist/types/hooks/renderManualFieldExtensionConfigScreen.d.ts +55 -0
  310. package/dist/types/hooks/renderModal.d.ts +37 -0
  311. package/dist/types/hooks/renderPage.d.ts +16 -0
  312. package/dist/types/hooks/renderUploadSidebar.d.ts +25 -0
  313. package/dist/types/hooks/renderUploadSidebarPanel.d.ts +25 -0
  314. package/dist/types/hooks/settingsAreaSidebarItemGroups.d.ts +53 -0
  315. package/dist/types/hooks/uploadSidebarPanels.d.ts +48 -0
  316. package/dist/types/hooks/uploadSidebars.d.ts +35 -0
  317. package/dist/types/hooks/uploadsDropdownActions.d.ts +19 -0
  318. package/dist/types/hooks/validateManualFieldExtensionParameters.d.ts +9 -0
  319. package/dist/types/icon.d.ts +6 -0
  320. package/dist/types/index.d.ts +57 -12
  321. package/dist/types/manifest.d.ts +2 -0
  322. package/dist/types/manifestTypes.d.ts +146 -0
  323. package/dist/types/shared.d.ts +56 -0
  324. package/dist/types/utils.d.ts +31 -0
  325. package/manifest.json +3168 -0
  326. package/package.json +7 -6
  327. package/src/connect.ts +207 -709
  328. package/src/ctx/base.ts +746 -0
  329. package/src/ctx/commonExtras/field.ts +27 -0
  330. package/src/ctx/commonExtras/itemForm.ts +155 -0
  331. package/src/ctx/commonExtras/sizing.ts +27 -0
  332. package/src/ctx/pluginFrame.ts +39 -0
  333. package/src/hooks/assetSources.ts +45 -0
  334. package/src/hooks/buildItemPresentationInfo.ts +35 -0
  335. package/src/hooks/contentAreaSidebarItems.ts +45 -0
  336. package/src/hooks/customBlockStylesForStructuredTextField.ts +42 -0
  337. package/src/hooks/customMarksForStructuredTextField.ts +64 -0
  338. package/src/hooks/executeFieldDropdownAction.ts +28 -0
  339. package/src/hooks/executeItemFormDropdownAction.ts +26 -0
  340. package/src/hooks/executeItemsDropdownAction.ts +24 -0
  341. package/src/hooks/executeUploadsDropdownAction.ts +24 -0
  342. package/src/hooks/fieldDropdownActions.ts +27 -0
  343. package/src/hooks/initialLocationQueryForItemSelector.ts +35 -0
  344. package/src/hooks/itemCollectionOutlets.ts +37 -0
  345. package/src/hooks/itemFormDropdownActions.ts +27 -0
  346. package/src/hooks/itemFormOutlets.ts +36 -0
  347. package/src/hooks/itemFormSidebarPanels.ts +54 -0
  348. package/src/hooks/itemFormSidebars.ts +44 -0
  349. package/src/hooks/itemsDropdownActions.ts +28 -0
  350. package/src/hooks/mainNavigationTabs.ts +47 -0
  351. package/src/hooks/manualFieldExtensions.ts +82 -0
  352. package/src/hooks/onBeforeItemUpsert.ts +21 -0
  353. package/src/hooks/onBeforeItemsDestroy.ts +20 -0
  354. package/src/hooks/onBeforeItemsPublish.ts +20 -0
  355. package/src/hooks/onBeforeItemsUnpublish.ts +20 -0
  356. package/src/hooks/onBoot.ts +13 -0
  357. package/src/hooks/overrideFieldExtensions.ts +95 -0
  358. package/src/hooks/renderAssetSource.ts +119 -0
  359. package/src/hooks/renderConfigScreen.ts +27 -0
  360. package/src/hooks/renderFieldExtension.ts +46 -0
  361. package/src/hooks/renderItemCollectionOutlet.ts +35 -0
  362. package/src/hooks/renderItemFormOutlet.ts +40 -0
  363. package/src/hooks/renderItemFormSidebar.ts +45 -0
  364. package/src/hooks/renderItemFormSidebarPanel.ts +46 -0
  365. package/src/hooks/renderManualFieldExtensionConfigScreen.ts +83 -0
  366. package/src/hooks/renderModal.ts +54 -0
  367. package/src/hooks/renderPage.ts +33 -0
  368. package/src/hooks/renderUploadSidebar.ts +44 -0
  369. package/src/hooks/renderUploadSidebarPanel.ts +47 -0
  370. package/src/hooks/settingsAreaSidebarItemGroups.ts +59 -0
  371. package/src/hooks/uploadSidebarPanels.ts +59 -0
  372. package/src/hooks/uploadSidebars.ts +38 -0
  373. package/src/hooks/uploadsDropdownActions.ts +22 -0
  374. package/src/hooks/validateManualFieldExtensionParameters.ts +12 -0
  375. package/src/{types.ts → icon.ts} +0 -1739
  376. package/src/index.ts +49 -4
  377. package/src/manifest.ts +3375 -0
  378. package/src/manifestTypes.ts +153 -0
  379. package/src/shared.ts +67 -0
  380. package/src/utils.ts +253 -0
  381. package/dist/cjs/guards.js +0 -19
  382. package/dist/cjs/guards.js.map +0 -1
  383. package/dist/cjs/types.js.map +0 -1
  384. package/dist/esm/guards.d.ts +0 -37
  385. package/dist/esm/guards.js +0 -16
  386. package/dist/esm/guards.js.map +0 -1
  387. package/dist/esm/types.d.ts +0 -1569
  388. package/dist/esm/types.js +0 -2
  389. package/dist/esm/types.js.map +0 -1
  390. package/dist/types/guards.d.ts +0 -37
  391. package/dist/types/types.d.ts +0 -1569
  392. package/src/guards.ts +0 -51
  393. package/types.json +0 -37437
@@ -0,0 +1,746 @@
1
+ import type { SchemaTypes } from '@datocms/cma-client';
2
+
3
+ type Account = SchemaTypes.Account;
4
+ type Field = SchemaTypes.Field;
5
+ type Fieldset = SchemaTypes.Fieldset;
6
+ type Item = SchemaTypes.Item;
7
+ type ItemType = SchemaTypes.ItemType;
8
+ type Organization = SchemaTypes.Organization;
9
+ type Plugin = SchemaTypes.Plugin;
10
+ type Role = SchemaTypes.Role;
11
+ type Site = SchemaTypes.Site;
12
+ type SsoUser = SchemaTypes.SsoUser;
13
+ type Upload = SchemaTypes.Upload;
14
+ type User = SchemaTypes.User;
15
+
16
+ export type Ctx<
17
+ AdditionalProperties extends Record<string, unknown> = Record<string, never>,
18
+ AdditionalMethods extends Record<string, unknown> = Record<string, never>,
19
+ > = BaseProperties & AdditionalProperties & BaseMethods & AdditionalMethods;
20
+
21
+ export type BaseProperties = PluginProperties &
22
+ AuthenticationProperties &
23
+ ProjectProperties &
24
+ EntityReposProperties;
25
+
26
+ /**
27
+ * Information about the current user using the CMS
28
+ */
29
+ type AuthenticationProperties = {
30
+ /**
31
+ * The current DatoCMS user. It can either be the owner or one of the
32
+ * collaborators (regular or SSO).
33
+ */
34
+ currentUser: User | SsoUser | Account | Organization;
35
+ /** The role for the current DatoCMS user */
36
+ currentRole: Role;
37
+ /**
38
+ * The access token to perform API calls on behalf of the current user. Only
39
+ * available if `currentUserAccessToken` additional permission is granted
40
+ */
41
+ currentUserAccessToken: string | undefined;
42
+ };
43
+
44
+ /**
45
+ * Information about the current plugin. Useful to access the plugin's global
46
+ * configuration object.
47
+ */
48
+ type PluginProperties = {
49
+ /** The current plugin */
50
+ plugin: Plugin;
51
+ };
52
+
53
+ /*
54
+ * Information about the project
55
+ */
56
+ type ProjectProperties = {
57
+ /** The current DatoCMS project */
58
+ site: Site;
59
+
60
+ /** The ID of the current environment */
61
+ environment: string;
62
+
63
+ /** The account that is the project owner */
64
+ owner: Account | Organization;
65
+
66
+ /**
67
+ * The account that is the project owner
68
+ *
69
+ * @deprecated Please use `.owner` instead, as the project owner can also be
70
+ * an organization
71
+ */
72
+ account: Account | undefined;
73
+
74
+ /**
75
+ * UI preferences of the current user (right now, only the preferred locale is
76
+ * available)
77
+ */
78
+ ui: {
79
+ /** Preferred locale */
80
+ locale: string;
81
+ };
82
+
83
+ /** An object containing the theme colors for the current DatoCMS project */
84
+ theme: Theme;
85
+ };
86
+
87
+ /**
88
+ * These properties provide access to "entity repos", that is, the collection of
89
+ * resources of a particular type that have been loaded by the CMS up to this
90
+ * moment. The entity repos are objects, indexed by the ID of the entity itself.
91
+ */
92
+ type EntityReposProperties = {
93
+ /** All the models of the current DatoCMS project, indexed by ID */
94
+ itemTypes: Partial<Record<string, ItemType>>;
95
+
96
+ /**
97
+ * All the fields currently loaded for the current DatoCMS project, indexed by
98
+ * ID. If some fields you need are not present, use the `loadItemTypeFields`
99
+ * function to load them.
100
+ */
101
+ fields: Partial<Record<string, Field>>;
102
+
103
+ /**
104
+ * All the fieldsets currently loaded for the current DatoCMS project, indexed
105
+ * by ID. If some fields you need are not present, use the
106
+ * `loadItemTypeFieldsets` function to load them.
107
+ */
108
+ fieldsets: Partial<Record<string, Fieldset>>;
109
+
110
+ /**
111
+ * All the regular users currently loaded for the current DatoCMS project,
112
+ * indexed by ID. It will always contain the current user. If some users you
113
+ * need are not present, use the `loadUsers` function to load them.
114
+ */
115
+ users: Partial<Record<string, User>>;
116
+
117
+ /**
118
+ * All the SSO users currently loaded for the current DatoCMS project, indexed
119
+ * by ID. It will always contain the current user. If some users you need are
120
+ * not present, use the `loadSsoUsers` function to load them.
121
+ */
122
+ ssoUsers: Partial<Record<string, SsoUser>>;
123
+ };
124
+
125
+ /** An object containing the theme colors for the current DatoCMS project */
126
+ export type Theme = {
127
+ primaryColor: string;
128
+ accentColor: string;
129
+ semiTransparentAccentColor: string;
130
+ lightColor: string;
131
+ darkColor: string;
132
+ };
133
+
134
+ export type BaseMethods = LoadDataMethods &
135
+ UpdatePluginParametersMethods &
136
+ ToastMethods &
137
+ ItemDialogMethods &
138
+ UploadDialogMethods &
139
+ CustomDialogMethods &
140
+ NavigateMethods;
141
+
142
+ /**
143
+ * These methods can be used to asyncronously load additional information your
144
+ * plugin needs to work
145
+ */
146
+ type LoadDataMethods = {
147
+ /**
148
+ * Loads all the fields for a specific model (or block). Fields will be
149
+ * returned and will also be available in the the `fields` property.
150
+ *
151
+ * @example
152
+ *
153
+ * ```js
154
+ * const itemTypeId = prompt('Please insert a model ID:');
155
+ *
156
+ * const fields = await ctx.loadItemTypeFields(itemTypeId);
157
+ *
158
+ * ctx.notice(
159
+ * `Success! ${fields
160
+ * .map((field) => field.attributes.api_key)
161
+ * .join(', ')}`,
162
+ * );
163
+ * ```
164
+ */
165
+ loadItemTypeFields: (itemTypeId: string) => Promise<Field[]>;
166
+ /**
167
+ * Loads all the fieldsets for a specific model (or block). Fieldsets will be
168
+ * returned and will also be available in the the `fieldsets` property.
169
+ *
170
+ * @example
171
+ *
172
+ * ```js
173
+ * const itemTypeId = prompt('Please insert a model ID:');
174
+ *
175
+ * const fieldsets = await ctx.loadItemTypeFieldsets(itemTypeId);
176
+ *
177
+ * ctx.notice(
178
+ * `Success! ${fieldsets
179
+ * .map((fieldset) => fieldset.attributes.title)
180
+ * .join(', ')}`,
181
+ * );
182
+ * ```
183
+ */
184
+ loadItemTypeFieldsets: (itemTypeId: string) => Promise<Fieldset[]>;
185
+ /**
186
+ * Loads all the fields in the project that are currently using the plugin for
187
+ * one of its manual field extensions.
188
+ *
189
+ * @example
190
+ *
191
+ * ```js
192
+ * const fields = await ctx.loadFieldsUsingPlugin();
193
+ *
194
+ * ctx.notice(
195
+ * `Success! ${fields
196
+ * .map((field) => field.attributes.api_key)
197
+ * .join(', ')}`,
198
+ * );
199
+ * ```
200
+ */
201
+ loadFieldsUsingPlugin: () => Promise<Field[]>;
202
+ /**
203
+ * Loads all regular users. Users will be returned and will also be available
204
+ * in the the `users` property.
205
+ *
206
+ * @example
207
+ *
208
+ * ```js
209
+ * const users = await ctx.loadUsers();
210
+ *
211
+ * ctx.notice(`Success! ${users.map((user) => user.id).join(', ')}`);
212
+ * ```
213
+ */
214
+ loadUsers: () => Promise<User[]>;
215
+ /**
216
+ * Loads all SSO users. Users will be returned and will also be available in
217
+ * the the `ssoUsers` property.
218
+ *
219
+ * @example
220
+ *
221
+ * ```js
222
+ * const users = await ctx.loadSsoUsers();
223
+ *
224
+ * ctx.notice(`Success! ${users.map((user) => user.id).join(', ')}`);
225
+ * ```
226
+ */
227
+ loadSsoUsers: () => Promise<SsoUser[]>;
228
+ };
229
+
230
+ /**
231
+ * These methods can be used to update both plugin parameters and manual field
232
+ * extensions configuration.
233
+ */
234
+ type UpdatePluginParametersMethods = {
235
+ /**
236
+ * Updates the plugin parameters.
237
+ *
238
+ * Always check `ctx.currentRole.meta.final_permissions.can_edit_schema`
239
+ * before calling this, as the user might not have the permission to perform
240
+ * the operation.
241
+ *
242
+ * @example
243
+ *
244
+ * ```js
245
+ * await ctx.updatePluginParameters({ debugMode: true });
246
+ * await ctx.notice('Plugin parameters successfully updated!');
247
+ * ```
248
+ */
249
+ updatePluginParameters: (params: Record<string, unknown>) => Promise<void>;
250
+ /**
251
+ * Performs changes in the appearance of a field. You can install/remove a
252
+ * manual field extension, or tweak their parameters. If multiple changes are
253
+ * passed, they will be applied sequencially.
254
+ *
255
+ * Always check `ctx.currentRole.meta.final_permissions.can_edit_schema`
256
+ * before calling this, as the user might not have the permission to perform
257
+ * the operation.
258
+ *
259
+ * @example
260
+ *
261
+ * ```js
262
+ * const fields = await ctx.loadFieldsUsingPlugin();
263
+ *
264
+ * if (fields.length === 0) {
265
+ * ctx.alert('No field is using this plugin as a manual extension!');
266
+ * return;
267
+ * }
268
+ *
269
+ * for (const field of fields) {
270
+ * const { appearance } = field.attributes;
271
+ * const operations = [];
272
+ *
273
+ * if (appearance.editor === ctx.plugin.id) {
274
+ * operations.push({
275
+ * operation: 'updateEditor',
276
+ * newParameters: {
277
+ * ...appearance.parameters,
278
+ * foo: 'bar',
279
+ * },
280
+ * });
281
+ * }
282
+ *
283
+ * appearance.addons.forEach((addon, i) => {
284
+ * if (addon.id !== ctx.plugin.id) {
285
+ * return;
286
+ * }
287
+ *
288
+ * operations.push({
289
+ * operation: 'updateAddon',
290
+ * index: i,
291
+ * newParameters: { ...addon.parameters, foo: 'bar' },
292
+ * });
293
+ * });
294
+ *
295
+ * await ctx.updateFieldAppearance(field.id, operations);
296
+ * ctx.notice(`Successfully edited field ${field.attributes.api_key}`);
297
+ * }
298
+ * ```
299
+ */
300
+ updateFieldAppearance: (
301
+ fieldId: string,
302
+ changes: FieldAppearanceChange[],
303
+ ) => Promise<void>;
304
+ };
305
+
306
+ /**
307
+ * These methods let you open the standard DatoCMS dialogs needed to interact
308
+ * with records
309
+ */
310
+ type ItemDialogMethods = {
311
+ /**
312
+ * Opens a dialog for creating a new record. It returns a promise resolved
313
+ * with the newly created record or `null` if the user closes the dialog
314
+ * without creating anything.
315
+ *
316
+ * @example
317
+ *
318
+ * ```js
319
+ * const itemTypeId = prompt('Please insert a model ID:');
320
+ *
321
+ * const item = await ctx.createNewItem(itemTypeId);
322
+ *
323
+ * if (item) {
324
+ * ctx.notice(`Success! ${item.id}`);
325
+ * } else {
326
+ * ctx.alert('Closed!');
327
+ * }
328
+ * ```
329
+ */
330
+ createNewItem: (itemTypeId: string) => Promise<Item | null>;
331
+ /**
332
+ * Opens a dialog for selecting one (or multiple) record(s) from a list of
333
+ * existing records of type `itemTypeId`. It returns a promise resolved with
334
+ * the selected record(s), or `null` if the user closes the dialog without
335
+ * choosing any record.
336
+ *
337
+ * @example
338
+ *
339
+ * ```js
340
+ * const itemTypeId = prompt('Please insert a model ID:');
341
+ *
342
+ * const items = await ctx.selectItem(itemTypeId, { multiple: true });
343
+ *
344
+ * if (items) {
345
+ * ctx.notice(`Success! ${items.map((i) => i.id).join(', ')}`);
346
+ * } else {
347
+ * ctx.alert('Closed!');
348
+ * }
349
+ * ```
350
+ */
351
+ selectItem: {
352
+ (
353
+ itemTypeId: string,
354
+ options: { multiple: true; initialLocationQuery?: ItemListLocationQuery },
355
+ ): Promise<Item[] | null>;
356
+ (
357
+ itemTypeId: string,
358
+ options?: {
359
+ multiple: false;
360
+ initialLocationQuery?: ItemListLocationQuery;
361
+ },
362
+ ): Promise<Item | null>;
363
+ };
364
+ /**
365
+ * Opens a dialog for editing an existing record. It returns a promise
366
+ * resolved with the edited record, or `null` if the user closes the dialog
367
+ * without persisting any change.
368
+ *
369
+ * @example
370
+ *
371
+ * ```js
372
+ * const itemId = prompt('Please insert a record ID:');
373
+ *
374
+ * const item = await ctx.editItem(itemId);
375
+ *
376
+ * if (item) {
377
+ * ctx.notice(`Success! ${item.id}`);
378
+ * } else {
379
+ * ctx.alert('Closed!');
380
+ * }
381
+ * ```
382
+ */
383
+ editItem: (itemId: string) => Promise<Item | null>;
384
+ };
385
+
386
+ /**
387
+ * These methods can be used to show UI-consistent toast notifications to the
388
+ * end-user
389
+ */
390
+ type ToastMethods = {
391
+ /**
392
+ * Triggers an "error" toast displaying the selected message
393
+ *
394
+ * @example
395
+ *
396
+ * ```js
397
+ * const message = prompt(
398
+ * 'Please insert a message:',
399
+ * 'This is an alert message!',
400
+ * );
401
+ *
402
+ * await ctx.alert(message);
403
+ * ```
404
+ */
405
+ alert: (message: string) => Promise<void>;
406
+ /**
407
+ * Triggers a "success" toast displaying the selected message
408
+ *
409
+ * @example
410
+ *
411
+ * ```js
412
+ * const message = prompt(
413
+ * 'Please insert a message:',
414
+ * 'This is a notice message!',
415
+ * );
416
+ *
417
+ * await ctx.notice(message);
418
+ * ```
419
+ */
420
+ notice: (message: string) => Promise<void>;
421
+ /**
422
+ * Triggers a custom toast displaying the selected message (and optionally a
423
+ * CTA)
424
+ *
425
+ * @example
426
+ *
427
+ * ```js
428
+ * const result = await ctx.customToast({
429
+ * type: 'warning',
430
+ * message: 'Just a sample warning notification!',
431
+ * dismissOnPageChange: true,
432
+ * dismissAfterTimeout: 5000,
433
+ * cta: {
434
+ * label: 'Execute call-to-action',
435
+ * value: 'cta',
436
+ * },
437
+ * });
438
+ *
439
+ * if (result === 'cta') {
440
+ * ctx.notice(`Clicked CTA!`);
441
+ * }
442
+ * ```
443
+ */
444
+ customToast: <CtaValue = unknown>(
445
+ toast: Toast<CtaValue>,
446
+ ) => Promise<CtaValue | null>;
447
+ };
448
+
449
+ /**
450
+ * These methods let you open the standard DatoCMS dialogs needed to interact
451
+ * with Media Area assets
452
+ */
453
+ type UploadDialogMethods = {
454
+ /**
455
+ * Opens a dialog for selecting one (or multiple) existing asset(s). It
456
+ * returns a promise resolved with the selected asset(s), or `null` if the
457
+ * user closes the dialog without selecting any upload.
458
+ *
459
+ * @example
460
+ *
461
+ * ```js
462
+ * const item = await ctx.selectUpload({ multiple: false });
463
+ *
464
+ * if (item) {
465
+ * ctx.notice(`Success! ${item.id}`);
466
+ * } else {
467
+ * ctx.alert('Closed!');
468
+ * }
469
+ * ```
470
+ */
471
+ selectUpload: {
472
+ (options: { multiple: true }): Promise<Upload[] | null>;
473
+ (options?: { multiple: false }): Promise<Upload | null>;
474
+ };
475
+
476
+ /**
477
+ * Opens a dialog for editing a Media Area asset. It returns a promise
478
+ * resolved with:
479
+ *
480
+ * - The updated asset, if the user persists some changes to the asset itself
481
+ * - `null`, if the user closes the dialog without persisting any change
482
+ * - An asset structure with an additional `deleted` property set to true, if
483
+ * the user deletes the asset
484
+ *
485
+ * @example
486
+ *
487
+ * ```js
488
+ * const uploadId = prompt('Please insert an asset ID:');
489
+ *
490
+ * const item = await ctx.editUpload(uploadId);
491
+ *
492
+ * if (item) {
493
+ * ctx.notice(`Success! ${item.id}`);
494
+ * } else {
495
+ * ctx.alert('Closed!');
496
+ * }
497
+ * ```
498
+ */
499
+ editUpload: (
500
+ uploadId: string,
501
+ ) => Promise<(Upload & { deleted?: true }) | null>;
502
+ /**
503
+ * Opens a dialog for editing a "single asset" field structure. It returns a
504
+ * promise resolved with the updated structure, or `null` if the user closes
505
+ * the dialog without persisting any change.
506
+ *
507
+ * @example
508
+ *
509
+ * ```js
510
+ * const uploadId = prompt('Please insert an asset ID:');
511
+ *
512
+ * const result = await ctx.editUploadMetadata({
513
+ * upload_id: uploadId,
514
+ * alt: null,
515
+ * title: null,
516
+ * custom_data: {},
517
+ * focal_point: null,
518
+ * });
519
+ *
520
+ * if (result) {
521
+ * ctx.notice(`Success! ${JSON.stringify(result)}`);
522
+ * } else {
523
+ * ctx.alert('Closed!');
524
+ * }
525
+ * ```
526
+ */
527
+ editUploadMetadata: (
528
+ /** The "single asset" field structure */
529
+ fileFieldValue: FileFieldValue,
530
+ /** Shows metadata information for a specific locale */
531
+ locale?: string,
532
+ ) => Promise<FileFieldValue | null>;
533
+ };
534
+
535
+ /** These methods can be used to open custom dialogs/confirmation panels */
536
+ type CustomDialogMethods = {
537
+ /**
538
+ * Opens a custom modal. Returns a promise resolved with what the modal itself
539
+ * returns calling the `resolve()` function
540
+ *
541
+ * @example
542
+ *
543
+ * ```js
544
+ * const result = await ctx.openModal({
545
+ * id: 'regular',
546
+ * title: 'Custom title!',
547
+ * width: 'l',
548
+ * parameters: { foo: 'bar' },
549
+ * });
550
+ *
551
+ * if (result) {
552
+ * ctx.notice(`Success! ${JSON.stringify(result)}`);
553
+ * } else {
554
+ * ctx.alert('Closed!');
555
+ * }
556
+ * ```
557
+ */
558
+ openModal: (modal: Modal) => Promise<unknown>;
559
+ /**
560
+ * Opens a UI-consistent confirmation dialog. Returns a promise resolved with
561
+ * the value of the choice made by the user
562
+ *
563
+ * @example
564
+ *
565
+ * ```js
566
+ * const result = await ctx.openConfirm({
567
+ * title: 'Custom title',
568
+ * content:
569
+ * 'Lorem Ipsum is simply dummy text of the printing and typesetting industry',
570
+ * choices: [
571
+ * {
572
+ * label: 'Positive',
573
+ * value: 'positive',
574
+ * intent: 'positive',
575
+ * },
576
+ * {
577
+ * label: 'Negative',
578
+ * value: 'negative',
579
+ * intent: 'negative',
580
+ * },
581
+ * ],
582
+ * cancel: {
583
+ * label: 'Cancel',
584
+ * value: false,
585
+ * },
586
+ * });
587
+ *
588
+ * if (result) {
589
+ * ctx.notice(`Success! ${result}`);
590
+ * } else {
591
+ * ctx.alert('Cancelled!');
592
+ * }
593
+ * ```
594
+ */
595
+ openConfirm: (options: ConfirmOptions) => Promise<unknown>;
596
+ };
597
+
598
+ /** These methods can be used to take the user to different pages */
599
+ type NavigateMethods = {
600
+ /**
601
+ * Moves the user to another URL internal to the backend
602
+ *
603
+ * @example
604
+ *
605
+ * ```js
606
+ * await ctx.navigateTo('/');
607
+ * ```
608
+ */
609
+ navigateTo: (path: string) => Promise<void>;
610
+ };
611
+
612
+ export type FieldAppearanceChange =
613
+ | {
614
+ operation: 'removeEditor';
615
+ }
616
+ | {
617
+ operation: 'updateEditor';
618
+ newFieldExtensionId?: string;
619
+ newParameters?: Record<string, unknown>;
620
+ }
621
+ | {
622
+ operation: 'setEditor';
623
+ fieldExtensionId: string;
624
+ parameters: Record<string, unknown>;
625
+ }
626
+ | {
627
+ operation: 'removeAddon';
628
+ index: number;
629
+ }
630
+ | {
631
+ operation: 'updateAddon';
632
+ index: number;
633
+ newFieldExtensionId?: string;
634
+ newParameters?: Record<string, unknown>;
635
+ }
636
+ | {
637
+ operation: 'insertAddon';
638
+ index: number;
639
+ fieldExtensionId: string;
640
+ parameters: Record<string, unknown>;
641
+ };
642
+
643
+ export type ItemListLocationQuery = {
644
+ locale?: string;
645
+ filter?: {
646
+ query?: string;
647
+ fields?: Record<string, unknown>;
648
+ };
649
+ };
650
+
651
+ /** A toast notification to present to the user */
652
+ export type Toast<CtaValue = unknown> = {
653
+ /** Message of the notification */
654
+ message: string;
655
+ /** Type of notification. Will present the toast in a different color accent. */
656
+ type: 'notice' | 'alert' | 'warning';
657
+ /** An optional button to show inside the toast */
658
+ cta?: {
659
+ /** Label for the button */
660
+ label: string;
661
+ /**
662
+ * The value to be returned by the `customToast` promise if the button is
663
+ * clicked by the user
664
+ */
665
+ value: CtaValue;
666
+ };
667
+ /** Whether the toast is to be automatically closed if the user changes page */
668
+ dismissOnPageChange?: boolean;
669
+ /**
670
+ * Whether the toast is to be automatically closed after some time (`true`
671
+ * will use the default DatoCMS time interval)
672
+ */
673
+ dismissAfterTimeout?: boolean | number;
674
+ };
675
+
676
+ /** The structure contained in a "single asset" field */
677
+ export type FileFieldValue = {
678
+ /** ID of the asset */
679
+ // eslint-disable-next-line camelcase
680
+ upload_id: string;
681
+ /** Alternate text for the asset */
682
+ alt: string | null;
683
+ /** Title for the asset */
684
+ title: string | null;
685
+ /** Focal point of an asset */
686
+ // eslint-disable-next-line camelcase
687
+ focal_point: FocalPoint | null;
688
+ /** Object with arbitrary metadata related to the asset */
689
+ // eslint-disable-next-line camelcase
690
+ custom_data: Record<string, string>;
691
+ };
692
+
693
+ /** A modal to present to the user */
694
+ export type Modal = {
695
+ /** ID of the modal. Will be the first argument for the `renderModal` function */
696
+ id: string;
697
+ /** Title for the modal. Ignored by `fullWidth` modals */
698
+ title?: string;
699
+ /** Whether to present a close button for the modal or not */
700
+ closeDisabled?: boolean;
701
+ /** Width of the modal. Can be a number, or one of the predefined sizes */
702
+ width?: 's' | 'm' | 'l' | 'xl' | 'fullWidth' | number;
703
+ /**
704
+ * An arbitrary configuration object that will be passed as the `parameters`
705
+ * property of the second argument of the `renderModal` function
706
+ */
707
+ parameters?: Record<string, unknown>;
708
+ /** The initial height to set for the iframe that will render the modal content */
709
+ initialHeight?: number;
710
+ };
711
+
712
+ /** Focal point of an image asset */
713
+ export type FocalPoint = {
714
+ /** Horizontal position expressed as float between 0 and 1 */
715
+ x: number;
716
+ /** Vertical position expressed as float between 0 and 1 */
717
+ y: number;
718
+ };
719
+
720
+ /** Options for the `openConfirm` function */
721
+ export type ConfirmOptions = {
722
+ /** The title to be shown inside the confirmation panel */
723
+ title: string;
724
+ /** The main message to be shown inside the confirmation panel */
725
+ content: string;
726
+ /** The different options the user can choose from */
727
+ choices: ConfirmChoice[];
728
+ /** The cancel option to present to the user */
729
+ cancel: ConfirmChoice;
730
+ };
731
+
732
+ /** A choice presented in a `openConfirm` panel */
733
+ export type ConfirmChoice = {
734
+ /** The label to be shown for the choice */
735
+ label: string;
736
+ /**
737
+ * The value to be returned by the `openConfirm` promise if the button is
738
+ * clicked by the user
739
+ */
740
+ value: unknown;
741
+ /**
742
+ * The intent of the button. Will present the button in a different color
743
+ * accent.
744
+ */
745
+ intent?: 'positive' | 'negative';
746
+ };