@atlaskit/editor-plugin-card 0.1.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 (200) hide show
  1. package/.eslintrc.js +15 -0
  2. package/CHANGELOG.md +1 -0
  3. package/LICENSE.md +13 -0
  4. package/README.md +7 -0
  5. package/dist/cjs/index.js +12 -0
  6. package/dist/cjs/messages.js +20 -0
  7. package/dist/cjs/nodeviews/blockCard.js +164 -0
  8. package/dist/cjs/nodeviews/datasource.js +173 -0
  9. package/dist/cjs/nodeviews/embedCard.js +398 -0
  10. package/dist/cjs/nodeviews/genericCard.js +118 -0
  11. package/dist/cjs/nodeviews/inlineCard.js +132 -0
  12. package/dist/cjs/plugin.js +138 -0
  13. package/dist/cjs/pm-plugins/actions.js +122 -0
  14. package/dist/cjs/pm-plugins/analytics/create-analytics-queue.js +48 -0
  15. package/dist/cjs/pm-plugins/analytics/events-from-tr.js +359 -0
  16. package/dist/cjs/pm-plugins/analytics/index.js +19 -0
  17. package/dist/cjs/pm-plugins/analytics/types.js +5 -0
  18. package/dist/cjs/pm-plugins/analytics/utils.js +178 -0
  19. package/dist/cjs/pm-plugins/doc.js +479 -0
  20. package/dist/cjs/pm-plugins/keymap.js +64 -0
  21. package/dist/cjs/pm-plugins/main.js +212 -0
  22. package/dist/cjs/pm-plugins/mountHyperlink.js +47 -0
  23. package/dist/cjs/pm-plugins/plugin-key.js +9 -0
  24. package/dist/cjs/pm-plugins/reducers.js +111 -0
  25. package/dist/cjs/pm-plugins/shouldReplaceLink.js +35 -0
  26. package/dist/cjs/pm-plugins/util/resolve.js +59 -0
  27. package/dist/cjs/pm-plugins/util/state.js +49 -0
  28. package/dist/cjs/toolbar.js +364 -0
  29. package/dist/cjs/types.js +5 -0
  30. package/dist/cjs/ui/DatasourceModal/ModalWithState.js +25 -0
  31. package/dist/cjs/ui/DatasourceModal/index.js +60 -0
  32. package/dist/cjs/ui/EditLinkToolbar.js +258 -0
  33. package/dist/cjs/ui/EditorSmartCardEvents.js +21 -0
  34. package/dist/cjs/ui/EditorSmartCardEventsNext.js +215 -0
  35. package/dist/cjs/ui/HyperlinkToolbarAppearance.js +174 -0
  36. package/dist/cjs/ui/LayoutButton/index.js +121 -0
  37. package/dist/cjs/ui/LayoutButton/types.js +5 -0
  38. package/dist/cjs/ui/LayoutButton/utils.js +19 -0
  39. package/dist/cjs/ui/LinkToolbarAppearance.js +152 -0
  40. package/dist/cjs/ui/ResizableEmbedCard.js +364 -0
  41. package/dist/cjs/ui/SmallerEditIcon.js +22 -0
  42. package/dist/cjs/utils.js +60 -0
  43. package/dist/cjs/version.json +5 -0
  44. package/dist/es2019/index.js +1 -0
  45. package/dist/es2019/messages.js +13 -0
  46. package/dist/es2019/nodeviews/blockCard.js +131 -0
  47. package/dist/es2019/nodeviews/datasource.js +137 -0
  48. package/dist/es2019/nodeviews/embedCard.js +370 -0
  49. package/dist/es2019/nodeviews/genericCard.js +92 -0
  50. package/dist/es2019/nodeviews/inlineCard.js +113 -0
  51. package/dist/es2019/plugin.js +129 -0
  52. package/dist/es2019/pm-plugins/actions.js +57 -0
  53. package/dist/es2019/pm-plugins/analytics/create-analytics-queue.js +38 -0
  54. package/dist/es2019/pm-plugins/analytics/events-from-tr.js +339 -0
  55. package/dist/es2019/pm-plugins/analytics/index.js +2 -0
  56. package/dist/es2019/pm-plugins/analytics/types.js +1 -0
  57. package/dist/es2019/pm-plugins/analytics/utils.js +160 -0
  58. package/dist/es2019/pm-plugins/doc.js +451 -0
  59. package/dist/es2019/pm-plugins/keymap.js +59 -0
  60. package/dist/es2019/pm-plugins/main.js +208 -0
  61. package/dist/es2019/pm-plugins/mountHyperlink.js +37 -0
  62. package/dist/es2019/pm-plugins/plugin-key.js +2 -0
  63. package/dist/es2019/pm-plugins/reducers.js +110 -0
  64. package/dist/es2019/pm-plugins/shouldReplaceLink.js +25 -0
  65. package/dist/es2019/pm-plugins/util/resolve.js +50 -0
  66. package/dist/es2019/pm-plugins/util/state.js +26 -0
  67. package/dist/es2019/toolbar.js +359 -0
  68. package/dist/es2019/types.js +1 -0
  69. package/dist/es2019/ui/DatasourceModal/ModalWithState.js +19 -0
  70. package/dist/es2019/ui/DatasourceModal/index.js +48 -0
  71. package/dist/es2019/ui/EditLinkToolbar.js +226 -0
  72. package/dist/es2019/ui/EditorSmartCardEvents.js +15 -0
  73. package/dist/es2019/ui/EditorSmartCardEventsNext.js +199 -0
  74. package/dist/es2019/ui/HyperlinkToolbarAppearance.js +86 -0
  75. package/dist/es2019/ui/LayoutButton/index.js +114 -0
  76. package/dist/es2019/ui/LayoutButton/types.js +1 -0
  77. package/dist/es2019/ui/LayoutButton/utils.js +15 -0
  78. package/dist/es2019/ui/LinkToolbarAppearance.js +118 -0
  79. package/dist/es2019/ui/ResizableEmbedCard.js +335 -0
  80. package/dist/es2019/ui/SmallerEditIcon.js +14 -0
  81. package/dist/es2019/utils.js +46 -0
  82. package/dist/es2019/version.json +5 -0
  83. package/dist/esm/index.js +1 -0
  84. package/dist/esm/messages.js +13 -0
  85. package/dist/esm/nodeviews/blockCard.js +156 -0
  86. package/dist/esm/nodeviews/datasource.js +165 -0
  87. package/dist/esm/nodeviews/embedCard.js +389 -0
  88. package/dist/esm/nodeviews/genericCard.js +111 -0
  89. package/dist/esm/nodeviews/inlineCard.js +124 -0
  90. package/dist/esm/plugin.js +130 -0
  91. package/dist/esm/pm-plugins/actions.js +102 -0
  92. package/dist/esm/pm-plugins/analytics/create-analytics-queue.js +41 -0
  93. package/dist/esm/pm-plugins/analytics/events-from-tr.js +350 -0
  94. package/dist/esm/pm-plugins/analytics/index.js +2 -0
  95. package/dist/esm/pm-plugins/analytics/types.js +1 -0
  96. package/dist/esm/pm-plugins/analytics/utils.js +160 -0
  97. package/dist/esm/pm-plugins/doc.js +460 -0
  98. package/dist/esm/pm-plugins/keymap.js +58 -0
  99. package/dist/esm/pm-plugins/main.js +199 -0
  100. package/dist/esm/pm-plugins/mountHyperlink.js +39 -0
  101. package/dist/esm/pm-plugins/plugin-key.js +2 -0
  102. package/dist/esm/pm-plugins/reducers.js +103 -0
  103. package/dist/esm/pm-plugins/shouldReplaceLink.js +29 -0
  104. package/dist/esm/pm-plugins/util/resolve.js +52 -0
  105. package/dist/esm/pm-plugins/util/state.js +40 -0
  106. package/dist/esm/toolbar.js +350 -0
  107. package/dist/esm/types.js +1 -0
  108. package/dist/esm/ui/DatasourceModal/ModalWithState.js +17 -0
  109. package/dist/esm/ui/DatasourceModal/index.js +49 -0
  110. package/dist/esm/ui/EditLinkToolbar.js +244 -0
  111. package/dist/esm/ui/EditorSmartCardEvents.js +14 -0
  112. package/dist/esm/ui/EditorSmartCardEventsNext.js +203 -0
  113. package/dist/esm/ui/HyperlinkToolbarAppearance.js +163 -0
  114. package/dist/esm/ui/LayoutButton/index.js +110 -0
  115. package/dist/esm/ui/LayoutButton/types.js +1 -0
  116. package/dist/esm/ui/LayoutButton/utils.js +12 -0
  117. package/dist/esm/ui/LinkToolbarAppearance.js +141 -0
  118. package/dist/esm/ui/ResizableEmbedCard.js +358 -0
  119. package/dist/esm/ui/SmallerEditIcon.js +14 -0
  120. package/dist/esm/utils.js +48 -0
  121. package/dist/esm/version.json +5 -0
  122. package/dist/types/index.d.ts +2 -0
  123. package/dist/types/messages.d.ts +12 -0
  124. package/dist/types/nodeviews/blockCard.d.ts +26 -0
  125. package/dist/types/nodeviews/datasource.d.ts +42 -0
  126. package/dist/types/nodeviews/embedCard.d.ts +46 -0
  127. package/dist/types/nodeviews/genericCard.d.ts +37 -0
  128. package/dist/types/nodeviews/inlineCard.d.ts +23 -0
  129. package/dist/types/plugin.d.ts +24 -0
  130. package/dist/types/pm-plugins/actions.d.ts +23 -0
  131. package/dist/types/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
  132. package/dist/types/pm-plugins/analytics/events-from-tr.d.ts +17 -0
  133. package/dist/types/pm-plugins/analytics/index.d.ts +2 -0
  134. package/dist/types/pm-plugins/analytics/types.d.ts +12 -0
  135. package/dist/types/pm-plugins/analytics/utils.d.ts +32 -0
  136. package/dist/types/pm-plugins/doc.d.ts +22 -0
  137. package/dist/types/pm-plugins/keymap.d.ts +3 -0
  138. package/dist/types/pm-plugins/main.d.ts +6 -0
  139. package/dist/types/pm-plugins/mountHyperlink.d.ts +5 -0
  140. package/dist/types/pm-plugins/plugin-key.d.ts +3 -0
  141. package/dist/types/pm-plugins/reducers.d.ts +3 -0
  142. package/dist/types/pm-plugins/shouldReplaceLink.d.ts +2 -0
  143. package/dist/types/pm-plugins/util/resolve.d.ts +8 -0
  144. package/dist/types/pm-plugins/util/state.d.ts +31 -0
  145. package/dist/types/toolbar.d.ts +9 -0
  146. package/dist/types/types.d.ts +163 -0
  147. package/dist/types/ui/DatasourceModal/ModalWithState.d.ts +9 -0
  148. package/dist/types/ui/DatasourceModal/index.d.ts +11 -0
  149. package/dist/types/ui/EditLinkToolbar.d.ts +47 -0
  150. package/dist/types/ui/EditorSmartCardEvents.d.ts +5 -0
  151. package/dist/types/ui/EditorSmartCardEventsNext.d.ts +18 -0
  152. package/dist/types/ui/HyperlinkToolbarAppearance.d.ts +32 -0
  153. package/dist/types/ui/LayoutButton/index.d.ts +9 -0
  154. package/dist/types/ui/LayoutButton/types.d.ts +19 -0
  155. package/dist/types/ui/LayoutButton/utils.d.ts +5 -0
  156. package/dist/types/ui/LinkToolbarAppearance.d.ts +29 -0
  157. package/dist/types/ui/ResizableEmbedCard.d.ts +61 -0
  158. package/dist/types/ui/SmallerEditIcon.d.ts +3 -0
  159. package/dist/types/utils.d.ts +19 -0
  160. package/dist/types-ts4.5/index.d.ts +2 -0
  161. package/dist/types-ts4.5/messages.d.ts +12 -0
  162. package/dist/types-ts4.5/nodeviews/blockCard.d.ts +26 -0
  163. package/dist/types-ts4.5/nodeviews/datasource.d.ts +42 -0
  164. package/dist/types-ts4.5/nodeviews/embedCard.d.ts +46 -0
  165. package/dist/types-ts4.5/nodeviews/genericCard.d.ts +37 -0
  166. package/dist/types-ts4.5/nodeviews/inlineCard.d.ts +23 -0
  167. package/dist/types-ts4.5/plugin.d.ts +24 -0
  168. package/dist/types-ts4.5/pm-plugins/actions.d.ts +23 -0
  169. package/dist/types-ts4.5/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
  170. package/dist/types-ts4.5/pm-plugins/analytics/events-from-tr.d.ts +17 -0
  171. package/dist/types-ts4.5/pm-plugins/analytics/index.d.ts +2 -0
  172. package/dist/types-ts4.5/pm-plugins/analytics/types.d.ts +12 -0
  173. package/dist/types-ts4.5/pm-plugins/analytics/utils.d.ts +32 -0
  174. package/dist/types-ts4.5/pm-plugins/doc.d.ts +22 -0
  175. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
  176. package/dist/types-ts4.5/pm-plugins/main.d.ts +6 -0
  177. package/dist/types-ts4.5/pm-plugins/mountHyperlink.d.ts +5 -0
  178. package/dist/types-ts4.5/pm-plugins/plugin-key.d.ts +3 -0
  179. package/dist/types-ts4.5/pm-plugins/reducers.d.ts +3 -0
  180. package/dist/types-ts4.5/pm-plugins/shouldReplaceLink.d.ts +2 -0
  181. package/dist/types-ts4.5/pm-plugins/util/resolve.d.ts +8 -0
  182. package/dist/types-ts4.5/pm-plugins/util/state.d.ts +31 -0
  183. package/dist/types-ts4.5/toolbar.d.ts +9 -0
  184. package/dist/types-ts4.5/types.d.ts +163 -0
  185. package/dist/types-ts4.5/ui/DatasourceModal/ModalWithState.d.ts +9 -0
  186. package/dist/types-ts4.5/ui/DatasourceModal/index.d.ts +11 -0
  187. package/dist/types-ts4.5/ui/EditLinkToolbar.d.ts +47 -0
  188. package/dist/types-ts4.5/ui/EditorSmartCardEvents.d.ts +5 -0
  189. package/dist/types-ts4.5/ui/EditorSmartCardEventsNext.d.ts +18 -0
  190. package/dist/types-ts4.5/ui/HyperlinkToolbarAppearance.d.ts +32 -0
  191. package/dist/types-ts4.5/ui/LayoutButton/index.d.ts +9 -0
  192. package/dist/types-ts4.5/ui/LayoutButton/types.d.ts +19 -0
  193. package/dist/types-ts4.5/ui/LayoutButton/utils.d.ts +5 -0
  194. package/dist/types-ts4.5/ui/LinkToolbarAppearance.d.ts +29 -0
  195. package/dist/types-ts4.5/ui/ResizableEmbedCard.d.ts +61 -0
  196. package/dist/types-ts4.5/ui/SmallerEditIcon.d.ts +3 -0
  197. package/dist/types-ts4.5/utils.d.ts +19 -0
  198. package/package.json +126 -0
  199. package/report.api.md +146 -0
  200. package/tmp/api-report-tmp.d.ts +117 -0
