@atlaskit/editor-plugin-extension 0.4.2 → 0.5.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 (307) hide show
  1. package/.eslintrc.js +26 -0
  2. package/CHANGELOG.md +16 -0
  3. package/dist/cjs/actions.js +236 -0
  4. package/dist/cjs/commands.js +122 -0
  5. package/dist/cjs/context-panel.js +269 -0
  6. package/dist/cjs/extension-api.js +266 -0
  7. package/dist/cjs/index.js +8 -1
  8. package/dist/cjs/plugin-factory.js +32 -0
  9. package/dist/cjs/plugin-key.js +8 -0
  10. package/dist/cjs/plugin.js +147 -0
  11. package/dist/cjs/pm-plugins/keymap.js +21 -0
  12. package/dist/cjs/pm-plugins/macro/actions.js +186 -0
  13. package/dist/cjs/pm-plugins/macro/index.js +72 -0
  14. package/dist/cjs/pm-plugins/macro/plugin-key.js +8 -0
  15. package/dist/cjs/pm-plugins/macro/types.js +5 -0
  16. package/dist/cjs/pm-plugins/main.js +323 -0
  17. package/dist/cjs/pm-plugins/unique-id.js +80 -0
  18. package/dist/cjs/pm-plugins/utils.js +75 -0
  19. package/dist/cjs/reducer.js +18 -0
  20. package/dist/cjs/toolbar.js +242 -0
  21. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +475 -0
  22. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +122 -0
  23. package/dist/cjs/ui/ConfigPanel/ConfigPanelLoader.js +23 -0
  24. package/dist/cjs/ui/ConfigPanel/ErrorMessage/ErrorImage.js +76 -0
  25. package/dist/cjs/ui/ConfigPanel/ErrorMessage/index.js +33 -0
  26. package/dist/cjs/ui/ConfigPanel/FieldMessages.js +105 -0
  27. package/dist/cjs/ui/ConfigPanel/Fields/Boolean.js +150 -0
  28. package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +101 -0
  29. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +420 -0
  30. package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +192 -0
  31. package/dist/cjs/ui/ConfigPanel/Fields/Date.js +55 -0
  32. package/dist/cjs/ui/ConfigPanel/Fields/DateRange.js +160 -0
  33. package/dist/cjs/ui/ConfigPanel/Fields/Enum.js +41 -0
  34. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +88 -0
  35. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +270 -0
  36. package/dist/cjs/ui/ConfigPanel/Fields/Number.js +64 -0
  37. package/dist/cjs/ui/ConfigPanel/Fields/RadioGroup.js +56 -0
  38. package/dist/cjs/ui/ConfigPanel/Fields/Select.js +60 -0
  39. package/dist/cjs/ui/ConfigPanel/Fields/SelectItem.js +53 -0
  40. package/dist/cjs/ui/ConfigPanel/Fields/String.js +75 -0
  41. package/dist/cjs/ui/ConfigPanel/Fields/TabGroup.js +73 -0
  42. package/dist/cjs/ui/ConfigPanel/Fields/UnhandledType.js +19 -0
  43. package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +268 -0
  44. package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +12 -0
  45. package/dist/cjs/ui/ConfigPanel/FormContent.js +231 -0
  46. package/dist/cjs/ui/ConfigPanel/FormErrorBoundary.js +140 -0
  47. package/dist/cjs/ui/ConfigPanel/Header.js +148 -0
  48. package/dist/cjs/ui/ConfigPanel/LoadingState.js +25 -0
  49. package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +61 -0
  50. package/dist/cjs/ui/ConfigPanel/constants.js +13 -0
  51. package/dist/cjs/ui/ConfigPanel/index.js +9 -0
  52. package/dist/cjs/ui/ConfigPanel/messages.js +99 -0
  53. package/dist/cjs/ui/ConfigPanel/transformers.js +631 -0
  54. package/dist/cjs/ui/ConfigPanel/types.js +15 -0
  55. package/dist/cjs/ui/ConfigPanel/use-abortable-effect/index.js +56 -0
  56. package/dist/cjs/ui/ConfigPanel/use-state-from-promise/index.js +41 -0
  57. package/dist/cjs/ui/ConfigPanel/utils.js +116 -0
  58. package/dist/cjs/ui/SaveIndicator/SaveIndicator.js +79 -0
  59. package/dist/cjs/ui/SaveIndicator/messages.js +14 -0
  60. package/dist/cjs/ui/SaveIndicator/types.js +5 -0
  61. package/dist/cjs/utils.js +73 -0
  62. package/dist/es2019/actions.js +203 -0
  63. package/dist/es2019/commands.js +99 -0
  64. package/dist/es2019/context-panel.js +181 -0
  65. package/dist/es2019/extension-api.js +284 -0
  66. package/dist/es2019/index.js +1 -1
  67. package/dist/es2019/plugin-factory.js +26 -0
  68. package/dist/es2019/plugin-key.js +2 -0
  69. package/dist/es2019/plugin.js +138 -0
  70. package/dist/es2019/pm-plugins/keymap.js +15 -0
  71. package/dist/es2019/pm-plugins/macro/actions.js +152 -0
  72. package/dist/es2019/pm-plugins/macro/index.js +36 -0
  73. package/dist/es2019/pm-plugins/macro/plugin-key.js +2 -0
  74. package/dist/es2019/pm-plugins/macro/types.js +1 -0
  75. package/dist/es2019/pm-plugins/main.js +230 -0
  76. package/dist/es2019/pm-plugins/unique-id.js +69 -0
  77. package/dist/es2019/pm-plugins/utils.js +30 -0
  78. package/dist/es2019/reducer.js +11 -0
  79. package/dist/es2019/toolbar.js +236 -0
  80. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +415 -0
  81. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +100 -0
  82. package/dist/es2019/ui/ConfigPanel/ConfigPanelLoader.js +7 -0
  83. package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +66 -0
  84. package/dist/es2019/ui/ConfigPanel/ErrorMessage/index.js +25 -0
  85. package/dist/es2019/ui/ConfigPanel/FieldMessages.js +101 -0
  86. package/dist/es2019/ui/ConfigPanel/Fields/Boolean.js +138 -0
  87. package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +96 -0
  88. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +411 -0
  89. package/dist/es2019/ui/ConfigPanel/Fields/CustomSelect.js +132 -0
  90. package/dist/es2019/ui/ConfigPanel/Fields/Date.js +50 -0
  91. package/dist/es2019/ui/ConfigPanel/Fields/DateRange.js +139 -0
  92. package/dist/es2019/ui/ConfigPanel/Fields/Enum.js +35 -0
  93. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +73 -0
  94. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +227 -0
  95. package/dist/es2019/ui/ConfigPanel/Fields/Number.js +61 -0
  96. package/dist/es2019/ui/ConfigPanel/Fields/RadioGroup.js +40 -0
  97. package/dist/es2019/ui/ConfigPanel/Fields/Select.js +50 -0
  98. package/dist/es2019/ui/ConfigPanel/Fields/SelectItem.js +47 -0
  99. package/dist/es2019/ui/ConfigPanel/Fields/String.js +67 -0
  100. package/dist/es2019/ui/ConfigPanel/Fields/TabGroup.js +57 -0
  101. package/dist/es2019/ui/ConfigPanel/Fields/UnhandledType.js +11 -0
  102. package/dist/es2019/ui/ConfigPanel/Fields/UserSelect.js +194 -0
  103. package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
  104. package/dist/es2019/ui/ConfigPanel/FormContent.js +225 -0
  105. package/dist/es2019/ui/ConfigPanel/FormErrorBoundary.js +100 -0
  106. package/dist/es2019/ui/ConfigPanel/Header.js +140 -0
  107. package/dist/es2019/ui/ConfigPanel/LoadingState.js +15 -0
  108. package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +52 -0
  109. package/dist/es2019/ui/ConfigPanel/constants.js +7 -0
  110. package/dist/es2019/ui/ConfigPanel/index.js +2 -0
  111. package/dist/es2019/ui/ConfigPanel/messages.js +93 -0
  112. package/dist/es2019/ui/ConfigPanel/transformers.js +367 -0
  113. package/dist/es2019/ui/ConfigPanel/types.js +9 -0
  114. package/dist/es2019/ui/ConfigPanel/use-abortable-effect/index.js +46 -0
  115. package/dist/es2019/ui/ConfigPanel/use-state-from-promise/index.js +30 -0
  116. package/dist/es2019/ui/ConfigPanel/utils.js +86 -0
  117. package/dist/es2019/ui/SaveIndicator/SaveIndicator.js +66 -0
  118. package/dist/es2019/ui/SaveIndicator/messages.js +8 -0
  119. package/dist/es2019/ui/SaveIndicator/types.js +1 -0
  120. package/dist/es2019/utils.js +65 -0
  121. package/dist/esm/actions.js +223 -0
  122. package/dist/esm/commands.js +113 -0
  123. package/dist/esm/context-panel.js +261 -0
  124. package/dist/esm/extension-api.js +259 -0
  125. package/dist/esm/index.js +1 -1
  126. package/dist/esm/plugin-factory.js +25 -0
  127. package/dist/esm/plugin-key.js +2 -0
  128. package/dist/esm/plugin.js +140 -0
  129. package/dist/esm/pm-plugins/keymap.js +15 -0
  130. package/dist/esm/pm-plugins/macro/actions.js +179 -0
  131. package/dist/esm/pm-plugins/macro/index.js +42 -0
  132. package/dist/esm/pm-plugins/macro/plugin-key.js +2 -0
  133. package/dist/esm/pm-plugins/macro/types.js +1 -0
  134. package/dist/esm/pm-plugins/main.js +298 -0
  135. package/dist/esm/pm-plugins/unique-id.js +74 -0
  136. package/dist/esm/pm-plugins/utils.js +68 -0
  137. package/dist/esm/reducer.js +11 -0
  138. package/dist/esm/toolbar.js +235 -0
  139. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +465 -0
  140. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +112 -0
  141. package/dist/esm/ui/ConfigPanel/ConfigPanelLoader.js +11 -0
  142. package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +68 -0
  143. package/dist/esm/ui/ConfigPanel/ErrorMessage/index.js +26 -0
  144. package/dist/esm/ui/ConfigPanel/FieldMessages.js +97 -0
  145. package/dist/esm/ui/ConfigPanel/Fields/Boolean.js +140 -0
  146. package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +95 -0
  147. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +414 -0
  148. package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +182 -0
  149. package/dist/esm/ui/ConfigPanel/Fields/Date.js +48 -0
  150. package/dist/esm/ui/ConfigPanel/Fields/DateRange.js +154 -0
  151. package/dist/esm/ui/ConfigPanel/Fields/Enum.js +34 -0
  152. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +77 -0
  153. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +261 -0
  154. package/dist/esm/ui/ConfigPanel/Fields/Number.js +57 -0
  155. package/dist/esm/ui/ConfigPanel/Fields/RadioGroup.js +46 -0
  156. package/dist/esm/ui/ConfigPanel/Fields/Select.js +50 -0
  157. package/dist/esm/ui/ConfigPanel/Fields/SelectItem.js +45 -0
  158. package/dist/esm/ui/ConfigPanel/Fields/String.js +65 -0
  159. package/dist/esm/ui/ConfigPanel/Fields/TabGroup.js +62 -0
  160. package/dist/esm/ui/ConfigPanel/Fields/UnhandledType.js +10 -0
  161. package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +258 -0
  162. package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +5 -0
  163. package/dist/esm/ui/ConfigPanel/FormContent.js +223 -0
  164. package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +133 -0
  165. package/dist/esm/ui/ConfigPanel/Header.js +140 -0
  166. package/dist/esm/ui/ConfigPanel/LoadingState.js +17 -0
  167. package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +53 -0
  168. package/dist/esm/ui/ConfigPanel/constants.js +7 -0
  169. package/dist/esm/ui/ConfigPanel/index.js +2 -0
  170. package/dist/esm/ui/ConfigPanel/messages.js +93 -0
  171. package/dist/esm/ui/ConfigPanel/transformers.js +624 -0
  172. package/dist/esm/ui/ConfigPanel/types.js +9 -0
  173. package/dist/esm/ui/ConfigPanel/use-abortable-effect/index.js +49 -0
  174. package/dist/esm/ui/ConfigPanel/use-state-from-promise/index.js +34 -0
  175. package/dist/esm/ui/ConfigPanel/utils.js +109 -0
  176. package/dist/esm/ui/SaveIndicator/SaveIndicator.js +72 -0
  177. package/dist/esm/ui/SaveIndicator/messages.js +8 -0
  178. package/dist/esm/ui/SaveIndicator/types.js +1 -0
  179. package/dist/esm/utils.js +67 -0
  180. package/dist/types/actions.d.ts +20 -0
  181. package/dist/types/commands.d.ts +15 -0
  182. package/dist/types/context-panel.d.ts +10 -0
  183. package/dist/types/extension-api.d.ts +12 -0
  184. package/dist/types/index.d.ts +2 -1
  185. package/dist/types/plugin-factory.d.ts +4 -0
  186. package/dist/types/plugin-key.d.ts +3 -0
  187. package/dist/types/plugin.d.ts +2 -0
  188. package/dist/types/pm-plugins/keymap.d.ts +3 -0
  189. package/dist/types/pm-plugins/macro/actions.d.ts +9 -0
  190. package/dist/types/pm-plugins/macro/index.d.ts +8 -0
  191. package/dist/types/pm-plugins/macro/plugin-key.d.ts +3 -0
  192. package/dist/types/pm-plugins/macro/types.d.ts +4 -0
  193. package/dist/types/pm-plugins/main.d.ts +25 -0
  194. package/dist/types/pm-plugins/unique-id.d.ts +3 -0
  195. package/dist/types/pm-plugins/utils.d.ts +3 -0
  196. package/dist/types/reducer.d.ts +2 -0
  197. package/dist/types/toolbar.d.ts +44 -0
  198. package/dist/types/types.d.ts +27 -2
  199. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
  200. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
  201. package/dist/types/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
  202. package/dist/types/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
  203. package/dist/types/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
  204. package/dist/types/ui/ConfigPanel/FieldMessages.d.ts +12 -0
  205. package/dist/types/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
  206. package/dist/types/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
  207. package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
  208. package/dist/types/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
  209. package/dist/types/ui/ConfigPanel/Fields/Date.d.ts +20 -0
  210. package/dist/types/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
  211. package/dist/types/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
  212. package/dist/types/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
  213. package/dist/types/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
  214. package/dist/types/ui/ConfigPanel/Fields/Number.d.ts +10 -0
  215. package/dist/types/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
  216. package/dist/types/ui/ConfigPanel/Fields/Select.d.ts +11 -0
  217. package/dist/types/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
  218. package/dist/types/ui/ConfigPanel/Fields/String.d.ts +10 -0
  219. package/dist/types/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
  220. package/dist/types/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
  221. package/dist/types/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
  222. package/dist/types/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
  223. package/dist/types/ui/ConfigPanel/FormContent.d.ts +4 -0
  224. package/dist/types/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
  225. package/dist/types/ui/ConfigPanel/Header.d.ts +23 -0
  226. package/dist/types/ui/ConfigPanel/LoadingState.d.ts +4 -0
  227. package/dist/types/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
  228. package/dist/types/ui/ConfigPanel/constants.d.ts +2 -0
  229. package/dist/types/ui/ConfigPanel/index.d.ts +2 -0
  230. package/dist/types/ui/ConfigPanel/messages.d.ts +92 -0
  231. package/dist/types/ui/ConfigPanel/transformers.d.ts +9 -0
  232. package/dist/types/ui/ConfigPanel/types.d.ts +36 -0
  233. package/dist/types/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
  234. package/dist/types/ui/ConfigPanel/use-state-from-promise/index.d.ts +15 -0
  235. package/dist/types/ui/ConfigPanel/utils.d.ts +16 -0
  236. package/dist/types/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
  237. package/dist/types/ui/SaveIndicator/messages.d.ts +7 -0
  238. package/dist/types/ui/SaveIndicator/types.d.ts +11 -0
  239. package/dist/types/utils.d.ts +15 -0
  240. package/dist/types-ts4.5/actions.d.ts +20 -0
  241. package/dist/types-ts4.5/commands.d.ts +15 -0
  242. package/dist/types-ts4.5/context-panel.d.ts +10 -0
  243. package/dist/types-ts4.5/extension-api.d.ts +12 -0
  244. package/dist/types-ts4.5/index.d.ts +2 -1
  245. package/dist/types-ts4.5/plugin-factory.d.ts +4 -0
  246. package/dist/types-ts4.5/plugin-key.d.ts +3 -0
  247. package/dist/types-ts4.5/plugin.d.ts +2 -0
  248. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
  249. package/dist/types-ts4.5/pm-plugins/macro/actions.d.ts +9 -0
  250. package/dist/types-ts4.5/pm-plugins/macro/index.d.ts +8 -0
  251. package/dist/types-ts4.5/pm-plugins/macro/plugin-key.d.ts +3 -0
  252. package/dist/types-ts4.5/pm-plugins/macro/types.d.ts +4 -0
  253. package/dist/types-ts4.5/pm-plugins/main.d.ts +25 -0
  254. package/dist/types-ts4.5/pm-plugins/unique-id.d.ts +3 -0
  255. package/dist/types-ts4.5/pm-plugins/utils.d.ts +3 -0
  256. package/dist/types-ts4.5/reducer.d.ts +2 -0
  257. package/dist/types-ts4.5/toolbar.d.ts +44 -0
  258. package/dist/types-ts4.5/types.d.ts +27 -2
  259. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +22 -0
  260. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +21 -0
  261. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelLoader.d.ts +5 -0
  262. package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/ErrorImage.d.ts +4 -0
  263. package/dist/types-ts4.5/ui/ConfigPanel/ErrorMessage/index.d.ts +10 -0
  264. package/dist/types-ts4.5/ui/ConfigPanel/FieldMessages.d.ts +12 -0
  265. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Boolean.d.ts +8 -0
  266. package/dist/types-ts4.5/ui/ConfigPanel/Fields/CheckboxGroup.d.ts +8 -0
  267. package/dist/types-ts4.5/ui/ConfigPanel/Fields/ColorPicker.d.ts +20 -0
  268. package/dist/types-ts4.5/ui/ConfigPanel/Fields/CustomSelect.d.ts +24 -0
  269. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Date.d.ts +20 -0
  270. package/dist/types-ts4.5/ui/ConfigPanel/Fields/DateRange.d.ts +20 -0
  271. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Enum.d.ts +10 -0
  272. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Expand.d.ts +16 -0
  273. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Fieldset.d.ts +19 -0
  274. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Number.d.ts +10 -0
  275. package/dist/types-ts4.5/ui/ConfigPanel/Fields/RadioGroup.d.ts +8 -0
  276. package/dist/types-ts4.5/ui/ConfigPanel/Fields/Select.d.ts +11 -0
  277. package/dist/types-ts4.5/ui/ConfigPanel/Fields/SelectItem.d.ts +5 -0
  278. package/dist/types-ts4.5/ui/ConfigPanel/Fields/String.d.ts +10 -0
  279. package/dist/types-ts4.5/ui/ConfigPanel/Fields/TabGroup.d.ts +14 -0
  280. package/dist/types-ts4.5/ui/ConfigPanel/Fields/UnhandledType.d.ts +6 -0
  281. package/dist/types-ts4.5/ui/ConfigPanel/Fields/UserSelect.d.ts +10 -0
  282. package/dist/types-ts4.5/ui/ConfigPanel/Fields/common/RequiredIndicator.d.ts +1 -0
  283. package/dist/types-ts4.5/ui/ConfigPanel/FormContent.d.ts +4 -0
  284. package/dist/types-ts4.5/ui/ConfigPanel/FormErrorBoundary.d.ts +16 -0
  285. package/dist/types-ts4.5/ui/ConfigPanel/Header.d.ts +23 -0
  286. package/dist/types-ts4.5/ui/ConfigPanel/LoadingState.d.ts +4 -0
  287. package/dist/types-ts4.5/ui/ConfigPanel/NestedForms/RemovableField.d.ts +19 -0
  288. package/dist/types-ts4.5/ui/ConfigPanel/constants.d.ts +2 -0
  289. package/dist/types-ts4.5/ui/ConfigPanel/index.d.ts +2 -0
  290. package/dist/types-ts4.5/ui/ConfigPanel/messages.d.ts +92 -0
  291. package/dist/types-ts4.5/ui/ConfigPanel/transformers.d.ts +9 -0
  292. package/dist/types-ts4.5/ui/ConfigPanel/types.d.ts +39 -0
  293. package/dist/types-ts4.5/ui/ConfigPanel/use-abortable-effect/index.d.ts +16 -0
  294. package/dist/types-ts4.5/ui/ConfigPanel/use-state-from-promise/index.d.ts +18 -0
  295. package/dist/types-ts4.5/ui/ConfigPanel/utils.d.ts +16 -0
  296. package/dist/types-ts4.5/ui/SaveIndicator/SaveIndicator.d.ts +4 -0
  297. package/dist/types-ts4.5/ui/SaveIndicator/messages.d.ts +7 -0
  298. package/dist/types-ts4.5/ui/SaveIndicator/types.d.ts +11 -0
  299. package/dist/types-ts4.5/utils.d.ts +15 -0
  300. package/example-utils/config-panel/ConfigPanelWithExtensionPicker.tsx +217 -0
  301. package/example-utils/config-panel/ConfigPanelWithProviders.tsx +51 -0
  302. package/example-utils/config-panel/ExtensionNodePicker.tsx +141 -0
  303. package/example-utils/config-panel/FieldTypePicker.tsx +63 -0
  304. package/example-utils/config-panel/example-manifest-all-fields.ts +86 -0
  305. package/example-utils/config-panel/example-manifest-individual-fields.ts +85 -0
  306. package/example-utils/config-panel/fields.ts +611 -0
  307. package/package.json +49 -7
