@atlaskit/editor-plugin-extension 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) 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
  308. package/tmp/api-report-tmp.d.ts +0 -78
package/.eslintrc.js ADDED
@@ -0,0 +1,26 @@
1
+ module.exports = {
2
+ rules: {
3
+ '@typescript-eslint/no-duplicate-imports': 'error',
4
+ '@typescript-eslint/no-explicit-any': 'error',
5
+ '@typescript-eslint/ban-types': [
6
+ 'error',
7
+ {
8
+ types: {
9
+ 'React.FC':
10
+ 'Please use types directly on props instead, and explicitly define children if required',
11
+ 'React.FunctionalComponent':
12
+ 'Please use types directly on props instead, and explicitly define children if required',
13
+ },
14
+ extendDefaults: false,
15
+ },
16
+ ],
17
+ },
18
+ overrides: [
19
+ {
20
+ files: ['**/__tests__/**/*.{js,ts,tsx}', '**/examples/**/*.{js,ts,tsx}'],
21
+ rules: {
22
+ '@typescript-eslint/no-explicit-any': 'off',
23
+ },
24
+ },
25
+ ],
26
+ };
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/editor-plugin-extension
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#65712](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/65712) [`963b53c64eee`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/963b53c64eee) - Extract code for extension plugin from editor-core to @atlaskit/editor-plugin-extension
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
13
+ ## 0.4.2
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 0.4.1
4
20
 