@@ -0,0 +1,14 @@
1
+ import { useEffect } from 'react';
2
+ import { useSmartLinkEvents } from '@atlaskit/smart-card';
3
+ import { registerSmartCardEvents } from '../pm-plugins/actions';
4
+ export var EditorSmartCardEvents = function EditorSmartCardEvents(_ref) {
5
+ var editorView = _ref.editorView;
6
+ var events = useSmartLinkEvents();
7
+ useEffect(function () {
8
+ if (!events) {
9
+ return;
10
+ }
11
+ editorView.dispatch(registerSmartCardEvents(events)(editorView.state.tr));
12
+ }, [events, editorView]);
13
+ return null;
14
+ };
@@ -0,0 +1,203 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _inherits from "@babel/runtime/helpers/inherits";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
9
+ import React, { useEffect, useMemo } from 'react';
10
+ import PropTypes from 'prop-types';
11
+ import { AnalyticsContext, UIAnalyticsEvent } from '@atlaskit/analytics-next';
12
+ import { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
13
+ import { getAnalyticsEditorAppearance } from '@atlaskit/editor-common/utils';
14
+ import { useSmartLinkLifecycleAnalytics } from '@atlaskit/link-analytics';
15
+ import { registerSmartCardEventsNext } from '../pm-plugins/actions';
16
+ import { getPluginState } from '../pm-plugins/util/state';
17
+ /**
18
+ * If the metadata is for a history event,
19
+ * returns undo/redo instead of instead of what fn(metadata) would have otherwise
20
+ * returned
21
+ */
22
+ var withHistoryMethod = function withHistoryMethod(fn) {
23
+ return function (metadata) {
24
+ var isUndo = metadata.isUndo,
25
+ isRedo = metadata.isRedo;
26
+ if (isUndo) {
27
+ return 'undo';
28
+ }
29
+ if (isRedo) {
30
+ return 'redo';
31
+ }
32
+ return fn(metadata);
33
+ };
34
+ };
35
+ var getMethod = withHistoryMethod(function (_ref) {
36
+ var inputMethod = _ref.inputMethod;
37
+ switch (inputMethod) {
38
+ case INPUT_METHOD.CLIPBOARD:
39
+ return 'editor_paste';
40
+ case INPUT_METHOD.FLOATING_TB:
41
+ return 'editor_floatingToolbar';
42
+ case INPUT_METHOD.AUTO_DETECT:
43
+ case INPUT_METHOD.FORMATTING:
44
+ return 'editor_type';
45
+ default:
46
+ return 'unknown';
47
+ }
48
+ });
49
+ var getUpdateType = withHistoryMethod(function (_ref2) {
50
+ var action = _ref2.action;
51
+ switch (action) {
52
+ case ACTION.CHANGED_TYPE:
53
+ return 'display_update';
54
+ case ACTION.UPDATED:
55
+ return 'link_update';
56
+ default:
57
+ return 'unknown';
58
+ }
59
+ });
60
+ var getDeleteType = withHistoryMethod(function (_ref3) {
61
+ var action = _ref3.action;
62
+ if (action === ACTION.UNLINK) {
63
+ return 'unlink';
64
+ }
65
+ return 'delete';
66
+ });
67
+ var getSourceEventFromMetadata = function getSourceEventFromMetadata(metadata) {
68
+ return metadata.sourceEvent instanceof UIAnalyticsEvent ? metadata.sourceEvent : null;
69
+ };
70
+
71
+ /**
72
+ * Set display category as `link` if not displaying the link as a smart card
73
+ */
74
+ var displayCategoryFromDisplay = function displayCategoryFromDisplay(display) {
75
+ if (display === 'url') {
76
+ return 'link';
77
+ }
78
+ };
79
+
80
+ /**
81
+ * Binds the @atlaskit/link-analytics callbacks
82
+ * to the editor card plugin state events callbacks interfaces
83
+ */
84
+ export var EventsBinding = function EventsBinding(_ref4) {
85
+ var editorView = _ref4.editorView;
86
+ /**
87
+ * These callbacks internally use window.requestIdleCallback/requestAnimationFrame
88
+ * to defer any heavy operations involving network
89
+ *
90
+ * The callbacks themselves should not be deferred, they should be called syncronously the moment
91
+ * the events take place.
92
+ */
93
+ var _useSmartLinkLifecycl = useSmartLinkLifecycleAnalytics(),
94
+ linkCreated = _useSmartLinkLifecycl.linkCreated,
95
+ linkUpdated = _useSmartLinkLifecycl.linkUpdated,
96
+ linkDeleted = _useSmartLinkLifecycl.linkDeleted;
97
+ var events = useMemo(function () {
98
+ return {
99
+ created: function created(metadata) {
100
+ var url = metadata.url,
101
+ display = metadata.display,
102
+ nodeContext = metadata.nodeContext;
103
+ var displayCategory = displayCategoryFromDisplay(display);
104
+ var sourceEvent = getSourceEventFromMetadata(metadata);
105
+ var creationMethod = getMethod(metadata);
106
+ linkCreated({
107
+ url: url,
108
+ displayCategory: displayCategory
109
+ }, sourceEvent, {
110
+ display: display,
111
+ nodeContext: nodeContext,
112
+ creationMethod: creationMethod
113
+ });
114
+ },
115
+ updated: function updated(metadata) {
116
+ var url = metadata.url,
117
+ display = metadata.display,
118
+ previousDisplay = metadata.previousDisplay,
119
+ nodeContext = metadata.nodeContext;
120
+ var displayCategory = displayCategoryFromDisplay(display);
121
+ var sourceEvent = getSourceEventFromMetadata(metadata);
122
+ var updateMethod = getMethod(metadata);
123
+ var updateType = getUpdateType(metadata);
124
+ linkUpdated({
125
+ url: url,
126
+ displayCategory: displayCategory
127
+ }, sourceEvent, {
128
+ display: display,
129
+ previousDisplay: previousDisplay,
130
+ nodeContext: nodeContext,
131
+ updateMethod: updateMethod,
132
+ updateType: updateType
133
+ });
134
+ },
135
+ deleted: function deleted(metadata) {
136
+ var url = metadata.url,
137
+ display = metadata.display,
138
+ nodeContext = metadata.nodeContext;
139
+ var displayCategory = displayCategoryFromDisplay(display);
140
+ var sourceEvent = getSourceEventFromMetadata(metadata);
141
+ var deleteMethod = getMethod(metadata);
142
+ var deleteType = getDeleteType(metadata);
143
+ linkDeleted({
144
+ url: url,
145
+ displayCategory: displayCategory
146
+ }, sourceEvent, {
147
+ display: display,
148
+ nodeContext: nodeContext,
149
+ deleteMethod: deleteMethod,
150
+ deleteType: deleteType
151
+ });
152
+ }
153
+ };
154
+ }, [linkCreated, linkUpdated, linkDeleted]);
155
+ useEffect(function () {
156
+ editorView.dispatch(registerSmartCardEventsNext(events)(editorView.state.tr));
157
+ }, [events, editorView]);
158
+ return null;
159
+ };
160
+
161
+ // eslint-disable-next-line @repo/internal/react/no-class-components
162
+ export var EditorSmartCardEventsNext = /*#__PURE__*/function (_React$PureComponent) {
163
+ _inherits(EditorSmartCardEventsNext, _React$PureComponent);
164
+ var _super = _createSuper(EditorSmartCardEventsNext);
165
+ function EditorSmartCardEventsNext() {
166
+ _classCallCheck(this, EditorSmartCardEventsNext);
167
+ return _super.apply(this, arguments);
168
+ }
169
+ _createClass(EditorSmartCardEventsNext, [{
170
+ key: "render",
171
+ value: function render() {
172
+ var _getPluginState;
173
+ var cardContext = this.context.contextAdapter.card;
174
+
175
+ /**
176
+ * The analytics hook needs to be able to communicate with the card context
177
+ * If we can't access it, don't mount the event bindings
178
+ * This effectively entirely disables all tracking behaviour
179
+ */
180
+ if (!cardContext) {
181
+ return null;
182
+ }
183
+ var editorAppearance = (_getPluginState = getPluginState(this.props.editorView.state)) === null || _getPluginState === void 0 ? void 0 : _getPluginState.editorAppearance;
184
+ var analyticsEditorAppearance = getAnalyticsEditorAppearance(editorAppearance);
185
+ var analyticsData = {
186
+ attributes: {
187
+ location: analyticsEditorAppearance
188
+ },
189
+ // Below is added for the future implementation of Linking Platform namespaced analytic context
190
+ location: analyticsEditorAppearance
191
+ };
192
+ return /*#__PURE__*/React.createElement(cardContext.Provider, {
193
+ value: cardContext.value
194
+ }, /*#__PURE__*/React.createElement(AnalyticsContext, {
195
+ data: analyticsData
196
+ }, /*#__PURE__*/React.createElement(EventsBinding, this.props)));
197
+ }
198
+ }]);
199
+ return EditorSmartCardEventsNext;
200
+ }(React.PureComponent);
201
+ _defineProperty(EditorSmartCardEventsNext, "contextTypes", {
202
+ contextAdapter: PropTypes.object
203
+ });
@@ -0,0 +1,163 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
+ import _inherits from "@babel/runtime/helpers/inherits";
6
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
10
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
+ import React, { Component } from 'react';
13
+ import { LinkToolbarAppearance } from './LinkToolbarAppearance';
14
+ // eslint-disable-next-line @repo/internal/react/no-class-components
15
+ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
16
+ _inherits(HyperlinkToolbarAppearance, _Component);
17
+ var _super = _createSuper(HyperlinkToolbarAppearance);
18
+ function HyperlinkToolbarAppearance() {
19
+ var _this;
20
+ _classCallCheck(this, HyperlinkToolbarAppearance);
21
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
22
+ args[_key] = arguments[_key];
23
+ }
24
+ _this = _super.call.apply(_super, [this].concat(args));
25
+ _defineProperty(_assertThisInitialized(_this), "state", {
26
+ supportedUrlsMap: new Map()
27
+ });
28
+ _defineProperty(_assertThisInitialized(_this), "getProvider", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
29
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
30
+ while (1) switch (_context2.prev = _context2.next) {
31
+ case 0:
32
+ if (!_this.cardProvider) {
33
+ _context2.next = 2;
34
+ break;
35
+ }
36
+ return _context2.abrupt("return", _this.cardProvider);
37
+ case 2:
38
+ return _context2.abrupt("return", new Promise(function (resolve) {
39
+ var providerFactory = _this.props.providerFactory;
40
+ providerFactory.subscribe('cardProvider', /*#__PURE__*/function () {
41
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_, cardProvider) {
42
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
43
+ while (1) switch (_context.prev = _context.next) {
44
+ case 0:
45
+ if (cardProvider) {
46
+ _context.next = 2;
47
+ break;
48
+ }
49
+ return _context.abrupt("return");
50
+ case 2:
51
+ _context.next = 4;
52
+ return cardProvider;
53
+ case 4:
54
+ _this.cardProvider = _context.sent;
55
+ resolve(_this.cardProvider);
56
+ case 6:
57
+ case "end":
58
+ return _context.stop();
59
+ }
60
+ }, _callee);
61
+ }));
62
+ return function (_x, _x2) {
63
+ return _ref2.apply(this, arguments);
64
+ };
65
+ }());
66
+ }));
67
+ case 3:
68
+ case "end":
69
+ return _context2.stop();
70
+ }
71
+ }, _callee2);
72
+ })));
73
+ _defineProperty(_assertThisInitialized(_this), "resolveUrl", /*#__PURE__*/function () {
74
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {
75
+ var supportedUrlsMap, isUrlSupported, provider;
76
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
77
+ while (1) switch (_context3.prev = _context3.next) {
78
+ case 0:
79
+ supportedUrlsMap = _this.state.supportedUrlsMap;
80
+ if (!supportedUrlsMap.has(url)) {
81
+ _context3.next = 3;
82
+ break;
83
+ }
84
+ return _context3.abrupt("return");
85
+ case 3:
86
+ isUrlSupported = false;
87
+ _context3.prev = 4;
88
+ _context3.next = 7;
89
+ return _this.getProvider();
90
+ case 7:
91
+ provider = _context3.sent;
92
+ _context3.next = 10;
93
+ return provider.findPattern(url);
94
+ case 10:
95
+ isUrlSupported = _context3.sent;
96
+ _context3.next = 16;
97
+ break;
98
+ case 13:
99
+ _context3.prev = 13;
100
+ _context3.t0 = _context3["catch"](4);
101
+ isUrlSupported = false;
102
+ case 16:
103
+ supportedUrlsMap.set(url, isUrlSupported);
104
+ _this.setState({
105
+ supportedUrlsMap: supportedUrlsMap
106
+ });
107
+ case 18:
108
+ case "end":
109
+ return _context3.stop();
110
+ }
111
+ }, _callee3, null, [[4, 13]]);
112
+ }));
113
+ return function (_x3) {
114
+ return _ref3.apply(this, arguments);
115
+ };
116
+ }());
117
+ _defineProperty(_assertThisInitialized(_this), "componentDidMount", function () {
118
+ return _this.resolveUrl(_this.props.url);
119
+ });
120
+ return _this;
121
+ }
122
+ _createClass(HyperlinkToolbarAppearance, [{
123
+ key: "UNSAFE_componentWillReceiveProps",
124
+ value:
125
+ // needed so we display the right state on the Toolbar while the same Toolbar
126
+ // instance is visible and we click other link
127
+ function UNSAFE_componentWillReceiveProps(nextProps) {
128
+ if (nextProps.url !== this.props.url) {
129
+ this.resolveUrl(nextProps.url);
130
+ }
131
+ }
132
+ }, {
133
+ key: "render",
134
+ value: function render() {
135
+ var _this$props = this.props,
136
+ url = _this$props.url,
137
+ intl = _this$props.intl,
138
+ editorView = _this$props.editorView,
139
+ editorState = _this$props.editorState,
140
+ cardOptions = _this$props.cardOptions,
141
+ platform = _this$props.platform,
142
+ editorAnalyticsApi = _this$props.editorAnalyticsApi,
143
+ cardActions = _this$props.cardActions;
144
+ var supportedUrlsMap = this.state.supportedUrlsMap;
145
+ if (!supportedUrlsMap.get(url)) {
146
+ return null;
147
+ }
148
+ return /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
149
+ key: "link-appearance",
150
+ url: url,
151
+ intl: intl,
152
+ editorView: editorView,
153
+ editorState: editorState,
154
+ allowEmbeds: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowEmbeds,
155
+ allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
156
+ platform: platform,
157
+ editorAnalyticsApi: editorAnalyticsApi,
158
+ cardActions: cardActions
159
+ });
160
+ }
161
+ }]);
162
+ return HyperlinkToolbarAppearance;
163
+ }(Component);
@@ -0,0 +1,110 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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) { _defineProperty(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; }
4
+ /** @jsx jsx */
5
+ import React, { useCallback, useMemo } from 'react';
6
+ import { css, jsx } from '@emotion/react';
7
+ import { injectIntl } from 'react-intl-next';
8
+ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
9
+ import { Popup } from '@atlaskit/editor-common/ui';
10
+ import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
11
+ import { getNextBreakoutMode, getTitle } from '@atlaskit/editor-common/utils';
12
+ import CollapseIcon from '@atlaskit/icon/glyph/editor/collapse';
13
+ import ExpandIcon from '@atlaskit/icon/glyph/editor/expand';
14
+ import { B300, N20A, N300 } from '@atlaskit/theme/colors';
15
+ import { setCardLayout } from '../../pm-plugins/actions';
16
+ import { getDatasource } from './utils';
17
+ var toolbarButtonWrapperStyles = css({
18
+ background: "".concat("var(--ds-background-neutral, ".concat(N20A, ")")),
19
+ color: "".concat("var(--ds-icon, ".concat(N300, ")")),
20
+ ':hover': {
21
+ background: "".concat("var(--ds-background-neutral-hovered, ".concat(B300, ")")),
22
+ color: "var(--ds-icon, white)".concat(" !important")
23
+ }
24
+ });
25
+ export var LayoutButton = function LayoutButton(_ref) {
26
+ var onLayoutChange = _ref.onLayoutChange,
27
+ _ref$layout = _ref.layout,
28
+ layout = _ref$layout === void 0 ? 'center' : _ref$layout,
29
+ formatMessage = _ref.intl.formatMessage,
30
+ mountPoint = _ref.mountPoint,
31
+ boundariesElement = _ref.boundariesElement,
32
+ scrollableElement = _ref.scrollableElement,
33
+ targetElement = _ref.targetElement,
34
+ _ref$testId = _ref.testId,
35
+ testId = _ref$testId === void 0 ? 'datasource-table-layout-button' : _ref$testId;
36
+ var handleClick = useCallback(function () {
37
+ onLayoutChange && onLayoutChange(getNextBreakoutMode(layout));
38
+ }, [layout, onLayoutChange]);
39
+ var title = useMemo(function () {
40
+ return formatMessage(getTitle(layout));
41
+ }, [formatMessage, layout]);
42
+ if (!targetElement) {
43
+ return null;
44
+ }
45
+ return jsx(Popup, {
46
+ mountTo: mountPoint,
47
+ boundariesElement: boundariesElement,
48
+ scrollableElement: scrollableElement,
49
+ target: targetElement,
50
+ alignY: "start",
51
+ alignX: "end",
52
+ forcePlacement: true,
53
+ stick: true,
54
+ ariaLabel: title
55
+ }, jsx(ToolbarButton, {
56
+ testId: testId,
57
+ css: toolbarButtonWrapperStyles,
58
+ title: title,
59
+ onClick: handleClick,
60
+ iconBefore: layout === 'full-width' ? jsx(CollapseIcon, {
61
+ label: title
62
+ }) : jsx(ExpandIcon, {
63
+ label: title
64
+ })
65
+ }));
66
+ };
67
+ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
68
+ var _node$attrs, _node$attrs2;
69
+ var editorView = _ref2.editorView,
70
+ mountPoint = _ref2.mountPoint,
71
+ scrollableElement = _ref2.scrollableElement,
72
+ boundariesElement = _ref2.boundariesElement,
73
+ intl = _ref2.intl,
74
+ api = _ref2.api;
75
+ var _useSharedPluginState = useSharedPluginState(api, ['card']),
76
+ cardState = _useSharedPluginState.cardState;
77
+ var _getDatasource = getDatasource(editorView),
78
+ node = _getDatasource.node,
79
+ pos = _getDatasource.pos;
80
+ var _ref3 = cardState !== null && cardState !== void 0 ? cardState : {},
81
+ datasourceTableRef = _ref3.datasourceTableRef,
82
+ _ref3$layout = _ref3.layout,
83
+ layout = _ref3$layout === void 0 ? (node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.layout) || 'center' : _ref3$layout;
84
+ var isDatasource = !!(node !== null && node !== void 0 && (_node$attrs2 = node.attrs) !== null && _node$attrs2 !== void 0 && _node$attrs2.datasource);
85
+ var onLayoutChange = function onLayoutChange(layout) {
86
+ if (pos === undefined) {
87
+ return;
88
+ }
89
+ var state = editorView.state,
90
+ dispatch = editorView.dispatch;
91
+ var tr = state.tr.setNodeMarkup(pos, undefined, _objectSpread(_objectSpread({}, node === null || node === void 0 ? void 0 : node.attrs), {}, {
92
+ layout: layout
93
+ }));
94
+ tr.setMeta('scrollIntoView', false);
95
+ dispatch(setCardLayout(layout)(tr));
96
+ };
97
+ if (!isDatasource) {
98
+ return null;
99
+ }
100
+ return jsx(LayoutButton, {
101
+ mountPoint: mountPoint,
102
+ scrollableElement: scrollableElement,
103
+ boundariesElement: boundariesElement,
104
+ targetElement: datasourceTableRef,
105
+ layout: layout,
106
+ onLayoutChange: onLayoutChange,
107
+ intl: intl
108
+ });
109
+ };
110
+ export default injectIntl(LayoutButtonWrapper);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { findSelectedNodeOfType } from 'prosemirror-utils';
2
+ export var getDatasource = function getDatasource(editorView) {
3
+ var _findSelectedNodeOfTy;
4
+ var _editorView$state = editorView.state,
5
+ selection = _editorView$state.selection,
6
+ schema = _editorView$state.schema;
7
+ var blockCard = schema.nodes.blockCard;
8
+ return (_findSelectedNodeOfTy = findSelectedNodeOfType([blockCard])(selection)) !== null && _findSelectedNodeOfTy !== void 0 ? _findSelectedNodeOfTy : {
9
+ node: undefined,
10
+ pos: undefined
11
+ };
12
+ };
@@ -0,0 +1,141 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
+ import _inherits from "@babel/runtime/helpers/inherits";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ 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; }
9
+ 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) { _defineProperty(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; }
10
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
+ import React from 'react';
13
+ import PropTypes from 'prop-types';
14
+ import { Fragment } from 'prosemirror-model';
15
+ import { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
16
+ import { commandWithMetadata, getButtonGroupOption, LinkToolbarButtonGroup } from '@atlaskit/editor-common/card';
17
+ import nodeNames, { cardMessages as messages } from '@atlaskit/editor-common/messages';
18
+ import { isSupportedInParent } from '@atlaskit/editor-common/utils';
19
+ // eslint-disable-next-line @repo/internal/react/no-class-components
20
+ export var LinkToolbarAppearance = /*#__PURE__*/function (_React$Component) {
21
+ _inherits(LinkToolbarAppearance, _React$Component);
22
+ var _super = _createSuper(LinkToolbarAppearance);
23
+ function LinkToolbarAppearance() {
24
+ var _this;
25
+ _classCallCheck(this, LinkToolbarAppearance);
26
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ args[_key] = arguments[_key];
28
+ }
29
+ _this = _super.call.apply(_super, [this].concat(args));
30
+ _defineProperty(_assertThisInitialized(_this), "renderDropdown", function (view, cardContext) {
31
+ var _cardActions$setSelec, _cardActions$setSelec2, _cardActions$changeSe, _cardActions$setSelec3;
32
+ var _this$props = _this.props,
33
+ url = _this$props.url,
34
+ intl = _this$props.intl,
35
+ currentAppearance = _this$props.currentAppearance,
36
+ editorState = _this$props.editorState,
37
+ allowEmbeds = _this$props.allowEmbeds,
38
+ _this$props$allowBloc = _this$props.allowBlockCards,
39
+ allowBlockCards = _this$props$allowBloc === void 0 ? true : _this$props$allowBloc,
40
+ platform = _this$props.platform,
41
+ editorAnalyticsApi = _this$props.editorAnalyticsApi,
42
+ cardActions = _this$props.cardActions;
43
+ var preview = allowEmbeds && cardContext && url && cardContext.extractors.getPreview(url, platform);
44
+ var defaultCommand = function defaultCommand() {
45
+ return false;
46
+ };
47
+ if (url) {
48
+ var _cardContext$store, _urlState$error;
49
+ var urlState = cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$store = cardContext.store) === null || _cardContext$store === void 0 ? void 0 : _cardContext$store.getState()[url];
50
+ if ((urlState === null || urlState === void 0 ? void 0 : (_urlState$error = urlState.error) === null || _urlState$error === void 0 ? void 0 : _urlState$error.kind) === 'fatal') {
51
+ return null;
52
+ }
53
+ }
54
+ var isBlockCardLinkSupportedInParent = allowBlockCards ? isSupportedInParent(editorState, Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance) : false;
55
+ var isEmbedCardLinkSupportedInParent = allowEmbeds ? isSupportedInParent(editorState, Fragment.from(editorState.schema.nodes.embedCard.createChecked({})), currentAppearance) : false;
56
+ var embedOption = allowEmbeds && preview && {
57
+ appearance: 'embed',
58
+ title: intl.formatMessage(messages.embed),
59
+ onClick: (_cardActions$setSelec = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('embed', editorAnalyticsApi)) !== null && _cardActions$setSelec !== void 0 ? _cardActions$setSelec : defaultCommand,
60
+ selected: currentAppearance === 'embed',
61
+ hidden: false,
62
+ testId: 'embed-appearance',
63
+ disabled: !isEmbedCardLinkSupportedInParent,
64
+ tooltip: isEmbedCardLinkSupportedInParent ? undefined : getUnavailableMessage(editorState, intl)
65
+ };
66
+ var blockCardOption = allowBlockCards && {
67
+ appearance: 'block',
68
+ title: intl.formatMessage(messages.block),
69
+ onClick: (_cardActions$setSelec2 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('block', editorAnalyticsApi)) !== null && _cardActions$setSelec2 !== void 0 ? _cardActions$setSelec2 : defaultCommand,
70
+ selected: currentAppearance === 'block',
71
+ testId: 'block-appearance',
72
+ disabled: !isBlockCardLinkSupportedInParent,
73
+ tooltip: isBlockCardLinkSupportedInParent ? undefined : getUnavailableMessage(editorState, intl)
74
+ };
75
+ var options = [{
76
+ title: intl.formatMessage(messages.url),
77
+ onClick: commandWithMetadata((_cardActions$changeSe = cardActions === null || cardActions === void 0 ? void 0 : cardActions.changeSelectedCardToLink(url, url, true, undefined, undefined, editorAnalyticsApi)) !== null && _cardActions$changeSe !== void 0 ? _cardActions$changeSe : defaultCommand, {
78
+ action: ACTION.CHANGED_TYPE
79
+ }),
80
+ selected: !currentAppearance,
81
+ testId: 'url-appearance'
82
+ }, {
83
+ appearance: 'inline',
84
+ title: intl.formatMessage(messages.inline),
85
+ onClick: (_cardActions$setSelec3 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('inline', editorAnalyticsApi)) !== null && _cardActions$setSelec3 !== void 0 ? _cardActions$setSelec3 : defaultCommand,
86
+ selected: currentAppearance === 'inline',
87
+ testId: 'inline-appearance'
88
+ }];
89
+ var dispatchCommand = function dispatchCommand(fn) {
90
+ fn && fn(editorState, view && view.dispatch);
91
+ // Refocus the view to ensure the editor has focus
92
+ if (view && !view.hasFocus()) {
93
+ view.focus();
94
+ }
95
+ };
96
+ if (blockCardOption) {
97
+ options.push(blockCardOption);
98
+ }
99
+ if (embedOption) {
100
+ options.push(embedOption);
101
+ }
102
+ return /*#__PURE__*/React.createElement(LinkToolbarButtonGroup, {
103
+ key: "link-toolbar-button-group",
104
+ options: options.map(function (option) {
105
+ return getButtonGroupOption(intl, dispatchCommand, _objectSpread(_objectSpread({}, option), {}, {
106
+ onClick: commandWithMetadata(option.onClick, {
107
+ inputMethod: INPUT_METHOD.FLOATING_TB
108
+ })
109
+ }));
110
+ })
111
+ });
112
+ });
113
+ return _this;
114
+ }
115
+ _createClass(LinkToolbarAppearance, [{
116
+ key: "render",
117
+ value: function render() {
118
+ var cardContext = this.context.contextAdapter ? this.context.contextAdapter.card : undefined;
119
+ var editorView = this.props.editorView;
120
+ return this.renderDropdown(editorView, cardContext && cardContext.value);
121
+ }
122
+ }]);
123
+ return LinkToolbarAppearance;
124
+ }(React.Component);
125
+ _defineProperty(LinkToolbarAppearance, "contextTypes", {
126
+ contextAdapter: PropTypes.object
127
+ });
128
+ var getUnavailableMessage = function getUnavailableMessage(state, intl) {
129
+ try {
130
+ var parentNode = state.selection.$from.node(1);
131
+ var parentName = intl.formatMessage(nodeNames[parentNode.type.name]);
132
+ var tooltip = intl.formatMessage(messages.displayOptionUnavailableInParentNode, {
133
+ node: parentName
134
+ });
135
+ return tooltip;
136
+ } catch (e) {
137
+ return intl.formatMessage(messages.displayOptionUnavailableInParentNode, {
138
+ node: intl.formatMessage(nodeNames.defaultBlockNode)
139
+ });
140
+ }
141
+ };