@atlaskit/editor-core 182.0.3 → 182.1.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 (269) hide show
  1. package/.eslintrc.js +2 -0
  2. package/CHANGELOG.md +47 -0
  3. package/README.md +20 -0
  4. package/architecture/0001-record-architecture-decisions.md +25 -0
  5. package/architecture/0002-deep-equality-check-for-getsharedstate.md +67 -0
  6. package/architecture/0003-explicit-plugin-dependencies.md +291 -0
  7. package/dist/cjs/actions/index.js +17 -6
  8. package/dist/cjs/analytics-api/attach-payload-into-transaction.js +2 -1
  9. package/dist/cjs/create-editor/ErrorBoundary.js +1 -16
  10. package/dist/cjs/create-editor/ReactEditorViewInternal.js +3 -3
  11. package/dist/cjs/editor-next/editor-internal.js +2 -1
  12. package/dist/cjs/editor-next/index.js +5 -1
  13. package/dist/cjs/editor.js +9 -5
  14. package/dist/cjs/keymaps/index.js +12 -0
  15. package/dist/cjs/labs/next/internal/hooks/use-editor/index.js +5 -7
  16. package/dist/cjs/labs/next/presets/default.js +1 -2
  17. package/dist/cjs/plugins/card/index.js +16 -5
  18. package/dist/cjs/plugins/card/pm-plugins/actions.js +10 -1
  19. package/dist/cjs/plugins/card/pm-plugins/analytics/create-analytics-queue.js +48 -0
  20. package/dist/cjs/plugins/card/pm-plugins/analytics/events-from-tr.js +337 -0
  21. package/dist/cjs/plugins/card/pm-plugins/analytics/index.js +19 -0
  22. package/dist/cjs/plugins/card/pm-plugins/analytics/types.js +5 -0
  23. package/dist/cjs/plugins/card/pm-plugins/analytics/utils.js +139 -0
  24. package/dist/cjs/plugins/card/pm-plugins/doc.js +99 -22
  25. package/dist/cjs/plugins/card/pm-plugins/main.js +16 -10
  26. package/dist/cjs/plugins/card/pm-plugins/reducers.js +7 -0
  27. package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +3 -7
  28. package/dist/cjs/plugins/card/toolbar.js +18 -8
  29. package/dist/cjs/plugins/card/ui/EditLinkToolbar.js +12 -8
  30. package/dist/cjs/plugins/card/ui/EditorSmartCardEventsNext.js +202 -0
  31. package/dist/cjs/plugins/card/ui/LinkToolbarAppearance.js +12 -4
  32. package/dist/cjs/plugins/card/utils.js +4 -2
  33. package/dist/cjs/plugins/extension/context-panel.js +3 -2
  34. package/dist/cjs/plugins/extension/index.js +4 -1
  35. package/dist/cjs/plugins/help-dialog/ui/index.js +29 -8
  36. package/dist/cjs/plugins/hyperlink/Toolbar.js +12 -2
  37. package/dist/cjs/plugins/hyperlink/commands.js +9 -5
  38. package/dist/cjs/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
  39. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
  40. package/dist/cjs/plugins/index.js +0 -7
  41. package/dist/cjs/plugins/insert-block/index.js +5 -1
  42. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +25 -23
  43. package/dist/cjs/plugins/media/index.js +9 -5
  44. package/dist/cjs/plugins/media/pm-plugins/main.js +5 -4
  45. package/dist/cjs/plugins/media/utils/media-single.js +1 -4
  46. package/dist/cjs/plugins/panel/pm-plugins/keymaps.js +2 -1
  47. package/dist/cjs/plugins/paste/handlers.js +5 -5
  48. package/dist/cjs/plugins/paste/index.js +4 -2
  49. package/dist/cjs/plugins/paste/pm-plugins/main.js +6 -4
  50. package/dist/cjs/plugins/rule/commands.js +2 -2
  51. package/dist/cjs/plugins/rule/index.js +5 -4
  52. package/dist/cjs/plugins/rule/pm-plugins/input-rule.js +6 -8
  53. package/dist/cjs/plugins/rule/pm-plugins/keymap.js +2 -2
  54. package/dist/cjs/plugins/text-color/index.js +5 -2
  55. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +3 -4
  56. package/dist/cjs/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
  57. package/dist/cjs/ui/Appearance/Comment/Comment.js +2 -0
  58. package/dist/cjs/ui/Appearance/FullPage/FullPage.js +2 -4
  59. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +2 -0
  60. package/dist/cjs/ui/ColorPalette/index.js +6 -0
  61. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +15 -10
  62. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
  63. package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +248 -17
  64. package/dist/cjs/ui/ConfigPanel/FormContent.js +12 -6
  65. package/dist/cjs/ui/ConfigPanel/utils.js +2 -12
  66. package/dist/cjs/ui/ContentStyles/index.js +2 -5
  67. package/dist/cjs/ui/MediaAndEmbedsToolbar/index.js +16 -8
  68. package/dist/cjs/utils/document.js +5 -3
  69. package/dist/cjs/version-wrapper.js +1 -1
  70. package/dist/cjs/version.json +1 -1
  71. package/dist/es2019/actions/index.js +10 -4
  72. package/dist/es2019/analytics-api/attach-payload-into-transaction.js +2 -1
  73. package/dist/es2019/create-editor/ErrorBoundary.js +1 -13
  74. package/dist/es2019/create-editor/ReactEditorViewInternal.js +2 -2
  75. package/dist/es2019/editor-next/editor-internal.js +2 -1
  76. package/dist/es2019/editor-next/index.js +5 -1
  77. package/dist/es2019/editor.js +5 -2
  78. package/dist/es2019/keymaps/index.js +1 -1
  79. package/dist/es2019/labs/next/internal/hooks/use-editor/index.js +4 -6
  80. package/dist/es2019/labs/next/presets/default.js +1 -2
  81. package/dist/es2019/plugins/card/index.js +15 -5
  82. package/dist/es2019/plugins/card/pm-plugins/actions.js +4 -0
  83. package/dist/es2019/plugins/card/pm-plugins/analytics/create-analytics-queue.js +38 -0
  84. package/dist/es2019/plugins/card/pm-plugins/analytics/events-from-tr.js +316 -0
  85. package/dist/es2019/plugins/card/pm-plugins/analytics/index.js +2 -0
  86. package/dist/es2019/plugins/card/pm-plugins/analytics/types.js +1 -0
  87. package/dist/es2019/plugins/card/pm-plugins/analytics/utils.js +124 -0
  88. package/dist/es2019/plugins/card/pm-plugins/doc.js +94 -20
  89. package/dist/es2019/plugins/card/pm-plugins/main.js +17 -8
  90. package/dist/es2019/plugins/card/pm-plugins/reducers.js +8 -0
  91. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +3 -7
  92. package/dist/es2019/plugins/card/toolbar.js +16 -8
  93. package/dist/es2019/plugins/card/ui/EditLinkToolbar.js +13 -9
  94. package/dist/es2019/plugins/card/ui/EditorSmartCardEventsNext.js +180 -0
  95. package/dist/es2019/plugins/card/ui/LinkToolbarAppearance.js +11 -2
  96. package/dist/es2019/plugins/card/utils.js +6 -2
  97. package/dist/es2019/plugins/extension/context-panel.js +3 -2
  98. package/dist/es2019/plugins/extension/index.js +45 -41
  99. package/dist/es2019/plugins/help-dialog/ui/index.js +17 -1
  100. package/dist/es2019/plugins/hyperlink/Toolbar.js +13 -4
  101. package/dist/es2019/plugins/hyperlink/commands.js +9 -6
  102. package/dist/es2019/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
  103. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
  104. package/dist/es2019/plugins/index.js +0 -1
  105. package/dist/es2019/plugins/insert-block/index.js +96 -91
  106. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +3 -2
  107. package/dist/es2019/plugins/media/index.js +202 -198
  108. package/dist/es2019/plugins/media/pm-plugins/main.js +5 -4
  109. package/dist/es2019/plugins/media/utils/media-single.js +1 -5
  110. package/dist/es2019/plugins/panel/pm-plugins/keymaps.js +3 -2
  111. package/dist/es2019/plugins/paste/handlers.js +6 -6
  112. package/dist/es2019/plugins/paste/index.js +18 -14
  113. package/dist/es2019/plugins/paste/pm-plugins/main.js +7 -5
  114. package/dist/es2019/plugins/rule/commands.js +2 -2
  115. package/dist/es2019/plugins/rule/index.js +49 -46
  116. package/dist/es2019/plugins/rule/pm-plugins/input-rule.js +6 -7
  117. package/dist/es2019/plugins/rule/pm-plugins/keymap.js +2 -2
  118. package/dist/es2019/plugins/text-color/index.js +49 -44
  119. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +3 -3
  120. package/dist/es2019/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
  121. package/dist/es2019/ui/Appearance/Comment/Comment.js +2 -0
  122. package/dist/es2019/ui/Appearance/FullPage/FullPage.js +2 -4
  123. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +2 -0
  124. package/dist/es2019/ui/ColorPalette/index.js +2 -2
  125. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +8 -4
  126. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
  127. package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +238 -13
  128. package/dist/es2019/ui/ConfigPanel/FormContent.js +12 -6
  129. package/dist/es2019/ui/ConfigPanel/utils.js +1 -11
  130. package/dist/es2019/ui/ContentStyles/index.js +2 -5
  131. package/dist/es2019/ui/MediaAndEmbedsToolbar/index.js +12 -10
  132. package/dist/es2019/utils/document.js +5 -3
  133. package/dist/es2019/version-wrapper.js +1 -1
  134. package/dist/es2019/version.json +1 -1
  135. package/dist/esm/actions/index.js +17 -6
  136. package/dist/esm/analytics-api/attach-payload-into-transaction.js +2 -1
  137. package/dist/esm/create-editor/ErrorBoundary.js +1 -16
  138. package/dist/esm/create-editor/ReactEditorViewInternal.js +2 -2
  139. package/dist/esm/editor-next/editor-internal.js +2 -1
  140. package/dist/esm/editor-next/index.js +5 -1
  141. package/dist/esm/editor.js +9 -5
  142. package/dist/esm/keymaps/index.js +1 -1
  143. package/dist/esm/labs/next/internal/hooks/use-editor/index.js +4 -6
  144. package/dist/esm/labs/next/presets/default.js +1 -2
  145. package/dist/esm/plugins/card/index.js +13 -5
  146. package/dist/esm/plugins/card/pm-plugins/actions.js +8 -0
  147. package/dist/esm/plugins/card/pm-plugins/analytics/create-analytics-queue.js +41 -0
  148. package/dist/esm/plugins/card/pm-plugins/analytics/events-from-tr.js +328 -0
  149. package/dist/esm/plugins/card/pm-plugins/analytics/index.js +2 -0
  150. package/dist/esm/plugins/card/pm-plugins/analytics/types.js +1 -0
  151. package/dist/esm/plugins/card/pm-plugins/analytics/utils.js +124 -0
  152. package/dist/esm/plugins/card/pm-plugins/doc.js +98 -22
  153. package/dist/esm/plugins/card/pm-plugins/main.js +16 -10
  154. package/dist/esm/plugins/card/pm-plugins/reducers.js +7 -0
  155. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +3 -7
  156. package/dist/esm/plugins/card/toolbar.js +18 -8
  157. package/dist/esm/plugins/card/ui/EditLinkToolbar.js +13 -9
  158. package/dist/esm/plugins/card/ui/EditorSmartCardEventsNext.js +191 -0
  159. package/dist/esm/plugins/card/ui/LinkToolbarAppearance.js +12 -4
  160. package/dist/esm/plugins/card/utils.js +4 -2
  161. package/dist/esm/plugins/extension/context-panel.js +3 -2
  162. package/dist/esm/plugins/extension/index.js +4 -1
  163. package/dist/esm/plugins/help-dialog/ui/index.js +29 -8
  164. package/dist/esm/plugins/hyperlink/Toolbar.js +13 -3
  165. package/dist/esm/plugins/hyperlink/commands.js +9 -5
  166. package/dist/esm/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
  167. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
  168. package/dist/esm/plugins/index.js +0 -1
  169. package/dist/esm/plugins/insert-block/index.js +5 -1
  170. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +25 -23
  171. package/dist/esm/plugins/media/index.js +9 -5
  172. package/dist/esm/plugins/media/pm-plugins/main.js +5 -4
  173. package/dist/esm/plugins/media/utils/media-single.js +1 -4
  174. package/dist/esm/plugins/panel/pm-plugins/keymaps.js +3 -2
  175. package/dist/esm/plugins/paste/handlers.js +6 -6
  176. package/dist/esm/plugins/paste/index.js +4 -2
  177. package/dist/esm/plugins/paste/pm-plugins/main.js +7 -5
  178. package/dist/esm/plugins/rule/commands.js +2 -2
  179. package/dist/esm/plugins/rule/index.js +5 -4
  180. package/dist/esm/plugins/rule/pm-plugins/input-rule.js +6 -8
  181. package/dist/esm/plugins/rule/pm-plugins/keymap.js +2 -2
  182. package/dist/esm/plugins/text-color/index.js +5 -2
  183. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +3 -4
  184. package/dist/esm/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
  185. package/dist/esm/ui/Appearance/Comment/Comment.js +2 -0
  186. package/dist/esm/ui/Appearance/FullPage/FullPage.js +2 -4
  187. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +2 -0
  188. package/dist/esm/ui/ColorPalette/index.js +2 -2
  189. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +15 -10
  190. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
  191. package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +244 -19
  192. package/dist/esm/ui/ConfigPanel/FormContent.js +12 -6
  193. package/dist/esm/ui/ConfigPanel/utils.js +0 -10
  194. package/dist/esm/ui/ContentStyles/index.js +2 -5
  195. package/dist/esm/ui/MediaAndEmbedsToolbar/index.js +16 -8
  196. package/dist/esm/utils/document.js +5 -3
  197. package/dist/esm/version-wrapper.js +1 -1
  198. package/dist/esm/version.json +1 -1
  199. package/dist/types/actions/index.d.ts +3 -2
  200. package/dist/types/create-editor/ErrorBoundary.d.ts +2 -2
  201. package/dist/types/editor-next/index.d.ts +1 -0
  202. package/dist/types/editor.d.ts +1 -0
  203. package/dist/types/keymaps/index.d.ts +1 -1
  204. package/dist/types/labs/next/internal/hooks/use-editor/index.d.ts +2 -1
  205. package/dist/types/labs/next/presets/cxhtml.d.ts +1 -5
  206. package/dist/types/labs/next/presets/default.d.ts +2 -10
  207. package/dist/types/labs/next/presets/mobile.d.ts +1 -5
  208. package/dist/types/plugins/card/pm-plugins/actions.d.ts +2 -1
  209. package/dist/types/plugins/card/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
  210. package/dist/types/plugins/card/pm-plugins/analytics/events-from-tr.d.ts +17 -0
  211. package/dist/types/plugins/card/pm-plugins/analytics/index.d.ts +2 -0
  212. package/dist/types/plugins/card/pm-plugins/analytics/types.d.ts +10 -0
  213. package/dist/types/plugins/card/pm-plugins/analytics/utils.d.ts +26 -0
  214. package/dist/types/plugins/card/pm-plugins/doc.d.ts +8 -7
  215. package/dist/types/plugins/card/pm-plugins/main.d.ts +1 -1
  216. package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -2
  217. package/dist/types/plugins/card/pm-plugins/util/state.d.ts +3 -0
  218. package/dist/types/plugins/card/types.d.ts +81 -7
  219. package/dist/types/plugins/card/ui/EditLinkToolbar.d.ts +2 -1
  220. package/dist/types/plugins/card/ui/EditorSmartCardEventsNext.d.ts +18 -0
  221. package/dist/types/plugins/card/utils.d.ts +1 -1
  222. package/dist/types/plugins/extension/context-panel.d.ts +2 -1
  223. package/dist/types/plugins/extension/index.d.ts +2 -0
  224. package/dist/types/plugins/hyperlink/commands.d.ts +3 -2
  225. package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/index.d.ts +2 -1
  226. package/dist/types/plugins/index.d.ts +0 -1
  227. package/dist/types/plugins/insert-block/index.d.ts +2 -0
  228. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +2 -1
  229. package/dist/types/plugins/media/index.d.ts +2 -0
  230. package/dist/types/plugins/media/pm-plugins/main.d.ts +3 -2
  231. package/dist/types/plugins/media/utils/media-single.d.ts +1 -1
  232. package/dist/types/plugins/paste/index.d.ts +2 -0
  233. package/dist/types/plugins/paste/pm-plugins/main.d.ts +2 -1
  234. package/dist/types/plugins/rule/commands.d.ts +2 -1
  235. package/dist/types/plugins/rule/index.d.ts +5 -1
  236. package/dist/types/plugins/rule/pm-plugins/input-rule.d.ts +1 -1
  237. package/dist/types/plugins/rule/pm-plugins/keymap.d.ts +2 -1
  238. package/dist/types/plugins/text-color/index.d.ts +2 -0
  239. package/dist/types/plugins/text-color/ui/ToolbarTextColor/index.d.ts +2 -0
  240. package/dist/types/plugins/text-formatting/ui/Toolbar/toolbar-messages.d.ts +10 -0
  241. package/dist/types/types/editor-appearance-component.d.ts +1 -1
  242. package/dist/types/types/editor-props.d.ts +1 -0
  243. package/dist/types/ui/Appearance/FullPage/FullPage.d.ts +2 -0
  244. package/dist/types/ui/ColorPalette/index.d.ts +2 -2
  245. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +3 -1
  246. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +3 -1
  247. package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +12 -1
  248. package/dist/types/ui/ConfigPanel/FormContent.d.ts +2 -2
  249. package/dist/types/ui/ConfigPanel/types.d.ts +3 -0
  250. package/dist/types/ui/ConfigPanel/utils.d.ts +0 -1
  251. package/dist/types/ui/MediaAndEmbedsToolbar/index.d.ts +1 -1
  252. package/package.json +15 -14
  253. package/report.api.md +10 -0
  254. package/dist/cjs/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -12
  255. package/dist/cjs/plugins/feature-flags-context/get-feature-flags.js +0 -11
  256. package/dist/cjs/plugins/feature-flags-context/index.js +0 -50
  257. package/dist/cjs/plugins/feature-flags-context/plugin-key.js +0 -9
  258. package/dist/es2019/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -1
  259. package/dist/es2019/plugins/feature-flags-context/get-feature-flags.js +0 -2
  260. package/dist/es2019/plugins/feature-flags-context/index.js +0 -29
  261. package/dist/es2019/plugins/feature-flags-context/plugin-key.js +0 -2
  262. package/dist/esm/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -1
  263. package/dist/esm/plugins/feature-flags-context/get-feature-flags.js +0 -4
  264. package/dist/esm/plugins/feature-flags-context/index.js +0 -40
  265. package/dist/esm/plugins/feature-flags-context/plugin-key.js +0 -2
  266. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +0 -1
  267. package/dist/types/plugins/feature-flags-context/get-feature-flags.d.ts +0 -3
  268. package/dist/types/plugins/feature-flags-context/index.d.ts +0 -9
  269. package/dist/types/plugins/feature-flags-context/plugin-key.d.ts +0 -2
