@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.
- package/.eslintrc.js +15 -0
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +13 -0
- package/README.md +7 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/messages.js +20 -0
- package/dist/cjs/nodeviews/blockCard.js +164 -0
- package/dist/cjs/nodeviews/datasource.js +173 -0
- package/dist/cjs/nodeviews/embedCard.js +398 -0
- package/dist/cjs/nodeviews/genericCard.js +118 -0
- package/dist/cjs/nodeviews/inlineCard.js +132 -0
- package/dist/cjs/plugin.js +138 -0
- package/dist/cjs/pm-plugins/actions.js +122 -0
- package/dist/cjs/pm-plugins/analytics/create-analytics-queue.js +48 -0
- package/dist/cjs/pm-plugins/analytics/events-from-tr.js +359 -0
- package/dist/cjs/pm-plugins/analytics/index.js +19 -0
- package/dist/cjs/pm-plugins/analytics/types.js +5 -0
- package/dist/cjs/pm-plugins/analytics/utils.js +178 -0
- package/dist/cjs/pm-plugins/doc.js +479 -0
- package/dist/cjs/pm-plugins/keymap.js +64 -0
- package/dist/cjs/pm-plugins/main.js +212 -0
- package/dist/cjs/pm-plugins/mountHyperlink.js +47 -0
- package/dist/cjs/pm-plugins/plugin-key.js +9 -0
- package/dist/cjs/pm-plugins/reducers.js +111 -0
- package/dist/cjs/pm-plugins/shouldReplaceLink.js +35 -0
- package/dist/cjs/pm-plugins/util/resolve.js +59 -0
- package/dist/cjs/pm-plugins/util/state.js +49 -0
- package/dist/cjs/toolbar.js +364 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/ui/DatasourceModal/ModalWithState.js +25 -0
- package/dist/cjs/ui/DatasourceModal/index.js +60 -0
- package/dist/cjs/ui/EditLinkToolbar.js +258 -0
- package/dist/cjs/ui/EditorSmartCardEvents.js +21 -0
- package/dist/cjs/ui/EditorSmartCardEventsNext.js +215 -0
- package/dist/cjs/ui/HyperlinkToolbarAppearance.js +174 -0
- package/dist/cjs/ui/LayoutButton/index.js +121 -0
- package/dist/cjs/ui/LayoutButton/types.js +5 -0
- package/dist/cjs/ui/LayoutButton/utils.js +19 -0
- package/dist/cjs/ui/LinkToolbarAppearance.js +152 -0
- package/dist/cjs/ui/ResizableEmbedCard.js +364 -0
- package/dist/cjs/ui/SmallerEditIcon.js +22 -0
- package/dist/cjs/utils.js +60 -0
- package/dist/cjs/version.json +5 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/messages.js +13 -0
- package/dist/es2019/nodeviews/blockCard.js +131 -0
- package/dist/es2019/nodeviews/datasource.js +137 -0
- package/dist/es2019/nodeviews/embedCard.js +370 -0
- package/dist/es2019/nodeviews/genericCard.js +92 -0
- package/dist/es2019/nodeviews/inlineCard.js +113 -0
- package/dist/es2019/plugin.js +129 -0
- package/dist/es2019/pm-plugins/actions.js +57 -0
- package/dist/es2019/pm-plugins/analytics/create-analytics-queue.js +38 -0
- package/dist/es2019/pm-plugins/analytics/events-from-tr.js +339 -0
- package/dist/es2019/pm-plugins/analytics/index.js +2 -0
- package/dist/es2019/pm-plugins/analytics/types.js +1 -0
- package/dist/es2019/pm-plugins/analytics/utils.js +160 -0
- package/dist/es2019/pm-plugins/doc.js +451 -0
- package/dist/es2019/pm-plugins/keymap.js +59 -0
- package/dist/es2019/pm-plugins/main.js +208 -0
- package/dist/es2019/pm-plugins/mountHyperlink.js +37 -0
- package/dist/es2019/pm-plugins/plugin-key.js +2 -0
- package/dist/es2019/pm-plugins/reducers.js +110 -0
- package/dist/es2019/pm-plugins/shouldReplaceLink.js +25 -0
- package/dist/es2019/pm-plugins/util/resolve.js +50 -0
- package/dist/es2019/pm-plugins/util/state.js +26 -0
- package/dist/es2019/toolbar.js +359 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/ui/DatasourceModal/ModalWithState.js +19 -0
- package/dist/es2019/ui/DatasourceModal/index.js +48 -0
- package/dist/es2019/ui/EditLinkToolbar.js +226 -0
- package/dist/es2019/ui/EditorSmartCardEvents.js +15 -0
- package/dist/es2019/ui/EditorSmartCardEventsNext.js +199 -0
- package/dist/es2019/ui/HyperlinkToolbarAppearance.js +86 -0
- package/dist/es2019/ui/LayoutButton/index.js +114 -0
- package/dist/es2019/ui/LayoutButton/types.js +1 -0
- package/dist/es2019/ui/LayoutButton/utils.js +15 -0
- package/dist/es2019/ui/LinkToolbarAppearance.js +118 -0
- package/dist/es2019/ui/ResizableEmbedCard.js +335 -0
- package/dist/es2019/ui/SmallerEditIcon.js +14 -0
- package/dist/es2019/utils.js +46 -0
- package/dist/es2019/version.json +5 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/messages.js +13 -0
- package/dist/esm/nodeviews/blockCard.js +156 -0
- package/dist/esm/nodeviews/datasource.js +165 -0
- package/dist/esm/nodeviews/embedCard.js +389 -0
- package/dist/esm/nodeviews/genericCard.js +111 -0
- package/dist/esm/nodeviews/inlineCard.js +124 -0
- package/dist/esm/plugin.js +130 -0
- package/dist/esm/pm-plugins/actions.js +102 -0
- package/dist/esm/pm-plugins/analytics/create-analytics-queue.js +41 -0
- package/dist/esm/pm-plugins/analytics/events-from-tr.js +350 -0
- package/dist/esm/pm-plugins/analytics/index.js +2 -0
- package/dist/esm/pm-plugins/analytics/types.js +1 -0
- package/dist/esm/pm-plugins/analytics/utils.js +160 -0
- package/dist/esm/pm-plugins/doc.js +460 -0
- package/dist/esm/pm-plugins/keymap.js +58 -0
- package/dist/esm/pm-plugins/main.js +199 -0
- package/dist/esm/pm-plugins/mountHyperlink.js +39 -0
- package/dist/esm/pm-plugins/plugin-key.js +2 -0
- package/dist/esm/pm-plugins/reducers.js +103 -0
- package/dist/esm/pm-plugins/shouldReplaceLink.js +29 -0
- package/dist/esm/pm-plugins/util/resolve.js +52 -0
- package/dist/esm/pm-plugins/util/state.js +40 -0
- package/dist/esm/toolbar.js +350 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/ui/DatasourceModal/ModalWithState.js +17 -0
- package/dist/esm/ui/DatasourceModal/index.js +49 -0
- package/dist/esm/ui/EditLinkToolbar.js +244 -0
- package/dist/esm/ui/EditorSmartCardEvents.js +14 -0
- package/dist/esm/ui/EditorSmartCardEventsNext.js +203 -0
- package/dist/esm/ui/HyperlinkToolbarAppearance.js +163 -0
- package/dist/esm/ui/LayoutButton/index.js +110 -0
- package/dist/esm/ui/LayoutButton/types.js +1 -0
- package/dist/esm/ui/LayoutButton/utils.js +12 -0
- package/dist/esm/ui/LinkToolbarAppearance.js +141 -0
- package/dist/esm/ui/ResizableEmbedCard.js +358 -0
- package/dist/esm/ui/SmallerEditIcon.js +14 -0
- package/dist/esm/utils.js +48 -0
- package/dist/esm/version.json +5 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/messages.d.ts +12 -0
- package/dist/types/nodeviews/blockCard.d.ts +26 -0
- package/dist/types/nodeviews/datasource.d.ts +42 -0
- package/dist/types/nodeviews/embedCard.d.ts +46 -0
- package/dist/types/nodeviews/genericCard.d.ts +37 -0
- package/dist/types/nodeviews/inlineCard.d.ts +23 -0
- package/dist/types/plugin.d.ts +24 -0
- package/dist/types/pm-plugins/actions.d.ts +23 -0
- package/dist/types/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
- package/dist/types/pm-plugins/analytics/events-from-tr.d.ts +17 -0
- package/dist/types/pm-plugins/analytics/index.d.ts +2 -0
- package/dist/types/pm-plugins/analytics/types.d.ts +12 -0
- package/dist/types/pm-plugins/analytics/utils.d.ts +32 -0
- package/dist/types/pm-plugins/doc.d.ts +22 -0
- package/dist/types/pm-plugins/keymap.d.ts +3 -0
- package/dist/types/pm-plugins/main.d.ts +6 -0
- package/dist/types/pm-plugins/mountHyperlink.d.ts +5 -0
- package/dist/types/pm-plugins/plugin-key.d.ts +3 -0
- package/dist/types/pm-plugins/reducers.d.ts +3 -0
- package/dist/types/pm-plugins/shouldReplaceLink.d.ts +2 -0
- package/dist/types/pm-plugins/util/resolve.d.ts +8 -0
- package/dist/types/pm-plugins/util/state.d.ts +31 -0
- package/dist/types/toolbar.d.ts +9 -0
- package/dist/types/types.d.ts +163 -0
- package/dist/types/ui/DatasourceModal/ModalWithState.d.ts +9 -0
- package/dist/types/ui/DatasourceModal/index.d.ts +11 -0
- package/dist/types/ui/EditLinkToolbar.d.ts +47 -0
- package/dist/types/ui/EditorSmartCardEvents.d.ts +5 -0
- package/dist/types/ui/EditorSmartCardEventsNext.d.ts +18 -0
- package/dist/types/ui/HyperlinkToolbarAppearance.d.ts +32 -0
- package/dist/types/ui/LayoutButton/index.d.ts +9 -0
- package/dist/types/ui/LayoutButton/types.d.ts +19 -0
- package/dist/types/ui/LayoutButton/utils.d.ts +5 -0
- package/dist/types/ui/LinkToolbarAppearance.d.ts +29 -0
- package/dist/types/ui/ResizableEmbedCard.d.ts +61 -0
- package/dist/types/ui/SmallerEditIcon.d.ts +3 -0
- package/dist/types/utils.d.ts +19 -0
- package/dist/types-ts4.5/index.d.ts +2 -0
- package/dist/types-ts4.5/messages.d.ts +12 -0
- package/dist/types-ts4.5/nodeviews/blockCard.d.ts +26 -0
- package/dist/types-ts4.5/nodeviews/datasource.d.ts +42 -0
- package/dist/types-ts4.5/nodeviews/embedCard.d.ts +46 -0
- package/dist/types-ts4.5/nodeviews/genericCard.d.ts +37 -0
- package/dist/types-ts4.5/nodeviews/inlineCard.d.ts +23 -0
- package/dist/types-ts4.5/plugin.d.ts +24 -0
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +23 -0
- package/dist/types-ts4.5/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
- package/dist/types-ts4.5/pm-plugins/analytics/events-from-tr.d.ts +17 -0
- package/dist/types-ts4.5/pm-plugins/analytics/index.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/analytics/types.d.ts +12 -0
- package/dist/types-ts4.5/pm-plugins/analytics/utils.d.ts +32 -0
- package/dist/types-ts4.5/pm-plugins/doc.d.ts +22 -0
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +6 -0
- package/dist/types-ts4.5/pm-plugins/mountHyperlink.d.ts +5 -0
- package/dist/types-ts4.5/pm-plugins/plugin-key.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/reducers.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/shouldReplaceLink.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/util/resolve.d.ts +8 -0
- package/dist/types-ts4.5/pm-plugins/util/state.d.ts +31 -0
- package/dist/types-ts4.5/toolbar.d.ts +9 -0
- package/dist/types-ts4.5/types.d.ts +163 -0
- package/dist/types-ts4.5/ui/DatasourceModal/ModalWithState.d.ts +9 -0
- package/dist/types-ts4.5/ui/DatasourceModal/index.d.ts +11 -0
- package/dist/types-ts4.5/ui/EditLinkToolbar.d.ts +47 -0
- package/dist/types-ts4.5/ui/EditorSmartCardEvents.d.ts +5 -0
- package/dist/types-ts4.5/ui/EditorSmartCardEventsNext.d.ts +18 -0
- package/dist/types-ts4.5/ui/HyperlinkToolbarAppearance.d.ts +32 -0
- package/dist/types-ts4.5/ui/LayoutButton/index.d.ts +9 -0
- package/dist/types-ts4.5/ui/LayoutButton/types.d.ts +19 -0
- package/dist/types-ts4.5/ui/LayoutButton/utils.d.ts +5 -0
- package/dist/types-ts4.5/ui/LinkToolbarAppearance.d.ts +29 -0
- package/dist/types-ts4.5/ui/ResizableEmbedCard.d.ts +61 -0
- package/dist/types-ts4.5/ui/SmallerEditIcon.d.ts +3 -0
- package/dist/types-ts4.5/utils.d.ts +19 -0
- package/package.json +126 -0
- package/report.api.md +146 -0
- 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,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
|
+
});
|