@@ -0,0 +1,99 @@
1
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
2
+ import { removeConnectedNodes } from '@atlaskit/editor-common/utils';
3
+ import { findParentNodeOfType, removeParentNodeOfType, removeSelectedNode } from '@atlaskit/editor-prosemirror/utils';
4
+ import { createCommand } from './plugin-factory';
5
+ import { getSelectedExtension } from './utils';
6
+
7
+ // AFP-2532 TODO: Fix automatic suppressions below
8
+ // eslint-disable-next-line @atlassian/tangerine/import/entry-points
9
+
10
+ export function updateState(state) {
11
+ return createCommand({
12
+ type: 'UPDATE_STATE',
13
+ data: state
14
+ });
15
+ }
16
+ export function setEditingContextToContextPanel(processParametersBefore, processParametersAfter, applyChangeToContextPanel) {
17
+ return createCommand({
18
+ type: 'UPDATE_STATE',
19
+ data: {
20
+ showContextPanel: true,
21
+ processParametersBefore,
22
+ processParametersAfter
23
+ }
24
+ }, applyChangeToContextPanel);
25
+ }
26
+ export const clearEditingContext = applyChangeToContextPanel => createCommand({
27
+ type: 'UPDATE_STATE',
28
+ data: {
29
+ showContextPanel: false,
30
+ processParametersBefore: undefined,
31
+ processParametersAfter: undefined
32
+ }
33
+ }, applyChangeToContextPanel);
34
+ export const forceAutoSave = applyChangeToContextPanel => (resolve, reject) => createCommand({
35
+ type: 'UPDATE_STATE',
36
+ data: {
37
+ autoSaveResolve: resolve,
38
+ autoSaveReject: reject
39
+ }
40
+ }, applyChangeToContextPanel);
41
+ export const updateExtensionLayout = layout => createCommand({
42
+ type: 'UPDATE_STATE',
43
+ data: {
44
+ layout
45
+ }
46
+ }, (tr, state) => {
47
+ const selectedExtension = getSelectedExtension(state, true);
48
+ if (selectedExtension) {
49
+ const trWithNewNodeMarkup = tr.setNodeMarkup(selectedExtension.pos, undefined, {
50
+ ...selectedExtension.node.attrs,
51
+ layout
52
+ });
53
+ trWithNewNodeMarkup.setMeta('scrollIntoView', false);
54
+ return trWithNewNodeMarkup;
55
+ }
56
+ return tr;
57
+ });
58
+ export const removeExtension = editorAnalyticsAPI => createCommand({
59
+ type: 'UPDATE_STATE',
60
+ data: {
61
+ element: undefined
62
+ }
63
+ }, (tr, state) => {
64
+ if (getSelectedExtension(state)) {
65
+ return removeSelectedNode(tr);
66
+ } else {
67
+ return checkAndRemoveExtensionNode(state, tr, editorAnalyticsAPI);
68
+ }
69
+ });
70
+ export const removeDescendantNodes = sourceNode => createCommand({
71
+ type: 'UPDATE_STATE',
72
+ data: {
73
+ element: undefined
74
+ }
75
+ }, (tr, state) => {
76
+ return sourceNode ? removeConnectedNodes(state, sourceNode) : tr;
77
+ });
78
+ export const checkAndRemoveExtensionNode = (state, tr, analyticsApi) => {
79
+ let nodeType = state.schema.nodes.bodiedExtension;
80
+ const maybeMBENode = findParentNodeOfType(state.schema.nodes.multiBodiedExtension)(state.selection);
81
+ if (maybeMBENode) {
82
+ nodeType = state.schema.nodes.multiBodiedExtension;
83
+ if (analyticsApi) {
84
+ analyticsApi.attachAnalyticsEvent({
85
+ action: ACTION.DELETED,
86
+ actionSubject: ACTION_SUBJECT.MULTI_BODIED_EXTENSION,
87
+ eventType: EVENT_TYPE.TRACK,
88
+ attributes: {
89
+ extensionType: maybeMBENode.node.attrs.extensionType,
90
+ extensionKey: maybeMBENode.node.attrs.extensionKey,
91
+ localId: maybeMBENode.node.attrs.localId,
92
+ maxFramesCount: maybeMBENode.node.attrs.maxFrames,
93
+ currentFramesCount: maybeMBENode.node.content.childCount
94
+ }
95
+ })(tr);
96
+ }
97
+ }
98
+ return removeParentNodeOfType(nodeType)(tr);
99
+ };
@@ -0,0 +1,181 @@
1
+ import React from 'react';
2
+ import { getExtensionKeyAndNodeKey } from '@atlaskit/editor-common/extensions';
3
+ import { GapCursorSelection } from '@atlaskit/editor-common/selection';
4
+ import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
5
+ import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
6
+ import { buildExtensionNode } from './actions';
7
+ import { clearEditingContext, forceAutoSave, updateState } from './commands';
8
+ import { getPluginState } from './pm-plugins/main';
9
+ import ConfigPanelLoader from './ui/ConfigPanel/ConfigPanelLoader';
10
+ import { SaveIndicator } from './ui/SaveIndicator/SaveIndicator';
11
+ import { getSelectedExtension } from './utils';
12
+ const areParametersEqual = (firstParameters, secondParameters) => {
13
+ if (typeof firstParameters === 'object' && typeof secondParameters === 'object' && firstParameters !== null && secondParameters !== null) {
14
+ const firstKeys = Object.keys(firstParameters);
15
+ const secondKeys = Object.keys(secondParameters);
16
+ return firstKeys.length === secondKeys.length && firstKeys.every(key => firstParameters[key] === secondParameters[key]);
17
+ }
18
+ return firstParameters === secondParameters;
19
+ };
20
+ export const duplicateSelection = (selectionToDuplicate, doc) => {
21
+ if (selectionToDuplicate instanceof NodeSelection) {
22
+ return NodeSelection.create(doc, selectionToDuplicate.from);
23
+ } else if (selectionToDuplicate instanceof TextSelection) {
24
+ return TextSelection.create(doc, selectionToDuplicate.from, selectionToDuplicate.to);
25
+ } else if (selectionToDuplicate instanceof GapCursorSelection) {
26
+ return new GapCursorSelection(doc.resolve(selectionToDuplicate.from), selectionToDuplicate.side);
27
+ } else if (selectionToDuplicate instanceof CellSelection) {
28
+ return new CellSelection(doc.resolve(selectionToDuplicate.$anchorCell.pos), doc.resolve(selectionToDuplicate.$headCell.pos));
29
+ }
30
+ };
31
+ export const getContextPanel = getEditorView => (allowAutoSave, featureFlags, applyChange) => state => {
32
+ const nodeWithPos = getSelectedExtension(state, true);
33
+
34
+ // Adding checks to bail out early
35
+ if (!nodeWithPos) {
36
+ return;
37
+ }
38
+ const extensionState = getPluginState(state);
39
+ const {
40
+ autoSaveResolve,
41
+ autoSaveReject,
42
+ showContextPanel,
43
+ extensionProvider,
44
+ processParametersBefore,
45
+ processParametersAfter
46
+ } = extensionState;
47
+ if (extensionState && showContextPanel && extensionProvider && processParametersAfter) {
48
+ const {
49
+ extensionType,
50
+ extensionKey,
51
+ parameters
52
+ } = nodeWithPos.node.attrs;
53
+ const [extKey, nodeKey] = getExtensionKeyAndNodeKey(extensionKey, extensionType);
54
+ const configParams = processParametersBefore ? processParametersBefore(parameters || {}) : parameters;
55
+ return /*#__PURE__*/React.createElement(SaveIndicator, {
56
+ duration: 5000,
57
+ visible: allowAutoSave
58
+ }, ({
59
+ onSaveStarted,
60
+ onSaveEnded
61
+ }) => {
62
+ const editorView = getEditorView === null || getEditorView === void 0 ? void 0 : getEditorView();
63
+ if (!editorView) {
64
+ return null;
65
+ }
66
+ return /*#__PURE__*/React.createElement(ConfigPanelLoader, {
67
+ showHeader: true,
68
+ closeOnEsc: true,
69
+ extensionType: extensionType,
70
+ extensionKey: extKey,
71
+ nodeKey: nodeKey,
72
+ extensionParameters: parameters,
73
+ parameters: configParams,
74
+ extensionProvider: extensionProvider,
75
+ autoSave: allowAutoSave,
76
+ autoSaveTrigger: autoSaveResolve,
77
+ autoSaveReject: autoSaveReject,
78
+ onChange: async updatedParameters => {
79
+ await onChangeAction(editorView, updatedParameters, parameters, nodeWithPos, onSaveStarted);
80
+ onSaveEnded();
81
+ if (autoSaveResolve) {
82
+ autoSaveResolve();
83
+ }
84
+ if (!allowAutoSave) {
85
+ clearEditingContext(applyChange)(editorView.state, editorView.dispatch);
86
+ }
87
+ },
88
+ onCancel: async () => {
89
+ if (allowAutoSave) {
90
+ try {
91
+ await new Promise((resolve, reject) => {
92
+ forceAutoSave(applyChange)(resolve, reject)(editorView.state, editorView.dispatch);
93
+ });
94
+ } catch (e) {
95
+ // Even if the save failed, we should proceed with closing the panel
96
+ // eslint-disable-next-line no-console
97
+ console.error(`Autosave failed with error`, e);
98
+ }
99
+ }
100
+ clearEditingContext(applyChange)(editorView.state, editorView.dispatch);
101
+ },
102
+ featureFlags: featureFlags
103
+ });
104
+ });
105
+ }
106
+ };
107
+ export async function onChangeAction(editorView, updatedParameters = {}, oldParameters = {}, nodeWithPos, onSaving) {
108
+ // WARNING: editorView.state stales quickly, do not unpack
109
+ const {
110
+ processParametersAfter,
111
+ processParametersBefore
112
+ } = getPluginState(editorView.state);
113
+ if (!processParametersAfter) {
114
+ return;
115
+ }
116
+ const unwrappedOldParameters = processParametersBefore ? processParametersBefore(oldParameters) : oldParameters;
117
+ // todo: update to only check parameters which are in the manifest's field definitions
118
+ if (areParametersEqual(unwrappedOldParameters, updatedParameters)) {
119
+ return;
120
+ }
121
+ if (onSaving) {
122
+ onSaving();
123
+ }
124
+ const key = Date.now();
125
+ const {
126
+ positions: previousPositions
127
+ } = getPluginState(editorView.state);
128
+ await updateState({
129
+ positions: {
130
+ ...previousPositions,
131
+ [key]: nodeWithPos.pos
132
+ }
133
+ })(editorView.state, editorView.dispatch);
134
+
135
+ // WARNING: after this, editorView.state may have changed
136
+ const newParameters = await processParametersAfter(updatedParameters);
137
+ const {
138
+ positions
139
+ } = getPluginState(editorView.state);
140
+ if (!positions) {
141
+ return;
142
+ }
143
+ if (!(key in positions)) {
144
+ return;
145
+ }
146
+ const {
147
+ node
148
+ } = nodeWithPos;
149
+ const newNode = buildExtensionNode(nodeWithPos.node.toJSON().type, editorView.state.schema, {
150
+ ...node.attrs,
151
+ parameters: {
152
+ ...oldParameters,
153
+ ...newParameters
154
+ }
155
+ }, node.content, node.marks);
156
+ if (!newNode) {
157
+ return;
158
+ }
159
+ const positionUpdated = positions[key];
160
+ const transaction = editorView.state.tr.replaceWith(positionUpdated, positionUpdated + newNode.nodeSize, newNode);
161
+
162
+ // Ensure we preserve the selection, tr.replaceWith causes it to be lost in some cases
163
+ // when replacing the node
164
+ const {
165
+ selection: prevSelection
166
+ } = editorView.state;
167
+ if (!prevSelection.eq(transaction.selection)) {
168
+ const selection = duplicateSelection(prevSelection, transaction.doc);
169
+ if (selection) {
170
+ transaction.setSelection(selection);
171
+ }
172
+ }
173
+ const positionsLess = {
174
+ ...getPluginState(editorView.state).positions
175
+ };
176
+ delete positionsLess[key];
177
+ await updateState({
178
+ positions: positionsLess
179
+ })(editorView.state, editorView.dispatch);
180
+ editorView.dispatch(transaction);
181
+ }
@@ -0,0 +1,284 @@
1
+ import { validator } from '@atlaskit/adf-utils/validator';
2
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { nodeToJSON } from '@atlaskit/editor-common/utils';
4
+ import { JSONTransformer } from '@atlaskit/editor-json-transformer';
5
+ import { Fragment, Mark } from '@atlaskit/editor-prosemirror/model';
6
+ import { NodeSelection, Selection } from '@atlaskit/editor-prosemirror/state';
7
+ import { setTextSelection } from '@atlaskit/editor-prosemirror/utils';
8
+ import { setEditingContextToContextPanel } from './commands';
9
+ import { insertMacroFromMacroBrowser } from './pm-plugins/macro/actions';
10
+ import { pluginKey as macroPluginKey } from './pm-plugins/macro/plugin-key';
11
+ import { findNodePosWithLocalId, getDataConsumerMark, getNodeTypesReferenced, getSelectedExtension } from './utils';
12
+ export const getEditInLegacyMacroBrowser = ({
13
+ view,
14
+ macroProvider,
15
+ editorAnalyticsAPI
16
+ }) => {
17
+ return () => {
18
+ if (!view) {
19
+ throw new Error(`Missing view. Can't update without EditorView`);
20
+ }
21
+ if (!macroProvider) {
22
+ throw new Error(`Missing macroProvider. Can't use the macro browser for updates`);
23
+ }
24
+ const nodeWithPos = getSelectedExtension(view.state, true);
25
+ if (!nodeWithPos) {
26
+ throw new Error(`Missing nodeWithPos. Can't determine position of node`);
27
+ }
28
+ insertMacroFromMacroBrowser(editorAnalyticsAPI)(macroProvider, nodeWithPos.node, true)(view);
29
+ };
30
+ };
31
+ const extensionAPICallPayload = functionName => ({
32
+ action: ACTION.INVOKED,
33
+ actionSubject: ACTION_SUBJECT.EXTENSION,
34
+ actionSubjectId: ACTION_SUBJECT_ID.EXTENSION_API,
35
+ attributes: {
36
+ functionName
37
+ },
38
+ eventType: EVENT_TYPE.TRACK
39
+ });
40
+ export const createExtensionAPI = options => {
41
+ const {
42
+ editorView: {
43
+ state: {
44
+ schema
45
+ }
46
+ },
47
+ editorAnalyticsAPI
48
+ } = options;
49
+ const nodes = Object.keys(schema.nodes);
50
+ const marks = Object.keys(schema.marks);
51
+ const validate = validator(nodes, marks, {
52
+ allowPrivateAttributes: true
53
+ });
54
+
55
+ /**
56
+ * Finds the node and its position by `localId`. Throws if the node could not be found.
57
+ *
58
+ * @returns {NodeWithPos}
59
+ */
60
+ const ensureNodePosByLocalId = (localId, {
61
+ opName
62
+ }) => {
63
+ // Be extra cautious since 3rd party devs can use regular JS without type safety
64
+ if (typeof localId !== 'string' || localId === '') {
65
+ throw new Error(`${opName}(): Invalid localId '${localId}'.`);
66
+ }
67
+
68
+ // Find the node + position matching the given ID
69
+ const {
70
+ editorView: {
71
+ state
72
+ }
73
+ } = options;
74
+ const nodePos = findNodePosWithLocalId(state, localId);
75
+ if (!nodePos) {
76
+ throw new Error(`${opName}(): Could not find node with ID '${localId}'.`);
77
+ }
78
+ return nodePos;
79
+ };
80
+ const doc = {
81
+ insertAfter: (localId, adf, opt) => {
82
+ try {
83
+ validate(adf);
84
+ } catch (e) {
85
+ throw new Error(`insertAfter(): Invalid ADF given.`);
86
+ }
87
+ const nodePos = ensureNodePosByLocalId(localId, {
88
+ opName: 'insertAfter'
89
+ });
90
+ const {
91
+ editorView
92
+ } = options;
93
+ const {
94
+ dispatch,
95
+ state
96
+ } = editorView;
97
+
98
+ // Validate the given ADF
99
+ const {
100
+ tr,
101
+ schema
102
+ } = state;
103
+ const nodeType = schema.nodes[adf.type];
104
+ if (!nodeType) {
105
+ throw new Error(`insertAfter(): Invalid ADF type '${adf.type}'.`);
106
+ }
107
+ const fragment = Fragment.fromJSON(schema, adf.content);
108
+ const marks = (adf.marks || []).map(markEntity => Mark.fromJSON(schema, markEntity));
109
+ const newNode = nodeType === null || nodeType === void 0 ? void 0 : nodeType.createChecked(adf.attrs, fragment, marks);
110
+ if (!newNode) {
111
+ throw new Error('insertAfter(): Could not create a node for given ADFEntity.');
112
+ }
113
+ const insertPosition = nodePos.pos + nodePos.node.nodeSize;
114
+ tr.insert(insertPosition, newNode);
115
+
116
+ // Validate if the document is valid at this point
117
+ try {
118
+ tr.doc.check();
119
+ } catch (err) {
120
+ throw new Error(`insertAfter(): The given ADFEntity cannot be inserted in the current position.\n${err}`);
121
+ }
122
+
123
+ // Analytics - tracking the api call
124
+ const apiCallPayload = extensionAPICallPayload('insertAfter');
125
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
126
+
127
+ // Analytics - tracking node types added
128
+ const nodesAdded = [newNode];
129
+ newNode.descendants(node => {
130
+ nodesAdded.push(node);
131
+ return true;
132
+ });
133
+ nodesAdded.forEach(node => {
134
+ const {
135
+ extensionKey,
136
+ extensionType
137
+ } = node.attrs;
138
+ const dataConsumerMark = getDataConsumerMark(node);
139
+ const stringIds = (dataConsumerMark === null || dataConsumerMark === void 0 ? void 0 : dataConsumerMark.attrs.sources.map(sourceId => sourceId)) || [];
140
+ const hasReferentiality = !!dataConsumerMark;
141
+ const nodeTypesReferenced = hasReferentiality ? getNodeTypesReferenced(stringIds, state) : undefined;
142
+
143
+ // fire off analytics for this ADF
144
+ const payload = {
145
+ action: ACTION.INSERTED,
146
+ actionSubject: ACTION_SUBJECT.DOCUMENT,
147
+ attributes: {
148
+ nodeType: node.type.name,
149
+ inputMethod: INPUT_METHOD.EXTENSION_API,
150
+ hasReferentiality,
151
+ nodeTypesReferenced,
152
+ layout: node.attrs.layout,
153
+ extensionType,
154
+ extensionKey
155
+ },
156
+ eventType: EVENT_TYPE.TRACK
157
+ };
158
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(payload)(tr);
159
+ });
160
+ if (opt && opt.allowSelectionToNewNode) {
161
+ tr.setSelection(new NodeSelection(tr.doc.resolve(insertPosition)));
162
+ }
163
+ dispatch(tr);
164
+ },
165
+ scrollTo: localId => {
166
+ const nodePos = ensureNodePosByLocalId(localId, {
167
+ opName: 'scrollTo'
168
+ });
169
+
170
+ // Analytics - tracking the api call
171
+ const apiCallPayload = extensionAPICallPayload('scrollTo');
172
+ const {
173
+ editorView: {
174
+ dispatch,
175
+ state
176
+ }
177
+ } = options;
178
+ let {
179
+ tr
180
+ } = state;
181
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
182
+ tr = setTextSelection(nodePos.pos)(tr);
183
+ tr = tr.scrollIntoView();
184
+ dispatch(tr);
185
+ },
186
+ update: (localId, mutationCallback) => {
187
+ var _changedValues$marks;
188
+ const {
189
+ node,
190
+ pos
191
+ } = ensureNodePosByLocalId(localId, {
192
+ opName: 'update'
193
+ });
194
+ const {
195
+ editorView: {
196
+ dispatch,
197
+ state
198
+ }
199
+ } = options;
200
+ const {
201
+ tr,
202
+ schema
203
+ } = state;
204
+ const changedValues = mutationCallback({
205
+ content: nodeToJSON(node).content,
206
+ attrs: node.attrs,
207
+ marks: node.marks.map(pmMark => ({
208
+ type: pmMark.type.name,
209
+ attrs: pmMark.attrs
210
+ }))
211
+ });
212
+ const ensureValidMark = mark => {
213
+ if (typeof mark !== 'object' || Array.isArray(mark)) {
214
+ throw new Error(`update(): Invalid mark given.`);
215
+ }
216
+ const {
217
+ parent
218
+ } = state.doc.resolve(pos);
219
+ // Ensure that the given mark is present in the schema
220
+ const markType = schema.marks[mark.type];
221
+ if (!markType) {
222
+ throw new Error(`update(): Invalid ADF mark type '${mark.type}'.`);
223
+ }
224
+ if (!parent.type.allowsMarkType(markType)) {
225
+ throw new Error(`update(): Parent of type '${parent.type.name}' does not allow marks of type '${mark.type}'.`);
226
+ }
227
+ return {
228
+ mark: markType,
229
+ attrs: mark.attrs
230
+ };
231
+ };
232
+ const newMarks = changedValues.hasOwnProperty('marks') ? (_changedValues$marks = changedValues.marks) === null || _changedValues$marks === void 0 ? void 0 : _changedValues$marks.map(ensureValidMark).map(({
233
+ mark,
234
+ attrs
235
+ }) => mark.create(attrs)) : node.marks;
236
+ const newContent = changedValues.hasOwnProperty('content') ? Fragment.fromJSON(schema, changedValues.content) : node.content;
237
+ const newAttrs = changedValues.hasOwnProperty('attrs') ? changedValues.attrs : node.attrs;
238
+
239
+ // Validate if the new attributes, content and marks result in a valid node and adf.
240
+ try {
241
+ const newNode = node.type.createChecked(newAttrs, newContent, newMarks);
242
+ const newNodeAdf = new JSONTransformer().encodeNode(newNode);
243
+ validate(newNodeAdf);
244
+ tr.replaceWith(pos, pos + node.nodeSize, newNode);
245
+
246
+ // Keep selection if content does not change
247
+ if (newContent === node.content) {
248
+ tr.setSelection(Selection.fromJSON(tr.doc, state.selection.toJSON()));
249
+ }
250
+ } catch (err) {
251
+ throw new Error(`update(): The given ADFEntity cannot be inserted in the current position.\n${err}`);
252
+ }
253
+
254
+ // Analytics - tracking the api call
255
+ const apiCallPayload = extensionAPICallPayload('update');
256
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent(apiCallPayload)(tr);
257
+ dispatch(tr);
258
+ }
259
+ };
260
+ return {
261
+ editInContextPanel: (transformBefore, transformAfter) => {
262
+ const {
263
+ editorView
264
+ } = options;
265
+ setEditingContextToContextPanel(transformBefore, transformAfter, options.applyChange)(editorView.state, editorView.dispatch, editorView);
266
+ },
267
+ _editInLegacyMacroBrowser: () => {
268
+ const {
269
+ editorView
270
+ } = options;
271
+ let editInLegacy = options.editInLegacyMacroBrowser;
272
+ if (!editInLegacy) {
273
+ const macroState = macroPluginKey.getState(editorView.state);
274
+ editInLegacy = getEditInLegacyMacroBrowser({
275
+ view: options.editorView,
276
+ macroProvider: (macroState === null || macroState === void 0 ? void 0 : macroState.macroProvider) || undefined,
277
+ editorAnalyticsAPI
278
+ });
279
+ }
280
+ editInLegacy();
281
+ },
282
+ doc
283
+ };
284
+ };
@@ -1 +1 @@
1
- export {};
1
+ export { extensionPlugin } from './plugin';
@@ -0,0 +1,26 @@
1
+ import { pluginFactory } from '@atlaskit/editor-common/utils';
2
+ import { pluginKey } from './plugin-key';
3
+ import reducer from './reducer';
4
+ const factory = pluginFactory(pluginKey, reducer, {
5
+ mapping(tr, state) {
6
+ const {
7
+ positions: previousPositions
8
+ } = state;
9
+ if (!previousPositions) {
10
+ return state;
11
+ }
12
+ const positions = {
13
+ ...previousPositions
14
+ };
15
+ for (const key in positions) {
16
+ positions[key] = tr.mapping.map(positions[key]);
17
+ }
18
+ return {
19
+ ...state,
20
+ positions
21
+ };
22
+ }
23
+ });
24
+ export const createPluginState = factory.createPluginState;
25
+ export const createCommand = factory.createCommand;
26
+ export const getPluginState = factory.getPluginState;
@@ -0,0 +1,2 @@
1
+ import { PluginKey } from '@atlaskit/editor-prosemirror/state';
2
+ export const pluginKey = new PluginKey('extensionPlugin');