@@ -27,6 +27,7 @@ var _editorPropTypes = require("./utils/editorPropTypes");
27
27
  var _trackEditorActions = _interopRequireDefault(require("./utils/trackEditorActions"));
28
28
  var _onEditorCreated2 = _interopRequireDefault(require("./utils/onEditorCreated"));
29
29
  var _deprecationWarnings = _interopRequireDefault(require("./utils/deprecationWarnings"));
30
+ var _featureFlagsFromProps = require("../create-editor/feature-flags-from-props");
30
31
  var _plugins = require("../plugins");
31
32
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
32
33
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -52,6 +53,9 @@ var EditorNext = /*#__PURE__*/function (_React$Component) {
52
53
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleAnalyticsEvent", function (data) {
53
54
  return (0, _analytics.fireAnalyticsEvent)(_this.createAnalyticsEvent)(data);
54
55
  });
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getFeatureFlags", function () {
57
+ return (0, _featureFlagsFromProps.createFeatureFlagsFromProps)(_this.props);
58
+ });
55
59
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getExperienceStore", function () {
56
60
  return _this.experienceStore;
57
61
  });
@@ -89,7 +93,7 @@ var EditorNext = /*#__PURE__*/function (_React$Component) {
89
93
  }, {
90
94
  key: "registerEditorForActions",
91
95
  value: function registerEditorForActions(editorView, eventDispatcher, contentTransformer) {
92
- this.editorActions._privateRegisterEditor(editorView, eventDispatcher, contentTransformer);
96
+ this.editorActions._privateRegisterEditor(editorView, eventDispatcher, contentTransformer, this.getFeatureFlags);
93
97
  }
94
98
  }, {
95
99
  key: "unregisterEditorFromActions",
@@ -27,6 +27,7 @@ var _editorPropTypes = require("./editor-next/utils/editorPropTypes");
27
27
  var _trackEditorActions2 = _interopRequireDefault(require("./editor-next/utils/trackEditorActions"));
28
28
  var _onEditorCreated2 = _interopRequireDefault(require("./editor-next/utils/onEditorCreated"));
29
29
  var _deprecationWarnings = _interopRequireDefault(require("./editor-next/utils/deprecationWarnings"));
30
+ var _featureFlagsFromProps = require("./create-editor/feature-flags-from-props");
30
31
  var _analytics = require("@atlaskit/editor-common/analytics");
31
32
  var _prepareQuickInsertProvider = _interopRequireDefault(require("./utils/prepare-quick-insert-provider"));
32
33
  var _prepareExtensionProvider = _interopRequireDefault(require("./utils/prepare-extension-provider"));
@@ -66,6 +67,9 @@ var Editor = /*#__PURE__*/function (_React$Component) {
66
67
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleAnalyticsEvent", function (data) {
67
68
  return (0, _analytics.fireAnalyticsEvent)(_this.createAnalyticsEvent)(data);
68
69
  });
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getFeatureFlags", function () {
71
+ return (0, _featureFlagsFromProps.createFeatureFlagsFromProps)(_this.props);
72
+ });
69
73
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getExperienceStore", function () {
70
74
  return _this.experienceStore;