5
21
  ### Patch Changes
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.performNodeUpdate = exports.editSelectedExtension = exports.editExtension = exports.createEditSelectedExtensionAction = exports.buildExtensionNode = void 0;
8
+ Object.defineProperty(exports, "transformSliceToRemoveOpenBodiedExtension", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _transforms.transformSliceToRemoveOpenBodiedExtension;
12
+ }
13
+ });
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+ var _analytics = require("@atlaskit/editor-common/analytics");
18
+ var _transforms = require("@atlaskit/editor-common/transforms");
19
+ var _state2 = require("@atlaskit/editor-prosemirror/state");
20
+ var _utils = require("@atlaskit/editor-prosemirror/utils");
21
+ var _extensionApi = require("./extension-api");
22
+ var _main = require("./pm-plugins/main");
23
+ var _utils2 = require("./utils");
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
+ var buildExtensionNode = exports.buildExtensionNode = function buildExtensionNode(type, schema, attrs, content, marks) {
27
+ switch (type) {
28
+ case 'extension':
29
+ return schema.nodes.extension.createChecked(attrs, content, marks);
30
+ case 'inlineExtension':
31
+ return schema.nodes.inlineExtension.createChecked(attrs, content, marks);
32
+ case 'bodiedExtension':
33
+ return schema.nodes.bodiedExtension.create(attrs, content, marks);
34
+ }
35
+ };
36
+ var performNodeUpdate = exports.performNodeUpdate = function performNodeUpdate(editorAnalyticsAPI) {
37
+ return function (type, newAttrs, content, marks, shouldScrollIntoView) {
38
+ return function (_state, _dispatch, view) {
39
+ if (!view) {
40
+ throw Error('EditorView is required to perform node update!');
41
+ }
42
+ // NOTE: `state` and `dispatch` are stale at this point so we need to grab
43
+ // the latest one from `view` @see HOT-93986
44
+ var state = view.state,
45
+ dispatch = view.dispatch;
46
+ var newNode = buildExtensionNode(type, state.schema, newAttrs, content, marks);
47
+ if (!newNode) {
48
+ return false;
49
+ }
50
+ var selection = state.selection,
51
+ schema = state.schema;
52
+ var _schema$nodes = schema.nodes,
53
+ extension = _schema$nodes.extension,
54
+ inlineExtension = _schema$nodes.inlineExtension,
55
+ bodiedExtension = _schema$nodes.bodiedExtension;
56
+ var isBodiedExtensionSelected = !!(0, _utils.findSelectedNodeOfType)([bodiedExtension])(selection);
57
+ var extensionState = (0, _main.getPluginState)(state);
58
+ var targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.CURRENT_SELECTION;
59
+ var action = _analytics.ACTION.UPDATED;
60
+ var tr = state.tr;
61
+
62
+ // When it's a bodiedExtension but not selected
63
+ if (newNode.type === bodiedExtension && !isBodiedExtensionSelected) {
64
+ // Bodied extensions can trigger an update when the cursor is inside which means that there is no node selected.
65
+ // To work around that we replace the parent and create a text selection instead of new node selection
66
+ tr = (0, _utils.replaceParentNodeOfType)(state.schema.nodes.bodiedExtension, newNode)(tr);
67
+ // Replacing selected node doesn't update the selection. `selection.node` still returns the old node
68
+ tr.setSelection(_state2.TextSelection.create(tr.doc, state.selection.anchor));
69
+ }
70
+ // If any extension is currently selected
71
+ else if ((0, _utils.findSelectedNodeOfType)([extension, bodiedExtension, inlineExtension])(selection)) {
72
+ tr = (0, _utils.replaceSelectedNode)(newNode)(tr);
73
+ // Replacing selected node doesn't update the selection. `selection.node` still returns the old node
74
+ tr.setSelection(_state2.NodeSelection.create(tr.doc, tr.mapping.map(state.selection.anchor)));
75
+ }
76
+ // When we loose the selection. This usually happens when Synchrony resets or changes
77
+ // the selection when user is in the middle of updating an extension.
78
+ else if (extensionState.element) {
79
+ var pos = view.posAtDOM(extensionState.element, -1);
80
+ if (pos > -1) {
81
+ tr = tr.replaceWith(pos, pos + (content.size || 0) + 1, newNode);
82
+ tr.setSelection(_state2.Selection.near(tr.doc.resolve(pos)));
83
+ targetSelectionSource = _analytics.TARGET_SELECTION_SOURCE.HTML_ELEMENT;
84
+ } else {
85
+ action = _analytics.ACTION.ERRORED;
86
+ }
87
+ }
88
+
89
+ // Only scroll if we have anything to update, best to avoid surprise scroll
90
+ if (dispatch && tr.docChanged) {
91
+ var _newNode$attrs = newNode.attrs,
92
+ extensionType = _newNode$attrs.extensionType,
93
+ extensionKey = _newNode$attrs.extensionKey,
94
+ layout = _newNode$attrs.layout,
95
+ localId = _newNode$attrs.localId;
96
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
97
+ action: action,
98
+ actionSubject: _analytics.ACTION_SUBJECT.EXTENSION,
99
+ actionSubjectId: newNode.type.name,
100
+ eventType: _analytics.EVENT_TYPE.TRACK,
101
+ attributes: {
102
+ inputMethod: _analytics.INPUT_METHOD.CONFIG_PANEL,
103
+ extensionType: extensionType,
104
+ extensionKey: extensionKey,
105
+ layout: layout,
106
+ localId: localId,
107
+ selection: tr.selection.toJSON(),
108
+ targetSelectionSource: targetSelectionSource
109
+ }
110
+ })(tr);
111
+ dispatch(shouldScrollIntoView ? tr.scrollIntoView() : tr);
112
+ }
113
+ return true;
114
+ };
115
+ };
116
+ };
117
+ var updateExtensionParams = function updateExtensionParams(editorAnalyticsAPI) {
118
+ return function (updateExtension, node, actions) {
119
+ return /*#__PURE__*/function () {
120
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(state, dispatch, view) {
121
+ var _node$node, attrs, type, content, marks, parameters, newParameters, newAttrs;
122
+ return _regenerator.default.wrap(function _callee$(_context) {
123
+ while (1) switch (_context.prev = _context.next) {
124
+ case 0:
125
+ _node$node = node.node, attrs = _node$node.attrs, type = _node$node.type, content = _node$node.content, marks = _node$node.marks;
126
+ if (state.schema.nodes[type.name]) {
127
+ _context.next = 3;
128
+ break;
129
+ }
130
+ return _context.abrupt("return", false);
131
+ case 3:
132
+ parameters = attrs.parameters;
133
+ _context.prev = 4;
134
+ _context.next = 7;
135
+ return updateExtension(parameters, actions);
136
+ case 7:
137
+ newParameters = _context.sent;
138
+ if (!newParameters) {
139
+ _context.next = 11;
140
+ break;
141
+ }
142
+ newAttrs = _objectSpread(_objectSpread({}, attrs), {}, {
143
+ parameters: _objectSpread(_objectSpread({}, parameters), newParameters)
144
+ });
145
+ return _context.abrupt("return", performNodeUpdate(editorAnalyticsAPI)(type.name, newAttrs, content, marks, true)(state, dispatch, view));
146
+ case 11:
147
+ _context.next = 15;
148
+ break;
149
+ case 13:
150
+ _context.prev = 13;
151
+ _context.t0 = _context["catch"](4);
152
+ case 15:
153
+ return _context.abrupt("return", true);
154
+ case 16:
155
+ case "end":
156
+ return _context.stop();
157
+ }
158
+ }, _callee, null, [[4, 13]]);
159
+ }));
160
+ return function (_x, _x2, _x3) {
161
+ return _ref.apply(this, arguments);
162
+ };
163
+ }();
164
+ };
165
+ };
166
+
167
+ // This is to decouple extensions from editor core
168
+ // Ideally in the future we completely deprecate `EditorActions`
169
+ var editSelectedExtension = exports.editSelectedExtension = function editSelectedExtension(editorActions) {
170
+ var editorView = editorActions._privateGetEditorView();
171
+ var _getPluginState = (0, _main.getPluginState)(editorView.state),
172
+ updateExtension = _getPluginState.updateExtension,
173
+ applyChangeToContextPanel = _getPluginState.applyChangeToContextPanel;
174
+ // The analytics API cannot be accessed in this case because
175
+ // we do not have access to the plugin injection API. Rather
176
+ // than change the way this works - we just won't use analytics
177
+ // here for now.
178
+ var editorAnalyticsAPI = undefined;
179
+ return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(editorView.state, editorView.dispatch, editorView);
180
+ };
181
+ var editExtension = exports.editExtension = function editExtension(macroProvider, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension) {
182
+ return function (state, dispatch, view) {
183
+ if (!view) {
184
+ return false;
185
+ }
186
+ var _getPluginState2 = (0, _main.getPluginState)(state),
187
+ localId = _getPluginState2.localId;
188
+ var nodeWithPos = (0, _utils2.findExtensionWithLocalId)(state, localId);
189
+ if (!nodeWithPos) {
190
+ return false;
191
+ }
192
+ var editInLegacyMacroBrowser = (0, _extensionApi.getEditInLegacyMacroBrowser)({
193
+ view: view,
194
+ macroProvider: macroProvider || undefined,
195
+ editorAnalyticsAPI: editorAnalyticsAPI
196
+ });
197
+ if (updateExtension) {
198
+ updateExtension.then(function (updateMethod) {
199
+ if (updateMethod && view) {
200
+ var actions = (0, _extensionApi.createExtensionAPI)({
201
+ editorView: view,
202
+ editInLegacyMacroBrowser: editInLegacyMacroBrowser,
203
+ applyChange: applyChangeToContextPanel,
204
+ editorAnalyticsAPI: editorAnalyticsAPI
205
+ });
206
+ updateExtensionParams(editorAnalyticsAPI)(updateMethod, nodeWithPos, actions)(state, dispatch, view);
207
+ return;
208
+ }
209
+ if (!updateMethod && macroProvider) {
210
+ editInLegacyMacroBrowser();
211
+ return;
212
+ }
213
+ });
214
+ } else {
215
+ if (!macroProvider) {
216
+ return false;
217
+ }
218
+ editInLegacyMacroBrowser();
219
+ }
220
+ return true;
221
+ };
222
+ };
223
+ var createEditSelectedExtensionAction = exports.createEditSelectedExtensionAction = function createEditSelectedExtensionAction(_ref2) {
224
+ var editorViewRef = _ref2.editorViewRef,
225
+ editorAnalyticsAPI = _ref2.editorAnalyticsAPI;
226
+ return function () {
227
+ var view = editorViewRef.current;
228
+ if (!view) {
229
+ return false;
230
+ }
231
+ var _getPluginState3 = (0, _main.getPluginState)(view.state),
232
+ updateExtension = _getPluginState3.updateExtension,
233
+ applyChangeToContextPanel = _getPluginState3.applyChangeToContextPanel;
234
+ return editExtension(null, applyChangeToContextPanel, editorAnalyticsAPI, updateExtension)(view.state, view.dispatch, view);
235
+ };
236
+ };
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.removeExtension = exports.removeDescendantNodes = exports.forceAutoSave = exports.clearEditingContext = exports.checkAndRemoveExtensionNode = void 0;
8
+ exports.setEditingContextToContextPanel = setEditingContextToContextPanel;
9
+ exports.updateExtensionLayout = void 0;
10
+ exports.updateState = updateState;
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _analytics = require("@atlaskit/editor-common/analytics");
13
+ var _utils = require("@atlaskit/editor-common/utils");
14
+ var _utils2 = require("@atlaskit/editor-prosemirror/utils");
15
+ var _pluginFactory = require("./plugin-factory");
16
+ var _utils3 = require("./utils");
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ // AFP-2532 TODO: Fix automatic suppressions below
20
+ // eslint-disable-next-line @atlassian/tangerine/import/entry-points
21
+
22
+ function updateState(state) {
23
+ return (0, _pluginFactory.createCommand)({
24
+ type: 'UPDATE_STATE',
25
+ data: state
26
+ });
27
+ }
28
+ function setEditingContextToContextPanel(processParametersBefore, processParametersAfter, applyChangeToContextPanel) {
29
+ return (0, _pluginFactory.createCommand)({
30
+ type: 'UPDATE_STATE',
31
+ data: {
32
+ showContextPanel: true,
33
+ processParametersBefore: processParametersBefore,
34
+ processParametersAfter: processParametersAfter
35
+ }
36
+ }, applyChangeToContextPanel);
37
+ }
38
+ var clearEditingContext = exports.clearEditingContext = function clearEditingContext(applyChangeToContextPanel) {
39
+ return (0, _pluginFactory.createCommand)({
40
+ type: 'UPDATE_STATE',
41
+ data: {
42
+ showContextPanel: false,
43
+ processParametersBefore: undefined,
44
+ processParametersAfter: undefined
45
+ }
46
+ }, applyChangeToContextPanel);
47
+ };
48
+ var forceAutoSave = exports.forceAutoSave = function forceAutoSave(applyChangeToContextPanel) {
49
+ return function (resolve, reject) {
50
+ return (0, _pluginFactory.createCommand)({
51
+ type: 'UPDATE_STATE',
52
+ data: {
53
+ autoSaveResolve: resolve,
54
+ autoSaveReject: reject
55
+ }
56
+ }, applyChangeToContextPanel);
57
+ };
58
+ };
59
+ var updateExtensionLayout = exports.updateExtensionLayout = function updateExtensionLayout(layout) {
60
+ return (0, _pluginFactory.createCommand)({
61
+ type: 'UPDATE_STATE',
62
+ data: {
63
+ layout: layout
64
+ }
65
+ }, function (tr, state) {
66
+ var selectedExtension = (0, _utils3.getSelectedExtension)(state, true);
67
+ if (selectedExtension) {
68
+ var trWithNewNodeMarkup = tr.setNodeMarkup(selectedExtension.pos, undefined, _objectSpread(_objectSpread({}, selectedExtension.node.attrs), {}, {
69
+ layout: layout
70
+ }));
71
+ trWithNewNodeMarkup.setMeta('scrollIntoView', false);
72
+ return trWithNewNodeMarkup;
73
+ }
74
+ return tr;
75
+ });
76
+ };
77
+ var removeExtension = exports.removeExtension = function removeExtension(editorAnalyticsAPI) {
78
+ return (0, _pluginFactory.createCommand)({
79
+ type: 'UPDATE_STATE',
80
+ data: {
81
+ element: undefined
82
+ }
83
+ }, function (tr, state) {
84
+ if ((0, _utils3.getSelectedExtension)(state)) {
85
+ return (0, _utils2.removeSelectedNode)(tr);
86
+ } else {
87
+ return checkAndRemoveExtensionNode(state, tr, editorAnalyticsAPI);
88
+ }
89
+ });
90
+ };
91
+ var removeDescendantNodes = exports.removeDescendantNodes = function removeDescendantNodes(sourceNode) {
92
+ return (0, _pluginFactory.createCommand)({
93
+ type: 'UPDATE_STATE',
94
+ data: {
95
+ element: undefined
96
+ }
97
+ }, function (tr, state) {
98
+ return sourceNode ? (0, _utils.removeConnectedNodes)(state, sourceNode) : tr;
99
+ });
100
+ };
101
+ var checkAndRemoveExtensionNode = exports.checkAndRemoveExtensionNode = function checkAndRemoveExtensionNode(state, tr, analyticsApi) {
102
+ var nodeType = state.schema.nodes.bodiedExtension;
103
+ var maybeMBENode = (0, _utils2.findParentNodeOfType)(state.schema.nodes.multiBodiedExtension)(state.selection);
104
+ if (maybeMBENode) {
105
+ nodeType = state.schema.nodes.multiBodiedExtension;
106
+ if (analyticsApi) {
107
+ analyticsApi.attachAnalyticsEvent({
108
+ action: _analytics.ACTION.DELETED,
109
+ actionSubject: _analytics.ACTION_SUBJECT.MULTI_BODIED_EXTENSION,
110
+ eventType: _analytics.EVENT_TYPE.TRACK,
111
+ attributes: {
112
+ extensionType: maybeMBENode.node.attrs.extensionType,
113
+ extensionKey: maybeMBENode.node.attrs.extensionKey,
114
+ localId: maybeMBENode.node.attrs.localId,
115
+ maxFramesCount: maybeMBENode.node.attrs.maxFrames,
116
+ currentFramesCount: maybeMBENode.node.content.childCount
117
+ }
118
+ })(tr);
119
+ }
120
+ }
121
+ return (0, _utils2.removeParentNodeOfType)(nodeType)(tr);
122
+ };
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getContextPanel = exports.duplicateSelection = void 0;
8
+ exports.onChangeAction = onChangeAction;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _extensions = require("@atlaskit/editor-common/extensions");
16
+ var _selection = require("@atlaskit/editor-common/selection");
17
+ var _state = require("@atlaskit/editor-prosemirror/state");
18
+ var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
19
+ var _actions = require("./actions");
20
+ var _commands = require("./commands");
21
+ var _main = require("./pm-plugins/main");
22
+ var _ConfigPanelLoader = _interopRequireDefault(require("./ui/ConfigPanel/ConfigPanelLoader"));
23
+ var _SaveIndicator = require("./ui/SaveIndicator/SaveIndicator");
24
+ var _utils = require("./utils");
25
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
+ var areParametersEqual = function areParametersEqual(firstParameters, secondParameters) {
28
+ if ((0, _typeof2.default)(firstParameters) === 'object' && (0, _typeof2.default)(secondParameters) === 'object' && firstParameters !== null && secondParameters !== null) {
29
+ var firstKeys = Object.keys(firstParameters);
30
+ var secondKeys = Object.keys(secondParameters);
31
+ return firstKeys.length === secondKeys.length && firstKeys.every(function (key) {
32
+ return firstParameters[key] === secondParameters[key];
33
+ });
34
+ }
35
+ return firstParameters === secondParameters;
36
+ };
37
+ var duplicateSelection = exports.duplicateSelection = function duplicateSelection(selectionToDuplicate, doc) {
38
+ if (selectionToDuplicate instanceof _state.NodeSelection) {
39
+ return _state.NodeSelection.create(doc, selectionToDuplicate.from);
40
+ } else if (selectionToDuplicate instanceof _state.TextSelection) {
41
+ return _state.TextSelection.create(doc, selectionToDuplicate.from, selectionToDuplicate.to);
42
+ } else if (selectionToDuplicate instanceof _selection.GapCursorSelection) {
43
+ return new _selection.GapCursorSelection(doc.resolve(selectionToDuplicate.from), selectionToDuplicate.side);
44
+ } else if (selectionToDuplicate instanceof _cellSelection.CellSelection) {
45
+ return new _cellSelection.CellSelection(doc.resolve(selectionToDuplicate.$anchorCell.pos), doc.resolve(selectionToDuplicate.$headCell.pos));
46
+ }
47
+ };
48
+ var getContextPanel = exports.getContextPanel = function getContextPanel(getEditorView) {
49
+ return function (allowAutoSave, featureFlags, applyChange) {
50
+ return function (state) {
51
+ var nodeWithPos = (0, _utils.getSelectedExtension)(state, true);
52
+
53
+ // Adding checks to bail out early
54
+ if (!nodeWithPos) {
55
+ return;
56
+ }
57
+ var extensionState = (0, _main.getPluginState)(state);
58
+ var autoSaveResolve = extensionState.autoSaveResolve,
59
+ autoSaveReject = extensionState.autoSaveReject,
60
+ showContextPanel = extensionState.showContextPanel,
61
+ extensionProvider = extensionState.extensionProvider,
62
+ processParametersBefore = extensionState.processParametersBefore,
63
+ processParametersAfter = extensionState.processParametersAfter;
64
+ if (extensionState && showContextPanel && extensionProvider && processParametersAfter) {
65
+ var _nodeWithPos$node$att = nodeWithPos.node.attrs,
66
+ extensionType = _nodeWithPos$node$att.extensionType,
67
+ extensionKey = _nodeWithPos$node$att.extensionKey,
68
+ parameters = _nodeWithPos$node$att.parameters;
69
+ var _getExtensionKeyAndNo = (0, _extensions.getExtensionKeyAndNodeKey)(extensionKey, extensionType),
70
+ _getExtensionKeyAndNo2 = (0, _slicedToArray2.default)(_getExtensionKeyAndNo, 2),
71
+ extKey = _getExtensionKeyAndNo2[0],
72
+ nodeKey = _getExtensionKeyAndNo2[1];
73
+ var configParams = processParametersBefore ? processParametersBefore(parameters || {}) : parameters;
74
+ return /*#__PURE__*/_react.default.createElement(_SaveIndicator.SaveIndicator, {
75
+ duration: 5000,
76
+ visible: allowAutoSave
77
+ }, function (_ref) {
78
+ var onSaveStarted = _ref.onSaveStarted,
79
+ onSaveEnded = _ref.onSaveEnded;
80
+ var editorView = getEditorView === null || getEditorView === void 0 ? void 0 : getEditorView();
81
+ if (!editorView) {
82
+ return null;
83
+ }
84
+ return /*#__PURE__*/_react.default.createElement(_ConfigPanelLoader.default, {
85
+ showHeader: true,
86
+ closeOnEsc: true,
87
+ extensionType: extensionType,
88
+ extensionKey: extKey,
89
+ nodeKey: nodeKey,
90
+ extensionParameters: parameters,
91
+ parameters: configParams,
92
+ extensionProvider: extensionProvider,
93
+ autoSave: allowAutoSave,
94
+ autoSaveTrigger: autoSaveResolve,
95
+ autoSaveReject: autoSaveReject,
96
+ onChange: /*#__PURE__*/function () {
97
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(updatedParameters) {
98
+ return _regenerator.default.wrap(function _callee$(_context) {
99
+ while (1) switch (_context.prev = _context.next) {
100
+ case 0:
101
+ _context.next = 2;
102
+ return onChangeAction(editorView, updatedParameters, parameters, nodeWithPos, onSaveStarted);
103
+ case 2:
104
+ onSaveEnded();
105
+ if (autoSaveResolve) {
106
+ autoSaveResolve();
107
+ }
108
+ if (!allowAutoSave) {
109
+ (0, _commands.clearEditingContext)(applyChange)(editorView.state, editorView.dispatch);
110
+ }
111
+ case 5:
112
+ case "end":
113
+ return _context.stop();
114
+ }
115
+ }, _callee);
116
+ }));
117
+ return function (_x) {
118
+ return _ref2.apply(this, arguments);
119
+ };
120
+ }(),
121
+ onCancel: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
122
+ return _regenerator.default.wrap(function _callee2$(_context2) {
123
+ while (1) switch (_context2.prev = _context2.next) {
124
+ case 0:
125
+ if (!allowAutoSave) {
126
+ _context2.next = 9;
127
+ break;
128
+ }
129
+ _context2.prev = 1;
130
+ _context2.next = 4;
131
+ return new Promise(function (resolve, reject) {
132
+ (0, _commands.forceAutoSave)(applyChange)(resolve, reject)(editorView.state, editorView.dispatch);
133
+ });
134
+ case 4:
135
+ _context2.next = 9;
136
+ break;
137
+ case 6:
138
+ _context2.prev = 6;
139
+ _context2.t0 = _context2["catch"](1);
140
+ // Even if the save failed, we should proceed with closing the panel
141
+ // eslint-disable-next-line no-console
142
+ console.error("Autosave failed with error", _context2.t0);
143
+ case 9:
144
+ (0, _commands.clearEditingContext)(applyChange)(editorView.state, editorView.dispatch);
145
+ case 10:
146
+ case "end":
147
+ return _context2.stop();
148
+ }
149
+ }, _callee2, null, [[1, 6]]);
150
+ })),
151
+ featureFlags: featureFlags
152
+ });
153
+ });
154
+ }
155
+ };
156
+ };
157
+ };
158
+ function onChangeAction(_x2) {
159
+ return _onChangeAction.apply(this, arguments);
160
+ }
161
+ function _onChangeAction() {
162
+ _onChangeAction = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(editorView) {
163
+ var updatedParameters,
164
+ oldParameters,
165
+ nodeWithPos,
166
+ onSaving,
167
+ _ref4,
168
+ processParametersAfter,
169
+ processParametersBefore,
170
+ unwrappedOldParameters,
171
+ key,
172
+ _ref5,
173
+ previousPositions,
174
+ newParameters,
175
+ _ref6,
176
+ positions,
177
+ node,
178
+ newNode,
179
+ positionUpdated,
180
+ transaction,
181
+ prevSelection,
182
+ selection,
183
+ positionsLess,
184
+ _args3 = arguments;
185
+ return _regenerator.default.wrap(function _callee3$(_context3) {
186
+ while (1) switch (_context3.prev = _context3.next) {
187
+ case 0:
188
+ updatedParameters = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
189
+ oldParameters = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : {};
190
+ nodeWithPos = _args3.length > 3 ? _args3[3] : undefined;
191
+ onSaving = _args3.length > 4 ? _args3[4] : undefined;
192
+ // WARNING: editorView.state stales quickly, do not unpack
193
+ _ref4 = (0, _main.getPluginState)(editorView.state), processParametersAfter = _ref4.processParametersAfter, processParametersBefore = _ref4.processParametersBefore;
194
+ if (processParametersAfter) {
195
+ _context3.next = 7;
196
+ break;
197
+ }
198
+ return _context3.abrupt("return");
199
+ case 7:
200
+ unwrappedOldParameters = processParametersBefore ? processParametersBefore(oldParameters) : oldParameters; // todo: update to only check parameters which are in the manifest's field definitions
201
+ if (!areParametersEqual(unwrappedOldParameters, updatedParameters)) {
202
+ _context3.next = 10;
203
+ break;
204
+ }
205
+ return _context3.abrupt("return");
206
+ case 10:
207
+ if (onSaving) {
208
+ onSaving();
209
+ }
210
+ key = Date.now();
211
+ _ref5 = (0, _main.getPluginState)(editorView.state), previousPositions = _ref5.positions;
212
+ _context3.next = 15;
213
+ return (0, _commands.updateState)({
214
+ positions: _objectSpread(_objectSpread({}, previousPositions), {}, (0, _defineProperty2.default)({}, key, nodeWithPos.pos))
215
+ })(editorView.state, editorView.dispatch);
216
+ case 15:
217
+ _context3.next = 17;
218
+ return processParametersAfter(updatedParameters);
219
+ case 17:
220
+ newParameters = _context3.sent;
221
+ _ref6 = (0, _main.getPluginState)(editorView.state), positions = _ref6.positions;
222
+ if (positions) {
223
+ _context3.next = 21;
224
+ break;
225
+ }
226
+ return _context3.abrupt("return");
227
+ case 21:
228
+ if (key in positions) {
229
+ _context3.next = 23;
230
+ break;
231
+ }
232
+ return _context3.abrupt("return");
233
+ case 23:
234
+ node = nodeWithPos.node;
235
+ newNode = (0, _actions.buildExtensionNode)(nodeWithPos.node.toJSON().type, editorView.state.schema, _objectSpread(_objectSpread({}, node.attrs), {}, {
236
+ parameters: _objectSpread(_objectSpread({}, oldParameters), newParameters)
237
+ }), node.content, node.marks);
238
+ if (newNode) {
239
+ _context3.next = 27;
240
+ break;
241
+ }
242
+ return _context3.abrupt("return");
243
+ case 27:
244
+ positionUpdated = positions[key];
245
+ transaction = editorView.state.tr.replaceWith(positionUpdated, positionUpdated + newNode.nodeSize, newNode); // Ensure we preserve the selection, tr.replaceWith causes it to be lost in some cases
246
+ // when replacing the node
247
+ prevSelection = editorView.state.selection;
248
+ if (!prevSelection.eq(transaction.selection)) {
249
+ selection = duplicateSelection(prevSelection, transaction.doc);
250
+ if (selection) {
251
+ transaction.setSelection(selection);
252
+ }
253
+ }
254
+ positionsLess = _objectSpread({}, (0, _main.getPluginState)(editorView.state).positions);
255
+ delete positionsLess[key];
256
+ _context3.next = 35;
257
+ return (0, _commands.updateState)({
258
+ positions: positionsLess
259
+ })(editorView.state, editorView.dispatch);
260
+ case 35:
261
+ editorView.dispatch(transaction);
262
+ case 36:
263
+ case "end":
264
+ return _context3.stop();
265
+ }
266
+ }, _callee3);
267
+ }));
268
+ return _onChangeAction.apply(this, arguments);
269
+ }