@atlaskit/editor-common 76.34.0 → 76.36.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/CHANGELOG.md +53 -1
- package/dist/cjs/collab/index.js +27 -2
- package/dist/cjs/core-utils/document-logger.js +171 -0
- package/dist/cjs/core-utils/index.js +8 -1
- package/dist/cjs/extensibility/Extension/Extension/index.js +151 -0
- package/dist/cjs/extensibility/Extension/Extension/styles.js +17 -0
- package/dist/cjs/extensibility/Extension/InlineExtension/index.js +50 -0
- package/dist/cjs/extensibility/Extension/InlineExtension/styles.js +12 -0
- package/dist/cjs/extensibility/Extension/Lozenge.js +95 -0
- package/dist/cjs/extensibility/Extension/styles.js +30 -0
- package/dist/cjs/extensibility/Extension.js +79 -0
- package/dist/cjs/extensibility/ExtensionComponent.js +252 -0
- package/dist/cjs/extensibility/ExtensionNodeWrapper.js +21 -0
- package/dist/cjs/extensibility/MultiBodiedExtension/index.js +264 -0
- package/dist/cjs/extensibility/extensionNodeView.js +91 -0
- package/dist/cjs/extensibility/index.js +42 -0
- package/dist/cjs/extensibility/types.js +5 -0
- package/dist/cjs/i18n/cs.js +5 -2
- package/dist/cjs/i18n/da.js +5 -2
- package/dist/cjs/i18n/de.js +5 -2
- package/dist/cjs/i18n/en.js +7 -1
- package/dist/cjs/i18n/en_GB.js +8 -2
- package/dist/cjs/i18n/en_ZZ.js +8 -2
- package/dist/cjs/i18n/es.js +5 -2
- package/dist/cjs/i18n/fi.js +5 -2
- package/dist/cjs/i18n/fr.js +5 -2
- package/dist/cjs/i18n/hu.js +5 -2
- package/dist/cjs/i18n/it.js +5 -2
- package/dist/cjs/i18n/ja.js +1 -2
- package/dist/cjs/i18n/ko.js +5 -2
- package/dist/cjs/i18n/nb.js +1 -2
- package/dist/cjs/i18n/nl.js +5 -2
- package/dist/cjs/i18n/pl.js +5 -2
- package/dist/cjs/i18n/pt_BR.js +5 -2
- package/dist/cjs/i18n/ru.js +5 -2
- package/dist/cjs/i18n/sv.js +5 -2
- package/dist/cjs/i18n/th.js +5 -2
- package/dist/cjs/i18n/tr.js +5 -2
- package/dist/cjs/i18n/uk.js +5 -2
- package/dist/cjs/i18n/vi.js +5 -2
- package/dist/cjs/i18n/zh.js +5 -2
- package/dist/cjs/i18n/zh_TW.js +5 -2
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -1
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/index.js +1 -2
- package/dist/cjs/monitoring/error.js +3 -2
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/collab/index.js +54 -1
- package/dist/es2019/core-utils/document-logger.js +161 -0
- package/dist/es2019/core-utils/index.js +2 -1
- package/dist/es2019/extensibility/Extension/Extension/index.js +155 -0
- package/dist/es2019/extensibility/Extension/Extension/styles.js +42 -0
- package/dist/es2019/extensibility/Extension/InlineExtension/index.js +26 -0
- package/dist/es2019/extensibility/Extension/InlineExtension/styles.js +26 -0
- package/dist/es2019/extensibility/Extension/Lozenge.js +71 -0
- package/dist/es2019/extensibility/Extension/styles.js +62 -0
- package/dist/es2019/extensibility/Extension.js +52 -0
- package/dist/es2019/extensibility/ExtensionComponent.js +204 -0
- package/dist/es2019/extensibility/ExtensionNodeWrapper.js +13 -0
- package/dist/es2019/extensibility/MultiBodiedExtension/index.js +283 -0
- package/dist/es2019/extensibility/extensionNodeView.js +62 -0
- package/dist/es2019/extensibility/index.js +4 -0
- package/dist/es2019/extensibility/types.js +1 -0
- package/dist/es2019/i18n/cs.js +5 -2
- package/dist/es2019/i18n/da.js +5 -2
- package/dist/es2019/i18n/de.js +5 -2
- package/dist/es2019/i18n/en.js +7 -1
- package/dist/es2019/i18n/en_GB.js +8 -2
- package/dist/es2019/i18n/en_ZZ.js +8 -2
- package/dist/es2019/i18n/es.js +5 -2
- package/dist/es2019/i18n/fi.js +5 -2
- package/dist/es2019/i18n/fr.js +5 -2
- package/dist/es2019/i18n/hu.js +5 -2
- package/dist/es2019/i18n/it.js +5 -2
- package/dist/es2019/i18n/ja.js +1 -2
- package/dist/es2019/i18n/ko.js +5 -2
- package/dist/es2019/i18n/nb.js +1 -2
- package/dist/es2019/i18n/nl.js +5 -2
- package/dist/es2019/i18n/pl.js +5 -2
- package/dist/es2019/i18n/pt_BR.js +5 -2
- package/dist/es2019/i18n/ru.js +5 -2
- package/dist/es2019/i18n/sv.js +5 -2
- package/dist/es2019/i18n/th.js +5 -2
- package/dist/es2019/i18n/tr.js +5 -2
- package/dist/es2019/i18n/uk.js +5 -2
- package/dist/es2019/i18n/vi.js +5 -2
- package/dist/es2019/i18n/zh.js +5 -2
- package/dist/es2019/i18n/zh_TW.js +5 -2
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -1
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/index.js +1 -4
- package/dist/es2019/monitoring/error.js +3 -2
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/collab/index.js +23 -1
- package/dist/esm/core-utils/document-logger.js +165 -0
- package/dist/esm/core-utils/index.js +2 -1
- package/dist/esm/extensibility/Extension/Extension/index.js +146 -0
- package/dist/esm/extensibility/Extension/Extension/styles.js +10 -0
- package/dist/esm/extensibility/Extension/InlineExtension/index.js +43 -0
- package/dist/esm/extensibility/Extension/InlineExtension/styles.js +5 -0
- package/dist/esm/extensibility/Extension/Lozenge.js +90 -0
- package/dist/esm/extensibility/Extension/styles.js +11 -0
- package/dist/esm/extensibility/Extension.js +69 -0
- package/dist/esm/extensibility/ExtensionComponent.js +243 -0
- package/dist/esm/extensibility/ExtensionNodeWrapper.js +14 -0
- package/dist/esm/extensibility/MultiBodiedExtension/index.js +257 -0
- package/dist/esm/extensibility/extensionNodeView.js +83 -0
- package/dist/esm/extensibility/index.js +4 -0
- package/dist/esm/extensibility/types.js +1 -0
- package/dist/esm/i18n/cs.js +5 -2
- package/dist/esm/i18n/da.js +5 -2
- package/dist/esm/i18n/de.js +5 -2
- package/dist/esm/i18n/en.js +7 -1
- package/dist/esm/i18n/en_GB.js +8 -2
- package/dist/esm/i18n/en_ZZ.js +8 -2
- package/dist/esm/i18n/es.js +5 -2
- package/dist/esm/i18n/fi.js +5 -2
- package/dist/esm/i18n/fr.js +5 -2
- package/dist/esm/i18n/hu.js +5 -2
- package/dist/esm/i18n/it.js +5 -2
- package/dist/esm/i18n/ja.js +1 -2
- package/dist/esm/i18n/ko.js +5 -2
- package/dist/esm/i18n/nb.js +1 -2
- package/dist/esm/i18n/nl.js +5 -2
- package/dist/esm/i18n/pl.js +5 -2
- package/dist/esm/i18n/pt_BR.js +5 -2
- package/dist/esm/i18n/ru.js +5 -2
- package/dist/esm/i18n/sv.js +5 -2
- package/dist/esm/i18n/th.js +5 -2
- package/dist/esm/i18n/tr.js +5 -2
- package/dist/esm/i18n/uk.js +5 -2
- package/dist/esm/i18n/vi.js +5 -2
- package/dist/esm/i18n/zh.js +5 -2
- package/dist/esm/i18n/zh_TW.js +5 -2
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -1
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/index.js +1 -2
- package/dist/esm/monitoring/error.js +3 -2
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/collab/index.d.ts +7 -0
- package/dist/types/core-utils/document-logger.d.ts +6 -0
- package/dist/types/core-utils/index.d.ts +1 -0
- package/dist/types/extensibility/Extension/Extension/index.d.ts +108 -0
- package/dist/types/extensibility/Extension/Extension/styles.d.ts +5 -0
- package/dist/types/extensibility/Extension/InlineExtension/index.d.ts +12 -0
- package/dist/types/extensibility/Extension/InlineExtension/styles.d.ts +1 -0
- package/dist/types/extensibility/Extension/Lozenge.d.ts +14 -0
- package/dist/types/extensibility/Extension/styles.d.ts +7 -0
- package/dist/types/extensibility/Extension.d.ts +29 -0
- package/dist/types/extensibility/ExtensionComponent.d.ts +53 -0
- package/dist/types/extensibility/ExtensionNodeWrapper.d.ts +14 -0
- package/dist/types/extensibility/MultiBodiedExtension/index.d.ts +26 -0
- package/dist/types/extensibility/extensionNodeView.d.ts +31 -0
- package/dist/types/extensibility/index.d.ts +4 -0
- package/dist/types/extensibility/types.d.ts +6 -0
- package/dist/types/i18n/cs.d.ts +5 -2
- package/dist/types/i18n/da.d.ts +5 -2
- package/dist/types/i18n/de.d.ts +5 -2
- package/dist/types/i18n/en.d.ts +7 -1
- package/dist/types/i18n/en_GB.d.ts +7 -1
- package/dist/types/i18n/en_ZZ.d.ts +7 -1
- package/dist/types/i18n/es.d.ts +5 -2
- package/dist/types/i18n/fi.d.ts +5 -2
- package/dist/types/i18n/fr.d.ts +5 -2
- package/dist/types/i18n/hu.d.ts +5 -2
- package/dist/types/i18n/it.d.ts +5 -2
- package/dist/types/i18n/ja.d.ts +1 -2
- package/dist/types/i18n/ko.d.ts +5 -2
- package/dist/types/i18n/nb.d.ts +1 -2
- package/dist/types/i18n/nl.d.ts +5 -2
- package/dist/types/i18n/pl.d.ts +5 -2
- package/dist/types/i18n/pt_BR.d.ts +5 -2
- package/dist/types/i18n/ru.d.ts +5 -2
- package/dist/types/i18n/sv.d.ts +5 -2
- package/dist/types/i18n/th.d.ts +5 -2
- package/dist/types/i18n/tr.d.ts +5 -2
- package/dist/types/i18n/uk.d.ts +5 -2
- package/dist/types/i18n/vi.d.ts +5 -2
- package/dist/types/i18n/zh.d.ts +5 -2
- package/dist/types/i18n/zh_TW.d.ts +5 -2
- package/dist/types/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +7 -7
- package/dist/types/types/floating-toolbar.d.ts +1 -1
- package/dist/types/types/hyperlink.d.ts +1 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/types/next-editor-plugin.d.ts +0 -1
- package/dist/types/ui/DropList/index.d.ts +1 -1
- package/dist/types/ui/OverflowShadow/index.d.ts +1 -1
- package/dist/types/ui/with-outer-listeners.d.ts +2 -2
- package/dist/types/ui-menu/ColorPickerButton/index.d.ts +1 -1
- package/dist/types/ui-menu/ToolbarButton/index.d.ts +1 -1
- package/dist/types/ui-react/with-react-editor-view-outer-listeners.d.ts +2 -2
- package/dist/types-ts4.5/collab/index.d.ts +7 -0
- package/dist/types-ts4.5/core-utils/document-logger.d.ts +6 -0
- package/dist/types-ts4.5/core-utils/index.d.ts +1 -0
- package/dist/types-ts4.5/extensibility/Extension/Extension/index.d.ts +108 -0
- package/dist/types-ts4.5/extensibility/Extension/Extension/styles.d.ts +5 -0
- package/dist/types-ts4.5/extensibility/Extension/InlineExtension/index.d.ts +12 -0
- package/dist/types-ts4.5/extensibility/Extension/InlineExtension/styles.d.ts +1 -0
- package/dist/types-ts4.5/extensibility/Extension/Lozenge.d.ts +14 -0
- package/dist/types-ts4.5/extensibility/Extension/styles.d.ts +7 -0
- package/dist/types-ts4.5/extensibility/Extension.d.ts +29 -0
- package/dist/types-ts4.5/extensibility/ExtensionComponent.d.ts +53 -0
- package/dist/types-ts4.5/extensibility/ExtensionNodeWrapper.d.ts +14 -0
- package/dist/types-ts4.5/extensibility/MultiBodiedExtension/index.d.ts +26 -0
- package/dist/types-ts4.5/extensibility/extensionNodeView.d.ts +31 -0
- package/dist/types-ts4.5/extensibility/index.d.ts +4 -0
- package/dist/types-ts4.5/extensibility/types.d.ts +8 -0
- package/dist/types-ts4.5/i18n/cs.d.ts +5 -2
- package/dist/types-ts4.5/i18n/da.d.ts +5 -2
- package/dist/types-ts4.5/i18n/de.d.ts +5 -2
- package/dist/types-ts4.5/i18n/en.d.ts +7 -1
- package/dist/types-ts4.5/i18n/en_GB.d.ts +7 -1
- package/dist/types-ts4.5/i18n/en_ZZ.d.ts +7 -1
- package/dist/types-ts4.5/i18n/es.d.ts +5 -2
- package/dist/types-ts4.5/i18n/fi.d.ts +5 -2
- package/dist/types-ts4.5/i18n/fr.d.ts +5 -2
- package/dist/types-ts4.5/i18n/hu.d.ts +5 -2
- package/dist/types-ts4.5/i18n/it.d.ts +5 -2
- package/dist/types-ts4.5/i18n/ja.d.ts +1 -2
- package/dist/types-ts4.5/i18n/ko.d.ts +5 -2
- package/dist/types-ts4.5/i18n/nb.d.ts +1 -2
- package/dist/types-ts4.5/i18n/nl.d.ts +5 -2
- package/dist/types-ts4.5/i18n/pl.d.ts +5 -2
- package/dist/types-ts4.5/i18n/pt_BR.d.ts +5 -2
- package/dist/types-ts4.5/i18n/ru.d.ts +5 -2
- package/dist/types-ts4.5/i18n/sv.d.ts +5 -2
- package/dist/types-ts4.5/i18n/th.d.ts +5 -2
- package/dist/types-ts4.5/i18n/tr.d.ts +5 -2
- package/dist/types-ts4.5/i18n/uk.d.ts +5 -2
- package/dist/types-ts4.5/i18n/vi.d.ts +5 -2
- package/dist/types-ts4.5/i18n/zh.d.ts +5 -2
- package/dist/types-ts4.5/i18n/zh_TW.d.ts +5 -2
- package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +7 -7
- package/dist/types-ts4.5/types/floating-toolbar.d.ts +1 -1
- package/dist/types-ts4.5/types/hyperlink.d.ts +1 -0
- package/dist/types-ts4.5/types/index.d.ts +1 -1
- package/dist/types-ts4.5/types/next-editor-plugin.d.ts +0 -3
- package/dist/types-ts4.5/ui/DropList/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/OverflowShadow/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/with-outer-listeners.d.ts +2 -2
- package/dist/types-ts4.5/ui-menu/ColorPickerButton/index.d.ts +1 -1
- package/dist/types-ts4.5/ui-menu/ToolbarButton/index.d.ts +1 -1
- package/dist/types-ts4.5/ui-react/with-react-editor-view-outer-listeners.d.ts +2 -2
- package/extensibility/package.json +15 -0
- package/package.json +8 -7
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "BODIED_EXT_PADDING", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _styles.BODIED_EXT_PADDING;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.overlay = void 0;
|
|
14
|
+
Object.defineProperty(exports, "padding", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _styles.EXTENSION_PADDING;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
exports.wrapperDefault = exports.styledImage = exports.placeholderFallbackParams = exports.placeholderFallback = void 0;
|
|
21
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
22
|
+
var _react = require("@emotion/react");
|
|
23
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
24
|
+
var _styles = require("../../styles");
|
|
25
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
26
|
+
var wrapperDefault = exports.wrapperDefault = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n background: ", ";\n border-radius: ", ";\n position: relative;\n vertical-align: middle;\n\n .ProseMirror-selectednode > span > & > .extension-overlay {\n box-shadow: inset 0px 0px 0px 2px ", ";\n opacity: 1;\n }\n\n &.with-overlay {\n .extension-overlay {\n background: ", ";\n color: transparent;\n }\n\n &:hover .extension-overlay {\n opacity: 1;\n }\n }\n"])), "var(--ds-background-neutral, ".concat(_colors.N20, ")"), "var(--ds-border-radius, 3px)", "var(--ds-border-selected, ".concat(_colors.B200, ")"), "var(--ds-background-neutral-hovered, ".concat(_colors.N20A, ")"));
|
|
27
|
+
var overlay = exports.overlay = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n border-radius: ", ";\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s;\n"])), "var(--ds-border-radius, 3px)");
|
|
28
|
+
var placeholderFallback = exports.placeholderFallback = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n align-items: center;\n\n & > img {\n margin: 0 ", ";\n }\n /* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */\n /* stylelint-disable-next-line */\n label: placeholder-fallback;\n"])), "var(--ds-space-050, 4px)");
|
|
29
|
+
var placeholderFallbackParams = exports.placeholderFallbackParams = (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-block;\n max-width: 200px;\n margin-left: 5px;\n color: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), "var(--ds-text-subtlest, ".concat(_colors.N70, ")"));
|
|
30
|
+
var styledImage = exports.styledImage = (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n max-height: 16px;\n max-width: 16px;\n /* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */\n /* stylelint-disable-next-line */\n label: lozenge-image;\n"])));
|
|
@@ -0,0 +1,79 @@
|
|
|
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.Extension = 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 = _interopRequireWildcard(require("react"));
|
|
17
|
+
var _providerFactory = require("../provider-factory");
|
|
18
|
+
var _ExtensionComponent = require("./ExtensionComponent");
|
|
19
|
+
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); }
|
|
20
|
+
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; }
|
|
21
|
+
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); }; }
|
|
22
|
+
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; } }
|
|
23
|
+
var Extension = exports.Extension = /*#__PURE__*/function (_Component) {
|
|
24
|
+
(0, _inherits2.default)(Extension, _Component);
|
|
25
|
+
var _super = _createSuper(Extension);
|
|
26
|
+
function Extension(props) {
|
|
27
|
+
var _this;
|
|
28
|
+
(0, _classCallCheck2.default)(this, Extension);
|
|
29
|
+
_this = _super.call(this, props);
|
|
30
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderWithProvider", function (_ref) {
|
|
31
|
+
var extensionProvider = _ref.extensionProvider;
|
|
32
|
+
var _this$props = _this.props,
|
|
33
|
+
node = _this$props.node,
|
|
34
|
+
getPos = _this$props.getPos,
|
|
35
|
+
editorView = _this$props.editorView,
|
|
36
|
+
handleContentDOMRef = _this$props.handleContentDOMRef,
|
|
37
|
+
extensionHandlers = _this$props.extensionHandlers,
|
|
38
|
+
references = _this$props.references,
|
|
39
|
+
editorAppearance = _this$props.editorAppearance,
|
|
40
|
+
pluginInjectionApi = _this$props.pluginInjectionApi,
|
|
41
|
+
eventDispatcher = _this$props.eventDispatcher;
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement(_ExtensionComponent.ExtensionComponent, {
|
|
43
|
+
editorView: editorView,
|
|
44
|
+
node: node,
|
|
45
|
+
getPos: getPos,
|
|
46
|
+
references: references,
|
|
47
|
+
extensionProvider: extensionProvider,
|
|
48
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
49
|
+
extensionHandlers: extensionHandlers,
|
|
50
|
+
editorAppearance: editorAppearance,
|
|
51
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
52
|
+
eventDispatcher: eventDispatcher
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
_this.providerFactory = props.providerFactory || new _providerFactory.ProviderFactory();
|
|
56
|
+
return _this;
|
|
57
|
+
}
|
|
58
|
+
(0, _createClass2.default)(Extension, [{
|
|
59
|
+
key: "componentWillUnmount",
|
|
60
|
+
value: function componentWillUnmount() {
|
|
61
|
+
if (!this.props.providerFactory) {
|
|
62
|
+
// new ProviderFactory is created if no `providers` has been set
|
|
63
|
+
// in this case when component is unmounted it's safe to destroy this providerFactory
|
|
64
|
+
this.providerFactory.destroy();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "render",
|
|
69
|
+
value: function render() {
|
|
70
|
+
return /*#__PURE__*/_react.default.createElement(_providerFactory.WithProviders, {
|
|
71
|
+
providers: ['extensionProvider'],
|
|
72
|
+
providerFactory: this.providerFactory,
|
|
73
|
+
renderNode: this.renderWithProvider
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}]);
|
|
77
|
+
return Extension;
|
|
78
|
+
}(_react.Component);
|
|
79
|
+
(0, _defineProperty2.default)(Extension, "displayName", 'Extension');
|
|
@@ -0,0 +1,252 @@
|
|
|
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.ExtensionComponent = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
16
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
17
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
20
|
+
var _extensions = require("../extensions");
|
|
21
|
+
var _utils = require("../utils");
|
|
22
|
+
var _Extension = _interopRequireDefault(require("./Extension/Extension"));
|
|
23
|
+
var _InlineExtension = _interopRequireDefault(require("./Extension/InlineExtension"));
|
|
24
|
+
var _MultiBodiedExtension = _interopRequireDefault(require("./MultiBodiedExtension"));
|
|
25
|
+
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); }
|
|
26
|
+
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; }
|
|
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
|
+
var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Component) {
|
|
30
|
+
(0, _inherits2.default)(ExtensionComponent, _Component);
|
|
31
|
+
var _super = _createSuper(ExtensionComponent);
|
|
32
|
+
function ExtensionComponent() {
|
|
33
|
+
var _this;
|
|
34
|
+
(0, _classCallCheck2.default)(this, ExtensionComponent);
|
|
35
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
36
|
+
args[_key] = arguments[_key];
|
|
37
|
+
}
|
|
38
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
39
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "privatePropsParsed", false);
|
|
40
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {});
|
|
41
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mounted", false);
|
|
42
|
+
// memoized to avoid rerender on extension state changes
|
|
43
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getNodeRenderer", (0, _memoizeOne.default)(_extensions.getNodeRenderer));
|
|
44
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getExtensionModuleNodePrivateProps", (0, _memoizeOne.default)(_extensions.getExtensionModuleNodePrivateProps));
|
|
45
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setStateFromPromise", function (stateKey, promise) {
|
|
46
|
+
promise && promise.then(function (p) {
|
|
47
|
+
if (!_this.mounted) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
_this.setState((0, _defineProperty2.default)({}, stateKey, p));
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Parses any private nodes once an extension provider is available.
|
|
55
|
+
*
|
|
56
|
+
* We do this separately from resolving a node renderer component since the
|
|
57
|
+
* private props come from extension provider, rather than an extension
|
|
58
|
+
* handler which only handles `render`/component concerns.
|
|
59
|
+
*/
|
|
60
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parsePrivateNodePropsIfNeeded", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
61
|
+
var _this$props$node$attr, extensionType, extensionKey, privateProps;
|
|
62
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
63
|
+
while (1) switch (_context.prev = _context.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
if (!(_this.privatePropsParsed || !_this.state.extensionProvider)) {
|
|
66
|
+
_context.next = 2;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return _context.abrupt("return");
|
|
70
|
+
case 2:
|
|
71
|
+
_this.privatePropsParsed = true;
|
|
72
|
+
_this$props$node$attr = _this.props.node.attrs, extensionType = _this$props$node$attr.extensionType, extensionKey = _this$props$node$attr.extensionKey;
|
|
73
|
+
/**
|
|
74
|
+
* getExtensionModuleNodePrivateProps can throw if there are issues in the
|
|
75
|
+
* manifest
|
|
76
|
+
*/
|
|
77
|
+
_context.prev = 4;
|
|
78
|
+
_context.next = 7;
|
|
79
|
+
return _this.getExtensionModuleNodePrivateProps(_this.state.extensionProvider, extensionType, extensionKey);
|
|
80
|
+
case 7:
|
|
81
|
+
privateProps = _context.sent;
|
|
82
|
+
_this.setState({
|
|
83
|
+
_privateProps: privateProps
|
|
84
|
+
});
|
|
85
|
+
_context.next = 14;
|
|
86
|
+
break;
|
|
87
|
+
case 11:
|
|
88
|
+
_context.prev = 11;
|
|
89
|
+
_context.t0 = _context["catch"](4);
|
|
90
|
+
// eslint-disable-next-line no-console
|
|
91
|
+
console.error('Provided extension handler has thrown an error\n', _context.t0);
|
|
92
|
+
/** We don't want this error to block renderer */
|
|
93
|
+
/** We keep rendering the default content */
|
|
94
|
+
case 14:
|
|
95
|
+
case "end":
|
|
96
|
+
return _context.stop();
|
|
97
|
+
}
|
|
98
|
+
}, _callee, null, [[4, 11]]);
|
|
99
|
+
})));
|
|
100
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleExtension", function (pmNode, actions) {
|
|
101
|
+
var _pmNode$marks;
|
|
102
|
+
var _this$props = _this.props,
|
|
103
|
+
extensionHandlers = _this$props.extensionHandlers,
|
|
104
|
+
editorView = _this$props.editorView;
|
|
105
|
+
var _pmNode$attrs = pmNode.attrs,
|
|
106
|
+
extensionType = _pmNode$attrs.extensionType,
|
|
107
|
+
extensionKey = _pmNode$attrs.extensionKey,
|
|
108
|
+
parameters = _pmNode$attrs.parameters,
|
|
109
|
+
text = _pmNode$attrs.text;
|
|
110
|
+
var isBodiedExtension = pmNode.type.name === 'bodiedExtension';
|
|
111
|
+
if (isBodiedExtension) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
var fragmentLocalId = pmNode === null || pmNode === void 0 || (_pmNode$marks = pmNode.marks) === null || _pmNode$marks === void 0 || (_pmNode$marks = _pmNode$marks.find(function (m) {
|
|
115
|
+
return m.type.name === 'fragment';
|
|
116
|
+
})) === null || _pmNode$marks === void 0 || (_pmNode$marks = _pmNode$marks.attrs) === null || _pmNode$marks === void 0 ? void 0 : _pmNode$marks.localId;
|
|
117
|
+
var node = {
|
|
118
|
+
type: pmNode.type.name,
|
|
119
|
+
extensionType: extensionType,
|
|
120
|
+
extensionKey: extensionKey,
|
|
121
|
+
parameters: parameters,
|
|
122
|
+
content: text,
|
|
123
|
+
localId: pmNode.attrs.localId,
|
|
124
|
+
fragmentLocalId: fragmentLocalId
|
|
125
|
+
};
|
|
126
|
+
var result;
|
|
127
|
+
if (extensionHandlers && extensionHandlers[extensionType]) {
|
|
128
|
+
var render = (0, _utils.getExtensionRenderer)(extensionHandlers[extensionType]);
|
|
129
|
+
result = render(node, editorView.state.doc, actions);
|
|
130
|
+
}
|
|
131
|
+
if (!result) {
|
|
132
|
+
var extensionHandlerFromProvider = _this.state.extensionProvider && _this.getNodeRenderer(_this.state.extensionProvider, extensionType, extensionKey);
|
|
133
|
+
if (extensionHandlerFromProvider) {
|
|
134
|
+
var NodeRenderer = extensionHandlerFromProvider;
|
|
135
|
+
if (node.type === 'multiBodiedExtension') {
|
|
136
|
+
return /*#__PURE__*/_react.default.createElement(NodeRenderer, {
|
|
137
|
+
node: node,
|
|
138
|
+
references: _this.props.references,
|
|
139
|
+
actions: actions
|
|
140
|
+
});
|
|
141
|
+
} else {
|
|
142
|
+
return /*#__PURE__*/_react.default.createElement(NodeRenderer, {
|
|
143
|
+
node: node,
|
|
144
|
+
references: _this.props.references
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
});
|
|
151
|
+
return _this;
|
|
152
|
+
}
|
|
153
|
+
(0, _createClass2.default)(ExtensionComponent, [{
|
|
154
|
+
key: "UNSAFE_componentWillMount",
|
|
155
|
+
value: function UNSAFE_componentWillMount() {
|
|
156
|
+
this.mounted = true;
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
key: "componentDidMount",
|
|
160
|
+
value: function componentDidMount() {
|
|
161
|
+
var extensionProvider = this.props.extensionProvider;
|
|
162
|
+
if (extensionProvider) {
|
|
163
|
+
this.setStateFromPromise('extensionProvider', extensionProvider);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}, {
|
|
167
|
+
key: "componentDidUpdate",
|
|
168
|
+
value: function componentDidUpdate() {
|
|
169
|
+
this.parsePrivateNodePropsIfNeeded();
|
|
170
|
+
}
|
|
171
|
+
}, {
|
|
172
|
+
key: "componentWillUnmount",
|
|
173
|
+
value: function componentWillUnmount() {
|
|
174
|
+
this.mounted = false;
|
|
175
|
+
}
|
|
176
|
+
}, {
|
|
177
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
178
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
179
|
+
var extensionProvider = nextProps.extensionProvider;
|
|
180
|
+
if (extensionProvider && this.props.extensionProvider !== extensionProvider) {
|
|
181
|
+
this.setStateFromPromise('extensionProvider', extensionProvider);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "render",
|
|
186
|
+
value: function render() {
|
|
187
|
+
var _this$state$_privateP;
|
|
188
|
+
var _this$props2 = this.props,
|
|
189
|
+
node = _this$props2.node,
|
|
190
|
+
handleContentDOMRef = _this$props2.handleContentDOMRef,
|
|
191
|
+
editorView = _this$props2.editorView,
|
|
192
|
+
references = _this$props2.references,
|
|
193
|
+
editorAppearance = _this$props2.editorAppearance,
|
|
194
|
+
pluginInjectionApi = _this$props2.pluginInjectionApi,
|
|
195
|
+
getPos = _this$props2.getPos,
|
|
196
|
+
eventDispatcher = _this$props2.eventDispatcher;
|
|
197
|
+
if (node.type.name === 'multiBodiedExtension') {
|
|
198
|
+
return /*#__PURE__*/_react.default.createElement(_MultiBodiedExtension.default, {
|
|
199
|
+
node: node,
|
|
200
|
+
editorView: editorView,
|
|
201
|
+
getPos: getPos,
|
|
202
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
203
|
+
tryExtensionHandler: this.tryExtensionHandler.bind(this),
|
|
204
|
+
eventDispatcher: eventDispatcher,
|
|
205
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
206
|
+
editorAppearance: editorAppearance
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
var extensionHandlerResult = this.tryExtensionHandler(undefined);
|
|
210
|
+
switch (node.type.name) {
|
|
211
|
+
case 'extension':
|
|
212
|
+
case 'bodiedExtension':
|
|
213
|
+
return /*#__PURE__*/_react.default.createElement(_Extension.default, {
|
|
214
|
+
node: node,
|
|
215
|
+
getPos: this.props.getPos,
|
|
216
|
+
references: references,
|
|
217
|
+
extensionProvider: this.state.extensionProvider,
|
|
218
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
219
|
+
view: editorView,
|
|
220
|
+
editorAppearance: editorAppearance,
|
|
221
|
+
hideFrame: (_this$state$_privateP = this.state._privateProps) === null || _this$state$_privateP === void 0 ? void 0 : _this$state$_privateP.__hideFrame,
|
|
222
|
+
pluginInjectionApi: pluginInjectionApi
|
|
223
|
+
}, extensionHandlerResult);
|
|
224
|
+
case 'inlineExtension':
|
|
225
|
+
return /*#__PURE__*/_react.default.createElement(_InlineExtension.default, {
|
|
226
|
+
node: node
|
|
227
|
+
}, extensionHandlerResult);
|
|
228
|
+
default:
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
233
|
+
key: "tryExtensionHandler",
|
|
234
|
+
value: function tryExtensionHandler(actions) {
|
|
235
|
+
var node = this.props.node;
|
|
236
|
+
try {
|
|
237
|
+
var extensionContent = this.handleExtension(node, actions);
|
|
238
|
+
if (extensionContent && /*#__PURE__*/_react.default.isValidElement(extensionContent)) {
|
|
239
|
+
return extensionContent;
|
|
240
|
+
}
|
|
241
|
+
} catch (e) {
|
|
242
|
+
// eslint-disable-next-line no-console
|
|
243
|
+
console.error('Provided extension handler has thrown an error\n', e);
|
|
244
|
+
/** We don't want this error to block renderer */
|
|
245
|
+
/** We keep rendering the default content */
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}]);
|
|
251
|
+
return ExtensionComponent;
|
|
252
|
+
}(_react.Component);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ExtensionNodeWrapper = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _utils = require("../utils");
|
|
10
|
+
/**
|
|
11
|
+
* If inlineExtension, add zero width space to the end of the nodes and wrap with span;
|
|
12
|
+
* else wrap with a div (for multi bodied extensions)
|
|
13
|
+
*
|
|
14
|
+
* @param param0
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
var ExtensionNodeWrapper = exports.ExtensionNodeWrapper = function ExtensionNodeWrapper(_ref) {
|
|
18
|
+
var children = _ref.children,
|
|
19
|
+
nodeType = _ref.nodeType;
|
|
20
|
+
return /*#__PURE__*/_react.default.createElement("span", null, children, nodeType === 'inlineExtension' && _utils.ZERO_WIDTH_SPACE);
|
|
21
|
+
};
|
|
@@ -0,0 +1,264 @@
|
|
|
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 = void 0;
|
|
9
|
+
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _react2 = require("@emotion/react");
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
+
var _analytics = require("../../analytics");
|
|
18
|
+
var _eventDispatcher = require("../../event-dispatcher");
|
|
19
|
+
var _hooks = require("../../hooks");
|
|
20
|
+
var _utils = require("../../utils");
|
|
21
|
+
var _withPluginState = require("../../with-plugin-state");
|
|
22
|
+
var _templateObject, _templateObject2;
|
|
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(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
26
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */
|
|
27
|
+
var useMultiBodiedExtensionActions = function useMultiBodiedExtensionActions(_ref) {
|
|
28
|
+
var updateActiveChild = _ref.updateActiveChild,
|
|
29
|
+
editorView = _ref.editorView,
|
|
30
|
+
getPos = _ref.getPos,
|
|
31
|
+
node = _ref.node,
|
|
32
|
+
eventDispatcher = _ref.eventDispatcher;
|
|
33
|
+
var actions = _react.default.useMemo(function () {
|
|
34
|
+
return {
|
|
35
|
+
changeActive: function changeActive(index) {
|
|
36
|
+
var updateActiveChildResult = updateActiveChild(index);
|
|
37
|
+
if (eventDispatcher) {
|
|
38
|
+
sendMBEAnalyticsEvent(_analytics.ACTION.CHANGE_ACTIVE, node, eventDispatcher);
|
|
39
|
+
}
|
|
40
|
+
return updateActiveChildResult;
|
|
41
|
+
},
|
|
42
|
+
addChild: function addChild() {
|
|
43
|
+
var state = editorView.state,
|
|
44
|
+
dispatch = editorView.dispatch;
|
|
45
|
+
if (node.content.childCount >= node.attrs.maxFrames) {
|
|
46
|
+
throw new Error("Cannot add more than ".concat(node.attrs.maxFrames, " frames"));
|
|
47
|
+
}
|
|
48
|
+
var p = state.schema.nodes.paragraph.createAndFill({});
|
|
49
|
+
if (!p) {
|
|
50
|
+
throw new Error('Could not create paragraph');
|
|
51
|
+
}
|
|
52
|
+
var frame = state.schema.nodes.extensionFrame.createAndFill({}, [p]);
|
|
53
|
+
var pos = getPos();
|
|
54
|
+
if (typeof pos !== 'number' || !frame) {
|
|
55
|
+
throw new Error('Could not create frame or position not valid');
|
|
56
|
+
}
|
|
57
|
+
var insertAt = Math.min((pos || 1) + node.content.size, state.doc.content.size);
|
|
58
|
+
dispatch(state.tr.insert(insertAt, frame));
|
|
59
|
+
if (eventDispatcher) {
|
|
60
|
+
sendMBEAnalyticsEvent(_analytics.ACTION.ADD_CHILD, node, eventDispatcher);
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
},
|
|
64
|
+
getChildrenCount: function getChildrenCount() {
|
|
65
|
+
return node.content.childCount;
|
|
66
|
+
},
|
|
67
|
+
removeChild: function removeChild(index) {
|
|
68
|
+
var pos = getPos();
|
|
69
|
+
// TODO: Add child index validation here, don't trust this data
|
|
70
|
+
if (typeof pos !== 'number' || typeof index !== 'number') {
|
|
71
|
+
throw new Error('Position or index not valid');
|
|
72
|
+
}
|
|
73
|
+
var state = editorView.state,
|
|
74
|
+
dispatch = editorView.dispatch;
|
|
75
|
+
if (node.content.childCount === 1) {
|
|
76
|
+
var _tr = state.tr;
|
|
77
|
+
_tr.deleteRange(pos, pos + node.content.size);
|
|
78
|
+
dispatch(_tr);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
var $pos = state.doc.resolve(pos);
|
|
82
|
+
var $startNodePos = state.doc.resolve($pos.start($pos.depth + 1));
|
|
83
|
+
var startFramePosition = $startNodePos.posAtIndex(index);
|
|
84
|
+
var maybeFrameNode = state.doc.nodeAt(startFramePosition);
|
|
85
|
+
if (!maybeFrameNode) {
|
|
86
|
+
throw new Error('Could not find frame node');
|
|
87
|
+
}
|
|
88
|
+
var endFramePosition = maybeFrameNode.content.size + startFramePosition;
|
|
89
|
+
var tr = state.tr;
|
|
90
|
+
tr.deleteRange(startFramePosition, endFramePosition);
|
|
91
|
+
dispatch(tr);
|
|
92
|
+
if (eventDispatcher) {
|
|
93
|
+
sendMBEAnalyticsEvent(_analytics.ACTION.REMOVE_CHILD, node, eventDispatcher);
|
|
94
|
+
}
|
|
95
|
+
return true;
|
|
96
|
+
},
|
|
97
|
+
updateParameters: function updateParameters(parameters) {
|
|
98
|
+
var state = editorView.state,
|
|
99
|
+
dispatch = editorView.dispatch;
|
|
100
|
+
var pos = getPos();
|
|
101
|
+
if (typeof pos !== 'number') {
|
|
102
|
+
throw new Error('Position not valid');
|
|
103
|
+
}
|
|
104
|
+
var tr = state.tr.setNodeMarkup(pos, undefined, _objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
105
|
+
parameters: _objectSpread(_objectSpread({}, node.attrs.parameters), {}, {
|
|
106
|
+
macroParams: parameters
|
|
107
|
+
})
|
|
108
|
+
}));
|
|
109
|
+
dispatch(tr);
|
|
110
|
+
if (eventDispatcher) {
|
|
111
|
+
sendMBEAnalyticsEvent(_analytics.ACTION.UPDATE_PARAMETERS, node, eventDispatcher);
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
},
|
|
115
|
+
getChildren: function getChildren() {
|
|
116
|
+
var _state$doc$nodeAt;
|
|
117
|
+
var state = editorView.state;
|
|
118
|
+
var pos = getPos();
|
|
119
|
+
if (typeof pos !== 'number') {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
var children = (_state$doc$nodeAt = state.doc.nodeAt(pos)) === null || _state$doc$nodeAt === void 0 ? void 0 : _state$doc$nodeAt.content;
|
|
123
|
+
if (eventDispatcher) {
|
|
124
|
+
sendMBEAnalyticsEvent(_analytics.ACTION.GET_CHILDERN, node, eventDispatcher);
|
|
125
|
+
}
|
|
126
|
+
return children ? children.toJSON() : [];
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}, [node, editorView, getPos, updateActiveChild, eventDispatcher]);
|
|
130
|
+
return actions;
|
|
131
|
+
};
|
|
132
|
+
var navigationCSS = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n // make sure the user can't see a range selection inside the navigation\n // This is really important to keep the navigation working properly\n user-select: none;\n -webkit-user-modify: read-only;\n border: 1px solid ", ";\n"])), "var(--ds-border, ".concat(_colors.N40, ")"));
|
|
133
|
+
var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref2) {
|
|
134
|
+
var node = _ref2.node,
|
|
135
|
+
handleContentDOMRef = _ref2.handleContentDOMRef,
|
|
136
|
+
getPos = _ref2.getPos,
|
|
137
|
+
tryExtensionHandler = _ref2.tryExtensionHandler,
|
|
138
|
+
editorView = _ref2.editorView,
|
|
139
|
+
eventDispatcher = _ref2.eventDispatcher,
|
|
140
|
+
widthState = _ref2.widthState,
|
|
141
|
+
editorAppearance = _ref2.editorAppearance;
|
|
142
|
+
var _useState = (0, _react.useState)(0),
|
|
143
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
144
|
+
activeChildIndex = _useState2[0],
|
|
145
|
+
setActiveChildIndex = _useState2[1];
|
|
146
|
+
// Adding to avoid aliasing `this` for the callbacks
|
|
147
|
+
var updateActiveChild = _react.default.useCallback(function (index) {
|
|
148
|
+
if (typeof index !== 'number') {
|
|
149
|
+
setActiveChildIndex(0);
|
|
150
|
+
throw new Error('Index is not valid');
|
|
151
|
+
}
|
|
152
|
+
setActiveChildIndex(index);
|
|
153
|
+
return true;
|
|
154
|
+
}, [setActiveChildIndex]);
|
|
155
|
+
var actions = useMultiBodiedExtensionActions({
|
|
156
|
+
updateActiveChild: updateActiveChild,
|
|
157
|
+
editorView: editorView,
|
|
158
|
+
getPos: getPos,
|
|
159
|
+
eventDispatcher: eventDispatcher,
|
|
160
|
+
node: node
|
|
161
|
+
});
|
|
162
|
+
var extensionHandlerResult = _react.default.useMemo(function () {
|
|
163
|
+
return tryExtensionHandler(actions);
|
|
164
|
+
}, [tryExtensionHandler, actions]);
|
|
165
|
+
var articleRef = _react.default.useCallback(function (node) {
|
|
166
|
+
return handleContentDOMRef(node);
|
|
167
|
+
}, [handleContentDOMRef]);
|
|
168
|
+
var containerCSS = (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n border: 1px solid ", ";\n min-height: 100px;\n .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true'] {\n display: none;\n }\n\n .multiBodiedExtension-content-dom-wrapper\n > [data-extension-frame='true']:nth-of-type(", ") {\n border: 1px solid ", ";\n display: block;\n min-height: 100px;\n }\n "])), "var(--ds-border, ".concat(_colors.N30, ")"), activeChildIndex + 1, "var(--ds-border, ".concat(_colors.N50, ")"));
|
|
169
|
+
var shouldBreakout =
|
|
170
|
+
// Extension should breakout when the layout is set to 'full-width' or 'wide'.
|
|
171
|
+
['full-width', 'wide'].includes(node.attrs.layout) &&
|
|
172
|
+
// Extension breakout state should not be respected when the editor appearance is full-width mode
|
|
173
|
+
editorAppearance !== 'full-width';
|
|
174
|
+
var mbeContainerStyles = {};
|
|
175
|
+
if (shouldBreakout) {
|
|
176
|
+
var _calculateBreakoutSty = (0, _utils.calculateBreakoutStyles)({
|
|
177
|
+
mode: node.attrs.layout,
|
|
178
|
+
widthStateLineLength: widthState === null || widthState === void 0 ? void 0 : widthState.lineLength,
|
|
179
|
+
widthStateWidth: widthState === null || widthState === void 0 ? void 0 : widthState.width
|
|
180
|
+
}),
|
|
181
|
+
breakoutStyles = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_calculateBreakoutSty), _calculateBreakoutSty));
|
|
182
|
+
mbeContainerStyles = breakoutStyles;
|
|
183
|
+
}
|
|
184
|
+
return (0, _react2.jsx)("section", {
|
|
185
|
+
className: "multiBodiedExtension--container",
|
|
186
|
+
css: containerCSS,
|
|
187
|
+
"data-testid": "multiBodiedExtension--container",
|
|
188
|
+
"data-active-child-index": activeChildIndex,
|
|
189
|
+
style: mbeContainerStyles
|
|
190
|
+
}, (0, _react2.jsx)("nav", {
|
|
191
|
+
className: "multiBodiedExtension-navigation",
|
|
192
|
+
css: navigationCSS,
|
|
193
|
+
"data-testid": "multiBodiedExtension-navigation"
|
|
194
|
+
}, extensionHandlerResult), (0, _react2.jsx)("article", {
|
|
195
|
+
className: "multiBodiedExtension--frames",
|
|
196
|
+
"data-testid": "multiBodiedExtension--frames",
|
|
197
|
+
ref: articleRef
|
|
198
|
+
}));
|
|
199
|
+
};
|
|
200
|
+
var sendMBEAnalyticsEvent = function sendMBEAnalyticsEvent(action, node, eventDispatcher) {
|
|
201
|
+
var analyticsDispatch = (0, _eventDispatcher.createDispatch)(eventDispatcher);
|
|
202
|
+
analyticsDispatch(_utils.analyticsEventKey, {
|
|
203
|
+
payload: {
|
|
204
|
+
action: action,
|
|
205
|
+
actionSubject: _analytics.ACTION_SUBJECT.MULTI_BODIED_EXTENSION,
|
|
206
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
207
|
+
attributes: {
|
|
208
|
+
extensionType: node.attrs.extensionType,
|
|
209
|
+
extensionKey: node.attrs.extensionKey,
|
|
210
|
+
localId: node.attrs.localId,
|
|
211
|
+
maxFramesCount: node.attrs.maxFrames,
|
|
212
|
+
currentFramesCount: node.content.childCount
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
var MultiBodiedExtensionWithSharedState = function MultiBodiedExtensionWithSharedState(props) {
|
|
218
|
+
var pluginInjectionApi = props.pluginInjectionApi;
|
|
219
|
+
var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['width']),
|
|
220
|
+
widthState = _useSharedPluginState.widthState;
|
|
221
|
+
return (0, _react2.jsx)(MultiBodiedExtensionWithWidth, (0, _extends2.default)({
|
|
222
|
+
widthState: widthState
|
|
223
|
+
}, props));
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// Workaround taken from platform/packages/editor/editor-core/src/plugins/extension/ui/Extension/Extension/index.tsx
|
|
227
|
+
var MultiBodiedExtension = function MultiBodiedExtension(props) {
|
|
228
|
+
// TODO: ED-17836 This code is here because confluence injects
|
|
229
|
+
// the `editor-referentiality` plugin via `dangerouslyAppendPlugins`
|
|
230
|
+
// which cannot access the `pluginInjectionApi`. When we move
|
|
231
|
+
// Confluence to using presets we can remove this workaround.
|
|
232
|
+
var pluginInjectionApi = props.pluginInjectionApi;
|
|
233
|
+
return pluginInjectionApi === undefined ? (0, _react2.jsx)(MultiBodiedExtensionDeprecated, props) : (0, _react2.jsx)(MultiBodiedExtensionWithSharedState, props);
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
// TODO: ED-17836 This code is here because Confluence injects
|
|
237
|
+
// the `editor-referentiality` plugin via `dangerouslyAppendPlugins`
|
|
238
|
+
// which cannot access the `pluginInjectionApi`. When we move
|
|
239
|
+
// Confluence to using presets we can remove this workaround.
|
|
240
|
+
// @ts-ignore
|
|
241
|
+
var widthPluginKey = {
|
|
242
|
+
key: 'widthPlugin$',
|
|
243
|
+
getState: function getState(state) {
|
|
244
|
+
return state['widthPlugin$'];
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
var MultiBodiedExtensionDeprecated = function MultiBodiedExtensionDeprecated(props) {
|
|
248
|
+
return (0, _react2.jsx)(_withPluginState.WithPluginState, {
|
|
249
|
+
editorView: props.editorView,
|
|
250
|
+
plugins: {
|
|
251
|
+
widthState: widthPluginKey
|
|
252
|
+
},
|
|
253
|
+
render: function render(_ref3) {
|
|
254
|
+
var widthState = _ref3.widthState;
|
|
255
|
+
return (0, _react2.jsx)(MultiBodiedExtensionWithWidth, (0, _extends2.default)({
|
|
256
|
+
widthState: widthState
|
|
257
|
+
}, props));
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* End workaround
|
|
263
|
+
*/
|
|
264
|
+
var _default = exports.default = MultiBodiedExtension;
|