71
75
  });
@@ -262,18 +266,18 @@ var Editor = /*#__PURE__*/function (_React$Component) {
262
266
  * and need to find a workaround.
263
267
  */
264
268
  function registerEditorForActions(editorView, eventDispatcher, contentTransformer) {
265
- this.editorActions._privateRegisterEditor(editorView, eventDispatcher, contentTransformer);
269
+ this.editorActions._privateRegisterEditor(editorView, eventDispatcher, contentTransformer, this.getFeatureFlags);
266
270
  }
267
-
271
+ }, {
272
+ key: "unregisterEditorFromActions",
273
+ value:
268
274
  /**
269
275
  * @private
270
276
  * @deprecated - Do not override this at all, this is an antipattern.
271
277
  * Please reach out to the Editor team if you were previously using this
272
278
  * and need to find a workaround.
273
279
  */
274
- }, {
275
- key: "unregisterEditorFromActions",
276
- value: function unregisterEditorFromActions() {
280
+ function unregisterEditorFromActions() {
277
281
  this.editorActions._privateUnregisterEditor();
278
282
  }
279
283
  }, {
@@ -285,6 +285,18 @@ Object.defineProperty(exports, "moveUp", {
285
285
  return _keymaps.moveUp;
286
286
  }
287
287
  });
288
+ Object.defineProperty(exports, "navToEditorToolbar", {
289
+ enumerable: true,
290
+ get: function get() {
291
+ return _keymaps.navToEditorToolbar;
292
+ }
293
+ });
294
+ Object.defineProperty(exports, "navToFloatingToolbar", {
295
+ enumerable: true,
296
+ get: function get() {
297
+ return _keymaps.navToFloatingToolbar;
298
+ }
299
+ });
288
300
  Object.defineProperty(exports, "nextCell", {
289
301
  enumerable: true,
290
302
  get: function get() {
@@ -13,8 +13,7 @@ var _utils = require("@atlaskit/editor-common/utils");
13
13
  var _measureEnum = _interopRequireDefault(require("../../../../../utils/performance/measure-enum"));
14
14
  var _utils2 = require("../../../../../utils");
15
15
  var _analytics = require("../../../../../plugins/analytics");
16
- var _getEnabledFeatureFlagKeys = require("../../../../../plugins/feature-flags-context/get-enabled-feature-flag-keys");
17
- var _featureFlagsContext = require("../../../../../plugins/feature-flags-context/");
16
+ var _normalizeFeatureFlags = require("@atlaskit/editor-common/normalize-feature-flags");
18
17
  var _useAnalytics = require("../use-analytics");
19
18
  var _createDispatchTransaction = require("./create-dispatch-transaction");
20
19
  var _createEditor = require("./create-editor");
@@ -28,7 +27,7 @@ function useEditor(config) {
28
27
  editorSharedConfig = _useCreateEditor2[0],
29
28
  mountEditor = _useCreateEditor2[1];
30
29
  useApplyEditorViewProps(editorSharedConfig, config.disabled);
31
- useHandleEditorLifecycle(editorSharedConfig);
30
+ useHandleEditorLifecycle(editorSharedConfig, config.featureFlags);
32
31
  (0, _useAnalytics.useAnalyticsHandler)(editorSharedConfig);
33
32
  return [editorSharedConfig, mountEditor];
34
33
  }
@@ -127,7 +126,7 @@ function useApplyEditorViewProps(editorSharedConfig, disabled) {
127
126
  /**
128
127
  * Handles editor component unmount
129
128
  */
130
- function useHandleEditorLifecycle(editorSharedConfig) {
129
+ function useHandleEditorLifecycle(editorSharedConfig, featureFlags) {
131
130
  _react.default.useEffect(function () {
132
131
  //#region Did mount
133
132
  if (editorSharedConfig) {
@@ -140,8 +139,7 @@ function useHandleEditorLifecycle(editorSharedConfig) {
140
139
  if (onMount) {
141
140
  onMount(editorActions);
142
141
  }
143
- var featureFlags = (0, _featureFlagsContext.getFeatureFlags)(editorSharedConfig.editorView.state);
144
- var featureFlagsEnabled = featureFlags ? (0, _getEnabledFeatureFlagKeys.getEnabledFeatureFlagKeys)(featureFlags) : [];
142
+ var featureFlagsEnabled = featureFlags ? (0, _normalizeFeatureFlags.getEnabledFeatureFlagKeys)(featureFlags) : [];
145
143
 
146
144
  // Fire editor started event
147
145
  dispatch(_consts.analyticsEventKey, {
@@ -191,5 +189,5 @@ function useHandleEditorLifecycle(editorSharedConfig) {
191
189
  editorView.destroy();
192
190
  }
193
191
  };
194
- }, [editorSharedConfig]);
192
+ }, [editorSharedConfig, featureFlags]);
195
193
  }
@@ -18,7 +18,6 @@ var _editorDisabled = _interopRequireDefault(require("../../../plugins/editor-di
18
18
  var _typeAhead = _interopRequireDefault(require("../../../plugins/type-ahead"));
19
19
  var _submitEditor = _interopRequireDefault(require("../../../plugins/submit-editor"));
20
20
  var _fakeTextCursor = _interopRequireDefault(require("../../../plugins/fake-text-cursor"));
21
- var _featureFlagsContext = _interopRequireDefault(require("../../../plugins/feature-flags-context"));
22
21
  var _editorPluginFeatureFlags = _interopRequireDefault(require("@atlaskit/editor-plugin-feature-flags"));
23
22
  var _floatingToolbar = _interopRequireDefault(require("../../../plugins/floating-toolbar"));
24
23
  var _clipboard = _interopRequireDefault(require("../../../plugins/clipboard"));
@@ -52,7 +51,7 @@ function createDefaultPreset(options) {
52
51
  return builder;
53
52
  }).add([_hyperlink.default, options.hyperlinkOptions]).add([_textFormatting.default, options.textFormatting]).add(_width.default).add([_quickInsert.default, options.quickInsert]).add([_typeAhead.default, options.typeAhead || {
54
53
  createAnalyticsEvent: options.createAnalyticsEvent
55
- }]).add(_unsupportedContent.default).add(_editorDisabled.default).add([_submitEditor.default, options.submitEditor]).add(_fakeTextCursor.default).add(_floatingToolbar.default).add([_featureFlagsContext.default, options.featureFlags || {}]).add([_selection.default, options.selection]).add([_codeBlock.default, options.codeBlock || {
54
+ }]).add(_unsupportedContent.default).add(_editorDisabled.default).add([_submitEditor.default, options.submitEditor]).add(_fakeTextCursor.default).add(_floatingToolbar.default).add([_selection.default, options.selection]).add([_codeBlock.default, options.codeBlock || {
56
55
  appearance: 'full-page'
57
56
  }]);
58
57
  return preset;
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _adfSchema = require("@atlaskit/adf-schema");
11
12
  var _main = require("./pm-plugins/main");
12
13
  var _toolbar = require("./toolbar");
13
14
  var _EditorSmartCardEvents = require("./ui/EditorSmartCardEvents");
14
15
  var _keymap = require("./pm-plugins/keymap");
16
+ var _EditorSmartCardEventsNext = require("./ui/EditorSmartCardEventsNext");
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
20
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
21
  var cardPlugin = function cardPlugin(options, api) {
@@ -36,16 +40,20 @@ var cardPlugin = function cardPlugin(options, api) {
36
40
  return nodes;
37
41
  },
38
42
  pmPlugins: function pmPlugins() {
39
- var _options$allowBlockCa, _options$allowResizin, _options$useAlternati;
43
+ var _options$allowBlockCa, _options$allowResizin, _options$useAlternati, _options$allowWrappin, _options$allowAlignme;
40
44
  var allowBlockCards = (_options$allowBlockCa = options.allowBlockCards) !== null && _options$allowBlockCa !== void 0 ? _options$allowBlockCa : true;
41
45
  var allowResizing = (_options$allowResizin = options.allowResizing) !== null && _options$allowResizin !== void 0 ? _options$allowResizin : true;
42
46
  var useAlternativePreloader = (_options$useAlternati = options.useAlternativePreloader) !== null && _options$useAlternati !== void 0 ? _options$useAlternati : true;
47
+ var allowWrapping = (_options$allowWrappin = options.allowWrapping) !== null && _options$allowWrappin !== void 0 ? _options$allowWrappin : true;
48
+ var allowAlignment = (_options$allowAlignme = options.allowAlignment) !== null && _options$allowAlignme !== void 0 ? _options$allowAlignme : true;
43
49
  var plugins = [{
44
50
  name: 'card',
45
51
  plugin: (0, _main.createPlugin)(_objectSpread(_objectSpread({}, options), {}, {
46
52
  allowBlockCards: allowBlockCards,
47
53
  allowResizing: allowResizing,
48
- useAlternativePreloader: useAlternativePreloader
54
+ useAlternativePreloader: useAlternativePreloader,
55
+ allowWrapping: allowWrapping,
56
+ allowAlignment: allowAlignment
49
57
  }))
50
58
  }];
51
59
  plugins.push({
@@ -59,9 +67,12 @@ var cardPlugin = function cardPlugin(options, api) {
59
67
  },
60
68
  contentComponent: function contentComponent(_ref2) {
61
69
  var editorView = _ref2.editorView;
62
- return /*#__PURE__*/_react.default.createElement(_EditorSmartCardEvents.EditorSmartCardEvents, {
70
+ var lpAnalyticsEventsNext = featureFlags.lpAnalyticsEventsNext;
71
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_EditorSmartCardEvents.EditorSmartCardEvents, {
63
72
  editorView: editorView
64
- });
73
+ }), lpAnalyticsEventsNext && /*#__PURE__*/_react.default.createElement(_EditorSmartCardEventsNext.EditorSmartCardEventsNext, {
74
+ editorView: editorView
75
+ }));
65
76
  },
66
77
  pluginsOptions: {
67
78
  floatingToolbar: (0, _toolbar.floatingToolbar)(options, featureFlags, options.platform, options.linkPicker)
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.showLinkToolbar = exports.setProvider = exports.resolveCard = exports.registerSmartCardEvents = exports.registerCard = exports.queueCards = exports.hideLinkToolbar = exports.cardAction = void 0;
6
+ exports.showLinkToolbar = exports.setProvider = exports.resolveCard = exports.registerSmartCardEventsNext = exports.registerSmartCardEvents = exports.registerCard = exports.queueCards = exports.hideLinkToolbar = exports.cardAction = void 0;
7
7
  var _pluginKey = require("./plugin-key");
8
8
  var cardAction = function cardAction(tr, action) {
9
9
  return tr.setMeta(_pluginKey.pluginKey, action);
@@ -45,6 +45,15 @@ var registerSmartCardEvents = function registerSmartCardEvents(smartLinkEvents)
45
45
  };
46
46
  };
47
47
  exports.registerSmartCardEvents = registerSmartCardEvents;
48
+ var registerSmartCardEventsNext = function registerSmartCardEventsNext(smartLinkEvents) {
49
+ return function (tr) {
50
+ return cardAction(tr, {
51
+ type: 'REGISTER_EVENTS_NEXT',
52
+ smartLinkEvents: smartLinkEvents
53
+ });
54
+ };
55
+ };
56
+ exports.registerSmartCardEventsNext = registerSmartCardEventsNext;
48
57
  var setProvider = function setProvider(cardProvider) {
49
58
  return function (tr) {
50
59
  return cardAction(tr, {
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createAnalyticsQueue = void 0;
7
+ /**
8
+ * Simple mechanism to defer analytics related callbacks
9
+ */
10
+ var createAnalyticsQueue = function createAnalyticsQueue() {
11
+ var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
12
+ var queue = [];
13
+ var callbacksRef = {
14
+ current: null
15
+ };
16
+ var setCallbacks = function setCallbacks(callbacks) {
17
+ callbacksRef.current = callbacks;
18
+ };
19
+ var push = function push() {
20
+ var callbacks = callbacksRef.current;
21
+ if (!enabled || !callbacks) {
22
+ return;
23
+ }
24
+ queue.push.apply(queue, arguments);
25
+ };
26
+ var flush = function flush() {
27
+ var callbacks = callbacksRef.current;
28
+ if (!enabled || !callbacks) {
29
+ return;
30
+ }
31
+ while (queue.length) {
32
+ var event = queue.pop();
33
+ if (event) {
34
+ callbacks[event.type](event.data);
35
+ }
36
+ }
37
+ };
38
+ var getSize = function getSize() {
39
+ return queue.length;
40
+ };
41
+ return {
42
+ push: push,
43
+ flush: flush,
44
+ setCallbacks: setCallbacks,
45
+ getSize: getSize
46
+ };
47
+ };
48
+ exports.createAnalyticsQueue = createAnalyticsQueue;
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.eventsFromTransaction = eventsFromTransaction;
8
+ exports.findChangedLinks = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _prosemirrorTransform = require("prosemirror-transform");
13
+ var _analytics = require("@atlaskit/editor-common/analytics");
14
+ var _utils = require("@atlaskit/editor-common/utils");
15
+ var _card = require("@atlaskit/editor-common/card");
16
+ var _steps = require("@atlaskit/adf-schema/steps");
17
+ var _pmHistoryTypes = require("../../../history/pm-history-types");
18
+ var _state = require("../util/state");
19
+ var _pluginKey = require("../plugin-key");
20
+ var _utils2 = require("./utils");
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+ var findLinksInNodeRange = function findLinksInNodeRange(node, schema, from, to) {
24
+ var links = [];
25
+ node.nodesBetween(from, to, function (node, pos) {
26
+ if ((0, _utils2.isLink)(schema, node)) {
27
+ var entireLinkInRange = pos >= from && pos + node.nodeSize <= to;
28
+ if (entireLinkInRange) {
29
+ var link = (0, _utils2.linkObjectFromNode)(schema, node, pos);
30
+ if (link) {
31
+ links.push(link);
32
+ }
33
+ }
34
+ }
35
+ });
36
+ return links;
37
+ };
38
+ var findChangedLinks = function findChangedLinks(tr, state) {
39
+ var schema = tr.doc.type.schema;
40
+ var removed = [];
41
+ var inserted = [];
42
+ var updated = [];
43
+ var queuedForUpgrade = isTransactionQueuedForUpgrade(tr);
44
+ var isResolveReplace = isTransactionResolveReplace(tr);
45
+
46
+ // History
47
+ var historyMeta = tr.getMeta(_pmHistoryTypes.pmHistoryPluginKey);
48
+ var isUndo = isHistoryMeta(historyMeta) && historyMeta.redo === false;
49
+ var isRedo = isHistoryMeta(historyMeta) && historyMeta.redo === true;
50
+ var isUpdate = isUpdateTr(tr, isUndo || isRedo);
51
+ var _loop = function _loop(i) {
52
+ var step = tr.steps[i];
53
+ var stepMap = step.getMap();
54
+ var removedInStep = [];
55
+ var insertedInStep = [];
56
+
57
+ /**
58
+ * AddMarkStep and RemoveMarkSteps don't produce stepMap ranges
59
+ * because there are no "changed tokens" only marks added/removed
60
+ * So have to check these manually
61
+ */
62
+ if (step instanceof _prosemirrorTransform.AddMarkStep) {
63
+ var addMarkStep = step;
64
+ if ((0, _utils.isLinkMark)(addMarkStep.mark, schema)) {
65
+ /**
66
+ * For url text pasted on plain text
67
+ */
68
+ insertedInStep.push({
69
+ type: 'mark',
70
+ pos: addMarkStep.from,
71
+ mark: addMarkStep.mark
72
+ });
73
+ }
74
+ }
75
+ if (step instanceof _prosemirrorTransform.RemoveMarkStep) {
76
+ var removeMarkStep = step;
77
+ if ((0, _utils.isLinkMark)(removeMarkStep.mark, schema)) {
78
+ /**
79
+ * For url text pasted on plain text
80
+ */
81
+ removedInStep.push({
82
+ type: 'mark',
83
+ pos: removeMarkStep.from,
84
+ mark: removeMarkStep.mark
85
+ });
86
+ }
87
+ }
88
+ stepMap.forEach(function (oldStart, oldEnd, newStart, newEnd) {
89
+ var _tr$docs;
90
+ var before = tr.docs[i];
91
+ var after = (_tr$docs = tr.docs[i + 1]) !== null && _tr$docs !== void 0 ? _tr$docs : tr.doc;
92
+ var removedInRange = [];
93
+ var insertedInRange = [];
94
+
95
+ // Removed
96
+ removedInRange.push.apply(removedInRange, (0, _toConsumableArray2.default)(findLinksInNodeRange(before, schema, oldStart, oldEnd)));
97
+ // Inserted
98
+ insertedInRange.push.apply(insertedInRange, (0, _toConsumableArray2.default)(findLinksInNodeRange(after, schema, newStart, newEnd)));
99
+ removedInStep.push.apply(removedInStep, removedInRange);
100
+ insertedInStep.push.apply(insertedInStep, insertedInRange);
101
+ });
102
+ var omitQueuedLinks = function omitQueuedLinks(links) {
103
+ if (!queuedForUpgrade) {
104
+ return links;
105
+ }
106
+ /**
107
+ * Skip/filter out links that have been queued, they will be tracked later
108
+ */
109
+ var queuedPositions = getQueuedPositions(tr);
110
+ return links.filter(function (link) {
111
+ return !queuedPositions.includes(link.pos);
112
+ });
113
+ };
114
+
115
+ /**
116
+ * Skip "deletions" when the transaction is relating to
117
+ * replacing links queued for upgrade to cards,
118
+ * because the "deleted" link has not actually been
119
+ * tracked as "created" yet
120
+ */
121
+ if (!isResolveReplace) {
122
+ removed.push.apply(removed, removedInStep);
123
+ }
124
+ inserted.push.apply(inserted, (0, _toConsumableArray2.default)(omitQueuedLinks(insertedInStep)));
125
+ };
126
+ for (var i = 0; i < tr.steps.length; i++) {
127
+ _loop(i);
128
+ }
129
+
130
+ /**
131
+ * If there are no links changed but the transaction is a "resolve" action
132
+ * Then this means we have resolved a link but it has failed to upgrade
133
+ * We should track all resolved links as now being created
134
+ */
135
+ if (inserted.length === 0 && isResolveReplace) {
136
+ var positions = getResolvePositions(tr, state);
137
+ inserted.push.apply(inserted, (0, _toConsumableArray2.default)((0, _utils2.findLinksAtPositions)(tr, positions)));
138
+ }
139
+ if (!isUpdate) {
140
+ return {
141
+ removed: removed,
142
+ inserted: inserted,
143
+ updated: updated
144
+ };
145
+ }
146
+ for (var _i = 0; _i < inserted.length; _i++) {
147
+ if (isResolveReplace) {
148
+ var newLink = inserted[_i];
149
+
150
+ // what is the 2nd argument 'assoc = -1' doing here exactly?
151
+ var mappedPos = tr.mapping.map(newLink.pos, -1);
152
+ var previousDisplay = getResolveLinkPrevDisplay(state, mappedPos);
153
+ updated.push({
154
+ inserted: inserted[_i],
155
+ previous: {
156
+ display: previousDisplay
157
+ }
158
+ });
159
+ continue;
160
+ }
161
+ if (inserted.length === removed.length) {
162
+ updated.push({
163
+ removed: removed[_i],
164
+ inserted: inserted[_i]
165
+ });
166
+ }
167
+ }
168
+ return {
169
+ inserted: [],
170
+ removed: [],
171
+ updated: updated
172
+ };
173
+ };
174
+
175
+ /**
176
+ * List of actions to be considered link "updates"
177
+ */
178
+ exports.findChangedLinks = findChangedLinks;
179
+ var UPDATE_ACTIONS = [_analytics.ACTION.CHANGED_TYPE, _analytics.ACTION.UPDATED];
180
+
181
+ /**
182
+ * Returns true if the transaction has LinkMetaSteps that indicate the transaction is
183
+ * intended to be perceived as an update to links, rather than insertion+deletion
184
+ */
185
+ var isUpdateTr = function isUpdateTr(tr, isUndoOrRedo) {
186
+ return !!tr.steps.find(function (step) {
187
+ if (!(step instanceof _steps.LinkMetaStep)) {
188
+ return false;
189
+ }
190
+ var _step$getMetadata = step.getMetadata(),
191
+ action = _step$getMetadata.action,
192
+ cardAction = _step$getMetadata.cardAction;
193
+
194
+ /**
195
+ * Undo of a resolve step should be considered an update
196
+ * because the user is choosing to update the url back to the un-upgraded display
197
+ */
198
+ if (cardAction === 'RESOLVE' && isUndoOrRedo) {
199
+ return true;
200
+ }
201
+ if (!action) {
202
+ return false;
203
+ }
204
+ return UPDATE_ACTIONS.includes(action);
205
+ });
206
+ };
207
+ var hasType = function hasType(pluginMeta) {
208
+ return (0, _typeof2.default)(pluginMeta) === 'object' && pluginMeta !== null && 'type' in pluginMeta;
209
+ };
210
+ var isTransactionQueuedForUpgrade = function isTransactionQueuedForUpgrade(tr) {
211
+ var pluginMeta = tr.getMeta(_pluginKey.pluginKey);
212
+ return hasType(pluginMeta) && pluginMeta.type === 'QUEUE';
213
+ };
214
+ var isTransactionResolveReplace = function isTransactionResolveReplace(tr) {
215
+ var pluginMeta = tr.getMeta(_pluginKey.pluginKey);
216
+ return hasType(pluginMeta) && pluginMeta.type === 'RESOLVE';
217
+ };
218
+ var isHistoryMeta = function isHistoryMeta(meta) {
219
+ return (0, _typeof2.default)(meta) === 'object' && meta !== null && 'redo' in meta;
220
+ };
221
+ var getQueuedPositions = function getQueuedPositions(tr) {
222
+ var pluginMeta = tr.getMeta(_pluginKey.pluginKey);
223
+ if (!isTransactionQueuedForUpgrade(tr)) {
224
+ return [];
225
+ }
226
+ return pluginMeta.requests.map(function (_ref) {
227
+ var pos = _ref.pos;
228
+ return pos;
229
+ });
230
+ };
231
+ var getResolvePositions = function getResolvePositions(tr, state) {
232
+ var cardState = (0, _state.getPluginState)(state);
233
+ if (!cardState) {
234
+ return [];
235
+ }
236
+ var pluginMeta = tr.getMeta(_pluginKey.pluginKey);
237
+ if (!isTransactionResolveReplace(tr)) {
238
+ return [];
239
+ }
240
+ return cardState.requests.filter(function (request) {
241
+ return request.url === pluginMeta.url;
242
+ }).map(function (request) {
243
+ return request.pos;
244
+ });
245
+ };
246
+ var getResolveLinkPrevDisplay = function getResolveLinkPrevDisplay(state, pos) {
247
+ var _cardState$requests$f;
248
+ var cardState = (0, _state.getPluginState)(state);
249
+ if (!cardState) {
250
+ return undefined;
251
+ }
252
+ return (_cardState$requests$f = cardState.requests.find(function (request) {
253
+ return request.pos === pos;
254
+ })) === null || _cardState$requests$f === void 0 ? void 0 : _cardState$requests$f.previousAppearance;
255
+ };
256
+ function eventsFromTransaction(tr, state) {
257
+ var events = [];
258
+ try {
259
+ /**
260
+ * Skip transactions sent by collab (identified by 'isRemote' key)
261
+ * Skip entire document replace steps
262
+ * We are only concerned with transactions performed on the document directly by the user
263
+ */
264
+ var isRemote = tr.getMeta('isRemote');
265
+ var isReplaceDocument = tr.getMeta('replaceDocument');
266
+ if (isRemote || isReplaceDocument) {
267
+ return events;
268
+ }
269
+ var historyMeta = tr.getMeta(_pmHistoryTypes.pmHistoryPluginKey);
270
+ var isUndo = isHistoryMeta(historyMeta) && historyMeta.redo === false;
271
+ var isRedo = isHistoryMeta(historyMeta) && historyMeta.redo === true;
272
+
273
+ /**
274
+ * Retrieve metadata from the LinkMetaStep(s) in the transaction
275
+ */
276
+ var _getLinkMetadataFromT = (0, _card.getLinkMetadataFromTransaction)(tr),
277
+ action = _getLinkMetadataFromT.action,
278
+ inputMethod = _getLinkMetadataFromT.inputMethod,
279
+ sourceEvent = _getLinkMetadataFromT.sourceEvent;
280
+ var contextualData = {
281
+ action: action,
282
+ inputMethod: inputMethod,
283
+ sourceEvent: sourceEvent,
284
+ isUndo: isUndo,
285
+ isRedo: isRedo
286
+ };
287
+ var _findChangedLinks = findChangedLinks(tr, state),
288
+ removed = _findChangedLinks.removed,
289
+ inserted = _findChangedLinks.inserted,
290
+ updated = _findChangedLinks.updated;
291
+ var MAX_LINK_EVENTS = 10;
292
+ if ([removed, inserted, updated].some(function (arr) {
293
+ return arr.length > MAX_LINK_EVENTS;
294
+ })) {
295
+ return [];
296
+ }
297
+ for (var i = 0; i < updated.length; i++) {
298
+ var _update$previous$disp;
299
+ var update = updated[i];
300
+ var link = update.inserted;
301
+ var url = (0, _utils2.getLinkUrl)(link);
302
+ var display = (0, _utils2.appearanceForLink)(link);
303
+ var previousDisplay = 'removed' in update ? (0, _utils2.appearanceForLink)(update.removed) : (_update$previous$disp = update.previous.display) !== null && _update$previous$disp !== void 0 ? _update$previous$disp : 'unknown';
304
+ if (url) {
305
+ events.push({
306
+ type: 'updated',
307
+ data: _objectSpread(_objectSpread({}, contextualData), {}, {
308
+ url: url,
309
+ display: display,
310
+ previousDisplay: previousDisplay
311
+ })
312
+ });
313
+ }
314
+ }
315
+ var pushEvents = function pushEvents(links, type) {
316
+ for (var _i2 = 0; _i2 < links.length; _i2++) {
317
+ var _link = links[_i2];
318
+ var _url = (0, _utils2.getLinkUrl)(_link);
319
+ var _display = (0, _utils2.appearanceForLink)(_link);
320
+ if (_url) {
321
+ events.push({
322
+ type: type,
323
+ data: _objectSpread(_objectSpread({}, contextualData), {}, {
324
+ url: _url,
325
+ display: _display
326
+ })
327
+ });
328
+ }
329
+ }
330
+ };
331
+ pushEvents(removed, 'deleted');
332
+ pushEvents(inserted, 'created');
333
+ return events;
334
+ } catch (err) {
335
+ return events;
336
+ }
337
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "createAnalyticsQueue", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _createAnalyticsQueue.createAnalyticsQueue;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "eventsFromTransaction", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _eventsFromTr.eventsFromTransaction;
16
+ }
17
+ });
18
+ var _createAnalyticsQueue = require("./create-analytics-queue");
19
+ var _eventsFromTr = require("./events-from-tr");
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });