@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,121 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.LayoutButton = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _react2 = require("@emotion/react");
12
+ var _reactIntlNext = require("react-intl-next");
13
+ var _hooks = require("@atlaskit/editor-common/hooks");
14
+ var _ui = require("@atlaskit/editor-common/ui");
15
+ var _uiMenu = require("@atlaskit/editor-common/ui-menu");
16
+ var _utils = require("@atlaskit/editor-common/utils");
17
+ var _collapse = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/collapse"));
18
+ var _expand = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/expand"));
19
+ var _colors = require("@atlaskit/theme/colors");
20
+ var _actions = require("../../pm-plugins/actions");
21
+ var _utils2 = require("./utils");
22
+ 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); }
23
+ 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; }
24
+ 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; }
25
+ 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; } /** @jsx jsx */
26
+ var toolbarButtonWrapperStyles = (0, _react2.css)({
27
+ background: "".concat("var(--ds-background-neutral, ".concat(_colors.N20A, ")")),
28
+ color: "".concat("var(--ds-icon, ".concat(_colors.N300, ")")),
29
+ ':hover': {
30
+ background: "".concat("var(--ds-background-neutral-hovered, ".concat(_colors.B300, ")")),
31
+ color: "var(--ds-icon, white)".concat(" !important")
32
+ }
33
+ });
34
+ var LayoutButton = function LayoutButton(_ref) {
35
+ var onLayoutChange = _ref.onLayoutChange,
36
+ _ref$layout = _ref.layout,
37
+ layout = _ref$layout === void 0 ? 'center' : _ref$layout,
38
+ formatMessage = _ref.intl.formatMessage,
39
+ mountPoint = _ref.mountPoint,
40
+ boundariesElement = _ref.boundariesElement,
41
+ scrollableElement = _ref.scrollableElement,
42
+ targetElement = _ref.targetElement,
43
+ _ref$testId = _ref.testId,
44
+ testId = _ref$testId === void 0 ? 'datasource-table-layout-button' : _ref$testId;
45
+ var handleClick = (0, _react.useCallback)(function () {
46
+ onLayoutChange && onLayoutChange((0, _utils.getNextBreakoutMode)(layout));
47
+ }, [layout, onLayoutChange]);
48
+ var title = (0, _react.useMemo)(function () {
49
+ return formatMessage((0, _utils.getTitle)(layout));
50
+ }, [formatMessage, layout]);
51
+ if (!targetElement) {
52
+ return null;
53
+ }
54
+ return (0, _react2.jsx)(_ui.Popup, {
55
+ mountTo: mountPoint,
56
+ boundariesElement: boundariesElement,
57
+ scrollableElement: scrollableElement,
58
+ target: targetElement,
59
+ alignY: "start",
60
+ alignX: "end",
61
+ forcePlacement: true,
62
+ stick: true,
63
+ ariaLabel: title
64
+ }, (0, _react2.jsx)(_uiMenu.ToolbarButton, {
65
+ testId: testId,
66
+ css: toolbarButtonWrapperStyles,
67
+ title: title,
68
+ onClick: handleClick,
69
+ iconBefore: layout === 'full-width' ? (0, _react2.jsx)(_collapse.default, {
70
+ label: title
71
+ }) : (0, _react2.jsx)(_expand.default, {
72
+ label: title
73
+ })
74
+ }));
75
+ };
76
+ exports.LayoutButton = LayoutButton;
77
+ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
78
+ var _node$attrs, _node$attrs2;
79
+ var editorView = _ref2.editorView,
80
+ mountPoint = _ref2.mountPoint,
81
+ scrollableElement = _ref2.scrollableElement,
82
+ boundariesElement = _ref2.boundariesElement,
83
+ intl = _ref2.intl,
84
+ api = _ref2.api;
85
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['card']),
86
+ cardState = _useSharedPluginState.cardState;
87
+ var _getDatasource = (0, _utils2.getDatasource)(editorView),
88
+ node = _getDatasource.node,
89
+ pos = _getDatasource.pos;
90
+ var _ref3 = cardState !== null && cardState !== void 0 ? cardState : {},
91
+ datasourceTableRef = _ref3.datasourceTableRef,
92
+ _ref3$layout = _ref3.layout,
93
+ 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;
94
+ var isDatasource = !!(node !== null && node !== void 0 && (_node$attrs2 = node.attrs) !== null && _node$attrs2 !== void 0 && _node$attrs2.datasource);
95
+ var onLayoutChange = function onLayoutChange(layout) {
96
+ if (pos === undefined) {
97
+ return;
98
+ }
99
+ var state = editorView.state,
100
+ dispatch = editorView.dispatch;
101
+ var tr = state.tr.setNodeMarkup(pos, undefined, _objectSpread(_objectSpread({}, node === null || node === void 0 ? void 0 : node.attrs), {}, {
102
+ layout: layout
103
+ }));
104
+ tr.setMeta('scrollIntoView', false);
105
+ dispatch((0, _actions.setCardLayout)(layout)(tr));
106
+ };
107
+ if (!isDatasource) {
108
+ return null;
109
+ }
110
+ return (0, _react2.jsx)(LayoutButton, {
111
+ mountPoint: mountPoint,
112
+ scrollableElement: scrollableElement,
113
+ boundariesElement: boundariesElement,
114
+ targetElement: datasourceTableRef,
115
+ layout: layout,
116
+ onLayoutChange: onLayoutChange,
117
+ intl: intl
118
+ });
119
+ };
120
+ var _default = (0, _reactIntlNext.injectIntl)(LayoutButtonWrapper);
121
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDatasource = void 0;
7
+ var _prosemirrorUtils = require("prosemirror-utils");
8
+ var getDatasource = function getDatasource(editorView) {
9
+ var _findSelectedNodeOfTy;
10
+ var _editorView$state = editorView.state,
11
+ selection = _editorView$state.selection,
12
+ schema = _editorView$state.schema;
13
+ var blockCard = schema.nodes.blockCard;
14
+ return (_findSelectedNodeOfTy = (0, _prosemirrorUtils.findSelectedNodeOfType)([blockCard])(selection)) !== null && _findSelectedNodeOfTy !== void 0 ? _findSelectedNodeOfTy : {
15
+ node: undefined,
16
+ pos: undefined
17
+ };
18
+ };
19
+ exports.getDatasource = getDatasource;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.LinkToolbarAppearance = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _react = _interopRequireDefault(require("react"));
17
+ var _propTypes = _interopRequireDefault(require("prop-types"));
18
+ var _prosemirrorModel = require("prosemirror-model");
19
+ var _analytics = require("@atlaskit/editor-common/analytics");
20
+ var _card = require("@atlaskit/editor-common/card");
21
+ var _messages = _interopRequireWildcard(require("@atlaskit/editor-common/messages"));
22
+ var _utils = require("@atlaskit/editor-common/utils");
23
+ 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); }
24
+ 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; }
25
+ 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; }
26
+ 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; }
27
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
28
+ 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; } }
29
+ // eslint-disable-next-line @repo/internal/react/no-class-components
30
+ var LinkToolbarAppearance = /*#__PURE__*/function (_React$Component) {
31
+ (0, _inherits2.default)(LinkToolbarAppearance, _React$Component);
32
+ var _super = _createSuper(LinkToolbarAppearance);
33
+ function LinkToolbarAppearance() {
34
+ var _this;
35
+ (0, _classCallCheck2.default)(this, LinkToolbarAppearance);
36
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
37
+ args[_key] = arguments[_key];
38
+ }
39
+ _this = _super.call.apply(_super, [this].concat(args));
40
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderDropdown", function (view, cardContext) {
41
+ var _cardActions$setSelec, _cardActions$setSelec2, _cardActions$changeSe, _cardActions$setSelec3;
42
+ var _this$props = _this.props,
43
+ url = _this$props.url,
44
+ intl = _this$props.intl,
45
+ currentAppearance = _this$props.currentAppearance,
46
+ editorState = _this$props.editorState,
47
+ allowEmbeds = _this$props.allowEmbeds,
48
+ _this$props$allowBloc = _this$props.allowBlockCards,
49
+ allowBlockCards = _this$props$allowBloc === void 0 ? true : _this$props$allowBloc,
50
+ platform = _this$props.platform,
51
+ editorAnalyticsApi = _this$props.editorAnalyticsApi,
52
+ cardActions = _this$props.cardActions;
53
+ var preview = allowEmbeds && cardContext && url && cardContext.extractors.getPreview(url, platform);
54
+ var defaultCommand = function defaultCommand() {
55
+ return false;
56
+ };
57
+ if (url) {
58
+ var _cardContext$store, _urlState$error;
59
+ var urlState = cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$store = cardContext.store) === null || _cardContext$store === void 0 ? void 0 : _cardContext$store.getState()[url];
60
+ if ((urlState === null || urlState === void 0 ? void 0 : (_urlState$error = urlState.error) === null || _urlState$error === void 0 ? void 0 : _urlState$error.kind) === 'fatal') {
61
+ return null;
62
+ }
63
+ }
64
+ var isBlockCardLinkSupportedInParent = allowBlockCards ? (0, _utils.isSupportedInParent)(editorState, _prosemirrorModel.Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance) : false;
65
+ var isEmbedCardLinkSupportedInParent = allowEmbeds ? (0, _utils.isSupportedInParent)(editorState, _prosemirrorModel.Fragment.from(editorState.schema.nodes.embedCard.createChecked({})), currentAppearance) : false;
66
+ var embedOption = allowEmbeds && preview && {
67
+ appearance: 'embed',
68
+ title: intl.formatMessage(_messages.cardMessages.embed),
69
+ onClick: (_cardActions$setSelec = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('embed', editorAnalyticsApi)) !== null && _cardActions$setSelec !== void 0 ? _cardActions$setSelec : defaultCommand,
70
+ selected: currentAppearance === 'embed',
71
+ hidden: false,
72
+ testId: 'embed-appearance',
73
+ disabled: !isEmbedCardLinkSupportedInParent,
74
+ tooltip: isEmbedCardLinkSupportedInParent ? undefined : getUnavailableMessage(editorState, intl)
75
+ };
76
+ var blockCardOption = allowBlockCards && {
77
+ appearance: 'block',
78
+ title: intl.formatMessage(_messages.cardMessages.block),
79
+ onClick: (_cardActions$setSelec2 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('block', editorAnalyticsApi)) !== null && _cardActions$setSelec2 !== void 0 ? _cardActions$setSelec2 : defaultCommand,
80
+ selected: currentAppearance === 'block',
81
+ testId: 'block-appearance',
82
+ disabled: !isBlockCardLinkSupportedInParent,
83
+ tooltip: isBlockCardLinkSupportedInParent ? undefined : getUnavailableMessage(editorState, intl)
84
+ };
85
+ var options = [{
86
+ title: intl.formatMessage(_messages.cardMessages.url),
87
+ onClick: (0, _card.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, {
88
+ action: _analytics.ACTION.CHANGED_TYPE
89
+ }),
90
+ selected: !currentAppearance,
91
+ testId: 'url-appearance'
92
+ }, {
93
+ appearance: 'inline',
94
+ title: intl.formatMessage(_messages.cardMessages.inline),
95
+ onClick: (_cardActions$setSelec3 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('inline', editorAnalyticsApi)) !== null && _cardActions$setSelec3 !== void 0 ? _cardActions$setSelec3 : defaultCommand,
96
+ selected: currentAppearance === 'inline',
97
+ testId: 'inline-appearance'
98
+ }];
99
+ var dispatchCommand = function dispatchCommand(fn) {
100
+ fn && fn(editorState, view && view.dispatch);
101
+ // Refocus the view to ensure the editor has focus
102
+ if (view && !view.hasFocus()) {
103
+ view.focus();
104
+ }
105
+ };
106
+ if (blockCardOption) {
107
+ options.push(blockCardOption);
108
+ }
109
+ if (embedOption) {
110
+ options.push(embedOption);
111
+ }
112
+ return /*#__PURE__*/_react.default.createElement(_card.LinkToolbarButtonGroup, {
113
+ key: "link-toolbar-button-group",
114
+ options: options.map(function (option) {
115
+ return (0, _card.getButtonGroupOption)(intl, dispatchCommand, _objectSpread(_objectSpread({}, option), {}, {
116
+ onClick: (0, _card.commandWithMetadata)(option.onClick, {
117
+ inputMethod: _analytics.INPUT_METHOD.FLOATING_TB
118
+ })
119
+ }));
120
+ })
121
+ });
122
+ });
123
+ return _this;
124
+ }
125
+ (0, _createClass2.default)(LinkToolbarAppearance, [{
126
+ key: "render",
127
+ value: function render() {
128
+ var cardContext = this.context.contextAdapter ? this.context.contextAdapter.card : undefined;
129
+ var editorView = this.props.editorView;
130
+ return this.renderDropdown(editorView, cardContext && cardContext.value);
131
+ }
132
+ }]);
133
+ return LinkToolbarAppearance;
134
+ }(_react.default.Component);
135
+ exports.LinkToolbarAppearance = LinkToolbarAppearance;
136
+ (0, _defineProperty2.default)(LinkToolbarAppearance, "contextTypes", {
137
+ contextAdapter: _propTypes.default.object
138
+ });
139
+ var getUnavailableMessage = function getUnavailableMessage(state, intl) {
140
+ try {
141
+ var parentNode = state.selection.$from.node(1);
142
+ var parentName = intl.formatMessage(_messages.default[parentNode.type.name]);
143
+ var tooltip = intl.formatMessage(_messages.cardMessages.displayOptionUnavailableInParentNode, {
144
+ node: parentName
145
+ });
146
+ return tooltip;
147
+ } catch (e) {
148
+ return intl.formatMessage(_messages.cardMessages.displayOptionUnavailableInParentNode, {
149
+ node: intl.formatMessage(_messages.default.defaultBlockNode)
150
+ });
151
+ }
152
+ };
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _react = _interopRequireDefault(require("react"));
17
+ var _react2 = require("@emotion/react");
18
+ var _prosemirrorUtils = require("prosemirror-utils");
19
+ var _styles = require("@atlaskit/editor-common/styles");
20
+ var _ui = require("@atlaskit/editor-common/ui");
21
+ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
22
+ var _smartCard = require("@atlaskit/smart-card");
23
+ 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; }
24
+ 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; }
25
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
26
+ 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; } } /** @jsx jsx */
27
+ // eslint-disable-next-line @repo/internal/react/no-class-components
28
+ var ResizableEmbedCard = /*#__PURE__*/function (_React$Component) {
29
+ (0, _inherits2.default)(ResizableEmbedCard, _React$Component);
30
+ var _super = _createSuper(ResizableEmbedCard);
31
+ function ResizableEmbedCard() {
32
+ var _this;
33
+ (0, _classCallCheck2.default)(this, ResizableEmbedCard);
34
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
35
+ args[_key] = arguments[_key];
36
+ }
37
+ _this = _super.call.apply(_super, [this].concat(args));
38
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
39
+ offsetLeft: _this.calcOffsetLeft()
40
+ });
41
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcNewSize", function (newWidth, stop) {
42
+ var _this$props = _this.props,
43
+ layout = _this$props.layout,
44
+ state = _this$props.view.state;
45
+ var newPct = (0, _ui.calcPctFromPx)(newWidth, _this.props.lineLength) * 100;
46
+ _this.setState({
47
+ resizedPctWidth: newPct
48
+ });
49
+ var newLayout = (0, _prosemirrorUtils.hasParentNodeOfType)(state.schema.nodes.table)(state.selection) ? layout : _this.calcUnwrappedLayout(newPct, newWidth);
50
+ if (newPct <= 100) {
51
+ if (_this.wrappedLayout && (stop ? newPct !== 100 : true)) {
52
+ newLayout = layout;
53
+ }
54
+ return {
55
+ width: newPct,
56
+ layout: newLayout
57
+ };
58
+ } else {
59
+ return {
60
+ width: _this.props.pctWidth || null,
61
+ layout: newLayout
62
+ };
63
+ }
64
+ });
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcUnwrappedLayout", function (pct, width) {
66
+ if (pct <= 100) {
67
+ return 'center';
68
+ }
69
+ if (width <= _this.wideLayoutWidth) {
70
+ return 'wide';
71
+ }
72
+ return 'full-width';
73
+ });
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcColumnLeftOffset", function () {
75
+ var offsetLeft = _this.state.offsetLeft;
76
+ return _this.insideInlineLike ? (0, _ui.calcColumnsFromPx)(offsetLeft, _this.props.lineLength, _this.props.gridSize) : 0;
77
+ });
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcPxWidth", function (useLayout) {
79
+ var _this$props2 = _this.props,
80
+ layout = _this$props2.layout,
81
+ pctWidth = _this$props2.pctWidth,
82
+ lineLength = _this$props2.lineLength,
83
+ containerWidth = _this$props2.containerWidth,
84
+ fullWidthMode = _this$props2.fullWidthMode,
85
+ getPos = _this$props2.getPos,
86
+ state = _this$props2.view.state;
87
+ var resizedPctWidth = _this.state.resizedPctWidth;
88
+ var pos = typeof getPos === 'function' ? getPos() : undefined;
89
+ return (0, _ui.calcMediaPxWidth)({
90
+ origWidth: _editorSharedStyles.DEFAULT_EMBED_CARD_WIDTH,
91
+ origHeight: _editorSharedStyles.DEFAULT_EMBED_CARD_HEIGHT,
92
+ pctWidth: pctWidth,
93
+ state: state,
94
+ containerWidth: {
95
+ width: containerWidth,
96
+ lineLength: lineLength
97
+ },
98
+ isFullWidthModeEnabled: fullWidthMode,
99
+ layout: useLayout || layout,
100
+ pos: pos,
101
+ resizedPctWidth: resizedPctWidth
102
+ });
103
+ });
104
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "highlights", function (newWidth, snapPoints) {
105
+ var snapWidth = (0, _ui.snapTo)(newWidth, snapPoints);
106
+ var _this$props$view$stat = _this.props.view.state.schema.nodes,
107
+ layoutColumn = _this$props$view$stat.layoutColumn,
108
+ table = _this$props$view$stat.table,
109
+ expand = _this$props$view$stat.expand,
110
+ nestedExpand = _this$props$view$stat.nestedExpand;
111
+ if (_this.$pos && !!(0, _prosemirrorUtils.findParentNodeOfTypeClosestToPos)(_this.$pos, [layoutColumn, table, expand, nestedExpand].filter(Boolean))) {
112
+ return [];
113
+ }
114
+ if (snapWidth > _this.wideLayoutWidth) {
115
+ return ['full-width'];
116
+ }
117
+ var _this$props3 = _this.props,
118
+ layout = _this$props3.layout,
119
+ lineLength = _this$props3.lineLength,
120
+ gridSize = _this$props3.gridSize;
121
+ var columns = (0, _ui.calcColumnsFromPx)(snapWidth, lineLength, gridSize);
122
+ var columnWidth = Math.round(columns);
123
+ var highlight = [];
124
+ if (layout === 'wrap-left' || layout === 'align-start') {
125
+ highlight.push(0, columnWidth);
126
+ } else if (layout === 'wrap-right' || layout === 'align-end') {
127
+ highlight.push(gridSize, gridSize - columnWidth);
128
+ } else if (_this.insideInlineLike) {
129
+ highlight.push(Math.round(columns + _this.calcColumnLeftOffset()));
130
+ } else {
131
+ highlight.push(Math.floor((gridSize - columnWidth) / 2), Math.ceil((gridSize + columnWidth) / 2));
132
+ }
133
+ return highlight;
134
+ });
135
+ return _this;
136
+ }
137
+ (0, _createClass2.default)(ResizableEmbedCard, [{
138
+ key: "componentDidUpdate",
139
+ value: function componentDidUpdate() {
140
+ var offsetLeft = this.calcOffsetLeft();
141
+ if (offsetLeft !== this.state.offsetLeft && offsetLeft >= 0) {
142
+ this.setState({
143
+ offsetLeft: offsetLeft
144
+ });
145
+ }
146
+ }
147
+ }, {
148
+ key: "wrappedLayout",
149
+ get: function get() {
150
+ return _ui.wrappedLayouts.indexOf(this.props.layout) > -1;
151
+ }
152
+ }, {
153
+ key: "UNSAFE_componentWillReceiveProps",
154
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
155
+ if (this.props.layout !== nextProps.layout) {
156
+ this.checkLayout(this.props.layout, nextProps.layout);
157
+ }
158
+ }
159
+
160
+ /**
161
+ * When returning to center layout from a wrapped/aligned layout, it might actually
162
+ * be wide or full-width
163
+ */
164
+ }, {
165
+ key: "checkLayout",
166
+ value: function checkLayout(oldLayout, newLayout) {
167
+ var resizedPctWidth = this.state.resizedPctWidth;
168
+ if (_ui.wrappedLayouts.indexOf(oldLayout) > -1 && newLayout === 'center' && resizedPctWidth) {
169
+ var layout = this.calcUnwrappedLayout(resizedPctWidth, this.calcPxWidth(newLayout));
170
+ this.props.updateSize(resizedPctWidth, layout);
171
+ }
172
+ }
173
+ }, {
174
+ key: "$pos",
175
+ get: function get() {
176
+ if (typeof this.props.getPos !== 'function') {
177
+ return null;
178
+ }
179
+ var pos = this.props.getPos();
180
+ if (Number.isNaN(pos) || typeof pos !== 'number') {
181
+ return null;
182
+ }
183
+
184
+ // need to pass view because we may not get updated props in time
185
+ return this.props.view.state.doc.resolve(pos);
186
+ }
187
+
188
+ /**
189
+ * The maxmimum number of grid columns this node can resize to.
190
+ */
191
+ }, {
192
+ key: "gridWidth",
193
+ get: function get() {
194
+ var gridSize = this.props.gridSize;
195
+ return !(this.wrappedLayout || this.insideInlineLike) ? gridSize / 2 : gridSize;
196
+ }
197
+ }, {
198
+ key: "calcOffsetLeft",
199
+ value: function calcOffsetLeft() {
200
+ var offsetLeft = 0;
201
+ if (this.wrapper && this.insideInlineLike) {
202
+ var currentNode = this.wrapper;
203
+ var boundingRect = currentNode.getBoundingClientRect();
204
+ var pmRect = this.props.view.dom.getBoundingClientRect();
205
+ offsetLeft = boundingRect.left - pmRect.left;
206
+ }
207
+ return offsetLeft;
208
+ }
209
+ }, {
210
+ key: "wideLayoutWidth",
211
+ get: function get() {
212
+ var lineLength = this.props.lineLength;
213
+ if (lineLength) {
214
+ return Math.ceil(lineLength * _editorSharedStyles.breakoutWideScaleRatio);
215
+ } else {
216
+ return _editorSharedStyles.akEditorWideLayoutWidth;
217
+ }
218
+ }
219
+ }, {
220
+ key: "calcSnapPoints",
221
+ value: function calcSnapPoints() {
222
+ var offsetLeft = this.state.offsetLeft;
223
+ var _this$props4 = this.props,
224
+ containerWidth = _this$props4.containerWidth,
225
+ lineLength = _this$props4.lineLength;
226
+ var snapTargets = [];
227
+ for (var i = 0; i < this.gridWidth; i++) {
228
+ snapTargets.push((0, _ui.calcPxFromColumns)(i, lineLength, this.gridWidth) - offsetLeft);
229
+ }
230
+ // full width
231
+ snapTargets.push(lineLength - offsetLeft);
232
+ var minimumWidth = (0, _ui.calcPxFromColumns)(this.wrappedLayout || this.insideInlineLike ? 1 : 2, lineLength, this.props.gridSize);
233
+ var snapPoints = snapTargets.filter(function (width) {
234
+ return width >= minimumWidth;
235
+ });
236
+ var $pos = this.$pos;
237
+ if (!$pos) {
238
+ return snapPoints;
239
+ }
240
+ var isTopLevel = $pos.parent.type.name === 'doc';
241
+ if (isTopLevel) {
242
+ snapPoints.push(this.wideLayoutWidth);
243
+ var fullWidthPoint = containerWidth - _editorSharedStyles.akEditorBreakoutPadding;
244
+ if (fullWidthPoint > this.wideLayoutWidth) {
245
+ snapPoints.push(fullWidthPoint);
246
+ }
247
+ }
248
+ return snapPoints;
249
+ }
250
+ }, {
251
+ key: "insideInlineLike",
252
+ get: function get() {
253
+ var $pos = this.$pos;
254
+ if (!$pos) {
255
+ return false;
256
+ }
257
+ var listItem = this.props.view.state.schema.nodes.listItem;
258
+ return !!(0, _prosemirrorUtils.findParentNodeOfTypeClosestToPos)($pos, [listItem]);
259
+ }
260
+ }, {
261
+ key: "getHeightDefiningComponent",
262
+ value:
263
+ /**
264
+ * Previously height of the box was controlled with paddingTop/paddingBottom trick inside Wrapper.
265
+ * It allowed height to be defined by a given percent ratio and so absolute value was defined by actual width.
266
+ * Also, it was part of styled component, which was fine because it was static through out life time of component.
267
+ *
268
+ * Now, two things changed:
269
+ * 1. If `height` is present we take it as actual height of the box, and hence we don't need
270
+ * (or even can't have, due to lack of width value) paddingTop trick.
271
+ * 2. Since `height` can be changing through out life time of a component, we can't have it as part of styled component,
272
+ * and hence we use `style` prop.
273
+ */
274
+ function getHeightDefiningComponent() {
275
+ var _this$props5 = this.props,
276
+ height = _this$props5.height,
277
+ aspectRatio = _this$props5.aspectRatio;
278
+ var heightDefiningStyles;
279
+ if (height) {
280
+ heightDefiningStyles = {
281
+ height: "".concat(height, "px")
282
+ };
283
+ } else {
284
+ // paddingBottom css trick defines ratio of `iframe height (y) + header (32)` to `width (x)`,
285
+ // where is `aspectRatio` defines iframe aspectRatio alone
286
+ // So, visually:
287
+ //
288
+ // x
289
+ // ┌──────────┐
290
+ // │ header │ 32
291
+ // ├──────────┤
292
+ // │ │
293
+ // │ iframe │ y
294
+ // │ │
295
+ // └──────────┘
296
+ //
297
+ // aspectRatio = x / y
298
+ // paddingBottom = (y + 32) / x
299
+ // which can be achieved with css calc() as (1 / (x/y)) * 100)% + 32px
300
+ heightDefiningStyles = {
301
+ paddingBottom: "calc(".concat((1 / aspectRatio * 100).toFixed(3), "% + ").concat(_smartCard.embedHeaderHeight, "px)")
302
+ };
303
+ }
304
+ return (0, _react2.jsx)("span", {
305
+ "data-testid": 'resizable-embed-card-height-definer',
306
+ style: _objectSpread({
307
+ display: 'block',
308
+ /* Fixes extra padding problem in Firefox */
309
+ fontSize: 0,
310
+ lineHeight: 0
311
+ }, heightDefiningStyles)
312
+ });
313
+ }
314
+ }, {
315
+ key: "render",
316
+ value: function render() {
317
+ var _this2 = this;
318
+ var _this$props6 = this.props,
319
+ layout = _this$props6.layout,
320
+ pctWidth = _this$props6.pctWidth,
321
+ containerWidth = _this$props6.containerWidth,
322
+ fullWidthMode = _this$props6.fullWidthMode,
323
+ children = _this$props6.children;
324
+ var initialWidth = this.calcPxWidth() - _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide;
325
+ var enable = {};
326
+ _ui.handleSides.forEach(function (side) {
327
+ var oppositeSide = side === 'left' ? 'right' : 'left';
328
+ enable[side] = ['full-width', 'wide', 'center'].concat("wrap-".concat(oppositeSide)).concat("align-".concat(_ui.imageAlignmentMap[oppositeSide])).indexOf(layout) > -1;
329
+ if (side === 'left' && _this2.insideInlineLike) {
330
+ enable[side] = false;
331
+ }
332
+ });
333
+
334
+ /* eslint-disable @atlaskit/design-system/consistent-css-prop-usage */
335
+ return (0, _react2.jsx)("div", {
336
+ css: _styles.embedSpacingStyles,
337
+ "data-testid": "resizable-embed-card-spacing"
338
+ }, (0, _react2.jsx)("div", {
339
+ css: (0, _ui.wrapperStyle)({
340
+ layout: layout,
341
+ isResized: !!pctWidth,
342
+ containerWidth: containerWidth || _editorSharedStyles.DEFAULT_EMBED_CARD_WIDTH,
343
+ fullWidthMode: fullWidthMode
344
+ })
345
+ }, (0, _react2.jsx)(_ui.Resizer, (0, _extends2.default)({}, this.props, {
346
+ width: initialWidth // Starting or initial width of embed <iframe> itself.
347
+ ,
348
+ enable: enable,
349
+ calcNewSize: this.calcNewSize,
350
+ snapPoints: this.calcSnapPoints(),
351
+ scaleFactor: !this.wrappedLayout && !this.insideInlineLike ? 2 : 1,
352
+ highlights: this.highlights,
353
+ innerPadding: _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide,
354
+ nodeType: "embed"
355
+ }), children, this.getHeightDefiningComponent())));
356
+ /* eslint-enable @atlaskit/design-system/consistent-css-prop-usage */
357
+ }
358
+ }]);
359
+ return ResizableEmbedCard;
360
+ }(_react.default.Component);
361
+ exports.default = ResizableEmbedCard;
362
+ (0, _defineProperty2.default)(ResizableEmbedCard, "defaultProps", {
363
+ aspectRatio: _editorSharedStyles.DEFAULT_EMBED_CARD_WIDTH / _editorSharedStyles.DEFAULT_EMBED_CARD_HEIGHT
364
+ });