@atlaskit/editor-common 84.5.1 → 85.0.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 +22 -0
- package/dist/cjs/analytics/types/enums.js +2 -0
- package/dist/cjs/extensibility/extensionNodeView.js +1 -2
- package/dist/cjs/keymaps/keymap.js +25 -43
- package/dist/cjs/link/ConfigureLinkOverlay/Dropdown.js +34 -9
- package/dist/cjs/link/ConfigureLinkOverlay/index.js +15 -5
- package/dist/cjs/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +46 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/react-node-view/getInlineNodeViewProducer.js +2 -4
- package/dist/cjs/react-node-view/index.js +4 -10
- package/dist/cjs/selection-based-node-view/SelectionBasedNodeView.js +2 -5
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/analytics/types/enums.js +2 -0
- package/dist/es2019/extensibility/extensionNodeView.js +1 -2
- package/dist/es2019/keymaps/keymap.js +25 -43
- package/dist/es2019/link/ConfigureLinkOverlay/Dropdown.js +33 -7
- package/dist/es2019/link/ConfigureLinkOverlay/index.js +16 -5
- package/dist/es2019/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +39 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/react-node-view/getInlineNodeViewProducer.js +2 -4
- package/dist/es2019/react-node-view/index.js +5 -7
- package/dist/es2019/selection-based-node-view/SelectionBasedNodeView.js +3 -2
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/analytics/types/enums.js +2 -0
- package/dist/esm/extensibility/extensionNodeView.js +1 -2
- package/dist/esm/keymaps/keymap.js +25 -43
- package/dist/esm/link/ConfigureLinkOverlay/Dropdown.js +34 -9
- package/dist/esm/link/ConfigureLinkOverlay/index.js +15 -5
- package/dist/esm/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.js +40 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/react-node-view/getInlineNodeViewProducer.js +2 -4
- package/dist/esm/react-node-view/index.js +4 -10
- package/dist/esm/selection-based-node-view/SelectionBasedNodeView.js +3 -5
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/analytics/types/enums.d.ts +3 -1
- package/dist/types/extensibility/extensionNodeView.d.ts +1 -2
- package/dist/types/link/ConfigureLinkOverlay/Dropdown.d.ts +5 -4
- package/dist/types/link/ConfigureLinkOverlay/index.d.ts +2 -2
- package/dist/types/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.d.ts +5 -0
- package/dist/types/react-node-view/index.d.ts +2 -5
- package/dist/types/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -2
- package/dist/types/types/plugin-factory.d.ts +1 -2
- package/dist/types-ts4.5/analytics/types/enums.d.ts +3 -1
- package/dist/types-ts4.5/extensibility/extensionNodeView.d.ts +1 -2
- package/dist/types-ts4.5/link/ConfigureLinkOverlay/Dropdown.d.ts +5 -4
- package/dist/types-ts4.5/link/ConfigureLinkOverlay/index.d.ts +2 -2
- package/dist/types-ts4.5/link/ConfigureLinkOverlay/useLinkOverlayAnalyticsEvents.d.ts +5 -0
- package/dist/types-ts4.5/react-node-view/index.d.ts +2 -5
- package/dist/types-ts4.5/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -2
- package/dist/types-ts4.5/types/plugin-factory.d.ts +1 -2
- package/package.json +3 -8
- package/dist/cjs/ui/PortalProvider/index.js +0 -235
- package/dist/es2019/ui/PortalProvider/index.js +0 -171
- package/dist/esm/ui/PortalProvider/index.js +0 -229
- package/dist/types/ui/PortalProvider/index.d.ts +0 -48
- package/dist/types-ts4.5/ui/PortalProvider/index.d.ts +0 -48
- package/portal-provider/package.json +0 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 85.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#119966](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119966)
|
|
8
|
+
[`596ad24e38929`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/596ad24e38929) -
|
|
9
|
+
Clean up typescript references to LegacyPortalProviderAPI
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#120060](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/120060)
|
|
14
|
+
[`932c75860b5c2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/932c75860b5c2) -
|
|
15
|
+
Add card plugin analytics for live pages
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#119412](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/119412)
|
|
20
|
+
[`a714be7c47d68`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a714be7c47d68) -
|
|
21
|
+
[ux] [ED-23047] Remove FF platform.editor.text-alignment-keyboard-shortcuts and make feature
|
|
22
|
+
flagged functionality default
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
|
|
3
25
|
## 84.5.1
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
|
@@ -241,6 +241,7 @@ var ACTION_SUBJECT = exports.ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJ
|
|
|
241
241
|
ACTION_SUBJECT["DRAG"] = "drag";
|
|
242
242
|
ACTION_SUBJECT["ELEMENT"] = "element";
|
|
243
243
|
ACTION_SUBJECT["CONTEXT_MENU"] = "contextMenu";
|
|
244
|
+
ACTION_SUBJECT["INLINE_DIALOG"] = "inlineDialog";
|
|
244
245
|
return ACTION_SUBJECT;
|
|
245
246
|
}({});
|
|
246
247
|
var ACTION_SUBJECT_ID = exports.ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
|
|
@@ -355,6 +356,7 @@ var ACTION_SUBJECT_ID = exports.ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTIO
|
|
|
355
356
|
ACTION_SUBJECT_ID["SAVE"] = "save";
|
|
356
357
|
ACTION_SUBJECT_ID["SECTION"] = "section";
|
|
357
358
|
ACTION_SUBJECT_ID["SMART_LINK"] = "smartLink";
|
|
359
|
+
ACTION_SUBJECT_ID["SMART_LINK_TOOLBAR"] = "smartLinkToolbar";
|
|
358
360
|
ACTION_SUBJECT_ID["STATUS"] = "status";
|
|
359
361
|
ACTION_SUBJECT_ID["SYMBOL"] = "symbol";
|
|
360
362
|
ACTION_SUBJECT_ID["TABLE"] = "table";
|
|
@@ -82,13 +82,12 @@ var ExtensionNode = exports.ExtensionNode = /*#__PURE__*/function (_ReactNodeVie
|
|
|
82
82
|
}(_reactNodeView.default);
|
|
83
83
|
function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags) {
|
|
84
84
|
return function (node, view, getPos) {
|
|
85
|
-
var hasIntlContext = true;
|
|
86
85
|
return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
|
|
87
86
|
providerFactory: providerFactory,
|
|
88
87
|
extensionHandlers: extensionHandlers,
|
|
89
88
|
extensionNodeViewOptions: extensionNodeViewOptions,
|
|
90
89
|
pluginInjectionApi: pluginInjectionApi,
|
|
91
90
|
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags
|
|
92
|
-
}
|
|
91
|
+
}).init();
|
|
93
92
|
};
|
|
94
93
|
}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.keymap = keymap;
|
|
7
7
|
var _w3cKeyname = require("w3c-keyname");
|
|
8
8
|
var _keymap = require("@atlaskit/editor-prosemirror/keymap");
|
|
9
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
9
|
var _safePlugin = require("../safe-plugin");
|
|
11
10
|
/**
|
|
12
11
|
* A workaround for mostly Cyrillic but should have a positive affect
|
|
@@ -19,52 +18,35 @@ function keymap(bindings) {
|
|
|
19
18
|
return new _safePlugin.SafePlugin({
|
|
20
19
|
props: {
|
|
21
20
|
handleKeyDown: function handleKeyDown(view, event) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var keyboardEvent = event;
|
|
21
|
+
var name = (0, _w3cKeyname.keyName)(event);
|
|
22
|
+
var keyboardEvent = event;
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
// We will try to bypass the keycode only if any of mod keys are pressed,
|
|
25
|
+
// to allow users to use non-latin and Dead characters.
|
|
26
|
+
var isModKeyPressed = event.ctrlKey || event.metaKey;
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
// Check the unicode of the character to assert that it's not an ASCII character.
|
|
29
|
+
// These are characters outside latin's range.
|
|
30
|
+
var isNonLatinKey = name.length === 1 && /[^\u0000-\u007f]/.test(name);
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
return (0, _keymap.keydownHandler)(bindings)(view, keyboardEvent);
|
|
52
|
-
} else {
|
|
53
|
-
var _name = (0, _w3cKeyname.keyName)(event);
|
|
54
|
-
var _keyboardEvent = event;
|
|
55
|
-
if (event.ctrlKey && _name.length === 1 &&
|
|
56
|
-
// Check the unicode of the character to
|
|
57
|
-
// assert that its not an ASCII character.
|
|
58
|
-
// These are characters outside Latin's range.
|
|
59
|
-
/[^\u0000-\u007f]/.test(_name)) {
|
|
60
|
-
_keyboardEvent = new KeyboardEvent('keydown', {
|
|
61
|
-
key: _w3cKeyname.base[event.keyCode],
|
|
62
|
-
code: event.code,
|
|
63
|
-
ctrlKey: true
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
return (0, _keymap.keydownHandler)(bindings)(view, _keyboardEvent);
|
|
32
|
+
// The `Dead` key is a key that combines with a following key to produce a combined character.
|
|
33
|
+
// It will have `even.key === 'Dead'` in some browsers but the `keyCode` will be the same as in a qwerty-keyboard.
|
|
34
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key and https://en.wikipedia.org/wiki/Dead_key
|
|
35
|
+
var isDeadKey = name === 'Dead';
|
|
36
|
+
if (isModKeyPressed && (isNonLatinKey || isDeadKey)) {
|
|
37
|
+
keyboardEvent = new KeyboardEvent(event.type, {
|
|
38
|
+
// FIXME: The event.keyCode is deprecated (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode),
|
|
39
|
+
// and could be removed in any time, but the w3c-keyname library doesn't provide a way to get
|
|
40
|
+
// a key by event.code.
|
|
41
|
+
key: _w3cKeyname.base[event.keyCode],
|
|
42
|
+
code: event.code,
|
|
43
|
+
ctrlKey: event.ctrlKey,
|
|
44
|
+
altKey: event.altKey,
|
|
45
|
+
metaKey: event.metaKey,
|
|
46
|
+
shiftKey: event.shiftKey
|
|
47
|
+
});
|
|
67
48
|
}
|
|
49
|
+
return (0, _keymap.keydownHandler)(bindings)(view, keyboardEvent);
|
|
68
50
|
}
|
|
69
51
|
}
|
|
70
52
|
});
|
|
@@ -11,31 +11,48 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
11
11
|
var _react = require("react");
|
|
12
12
|
var _react2 = require("@emotion/react");
|
|
13
13
|
var _reactIntlNext = require("react-intl-next");
|
|
14
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
14
15
|
var _dropdownMenu = _interopRequireWildcard(require("@atlaskit/dropdown-menu"));
|
|
15
16
|
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
16
17
|
var _preferences = _interopRequireDefault(require("@atlaskit/icon/glyph/preferences"));
|
|
17
18
|
var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
|
|
18
19
|
var _messages = require("../../messages");
|
|
19
20
|
var _StyledButton = require("./StyledButton");
|
|
20
|
-
var
|
|
21
|
+
var _useLinkOverlayAnalyticsEvents = require("./useLinkOverlayAnalyticsEvents");
|
|
22
|
+
var _excluded = ["onClick", "triggerRef"];
|
|
21
23
|
/** @jsx jsx */
|
|
22
24
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
23
25
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
24
26
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
27
|
+
var SMALL_LINK_TOOLBAR_ANALYTICS_SOURCE = 'smallLinkToolbar';
|
|
25
28
|
var Dropdown = function Dropdown(_ref) {
|
|
26
|
-
var
|
|
27
|
-
|
|
29
|
+
var onDropdownChange = _ref.onDropdownChange,
|
|
30
|
+
testId = _ref.testId;
|
|
28
31
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
29
32
|
formatMessage = _useIntl.formatMessage;
|
|
30
33
|
var configureLinkLabel = formatMessage(_messages.cardMessages.inlineConfigureLink);
|
|
31
34
|
var goToLinkLabel = formatMessage(_messages.cardMessages.inlineGoToLink);
|
|
35
|
+
var _useLinkOverlayAnalyt = (0, _useLinkOverlayAnalyticsEvents.useLinkOverlayAnalyticsEvents)(),
|
|
36
|
+
fireActionClickEvent = _useLinkOverlayAnalyt.fireActionClickEvent,
|
|
37
|
+
fireLinkClickEvent = _useLinkOverlayAnalyt.fireLinkClickEvent,
|
|
38
|
+
fireToolbarViewEvent = _useLinkOverlayAnalyt.fireToolbarViewEvent;
|
|
32
39
|
var onOpenChange = (0, _react.useCallback)(function (_ref2) {
|
|
33
40
|
var isOpen = _ref2.isOpen;
|
|
34
41
|
onDropdownChange === null || onDropdownChange === void 0 || onDropdownChange(isOpen);
|
|
35
|
-
|
|
42
|
+
if (isOpen) {
|
|
43
|
+
fireToolbarViewEvent();
|
|
44
|
+
}
|
|
45
|
+
}, [fireToolbarViewEvent, onDropdownChange]);
|
|
46
|
+
var onGoToLinkClick = (0, _react.useCallback)(function () {
|
|
47
|
+
fireActionClickEvent('goToLink');
|
|
48
|
+
}, [fireActionClickEvent]);
|
|
49
|
+
var onConfigureClick = (0, _react.useCallback)(function () {
|
|
50
|
+
fireActionClickEvent('configureLink');
|
|
51
|
+
}, [fireActionClickEvent]);
|
|
36
52
|
return (0, _react2.jsx)(_dropdownMenu.default, {
|
|
37
53
|
trigger: function trigger(_ref3) {
|
|
38
|
-
var
|
|
54
|
+
var _onClick = _ref3.onClick,
|
|
55
|
+
triggerRef = _ref3.triggerRef,
|
|
39
56
|
props = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
|
|
40
57
|
return (0, _react2.jsx)(_StyledButton.StyledButton, (0, _extends2.default)({
|
|
41
58
|
innerRef: triggerRef
|
|
@@ -43,7 +60,11 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
43
60
|
iconBefore: (0, _react2.jsx)(_chevronDown.default, {
|
|
44
61
|
label: configureLinkLabel,
|
|
45
62
|
size: 'small'
|
|
46
|
-
})
|
|
63
|
+
}),
|
|
64
|
+
onClick: function onClick(e) {
|
|
65
|
+
_onClick === null || _onClick === void 0 || _onClick(e);
|
|
66
|
+
fireLinkClickEvent();
|
|
67
|
+
}
|
|
47
68
|
}));
|
|
48
69
|
},
|
|
49
70
|
testId: "".concat(testId, "-dropdown"),
|
|
@@ -52,12 +73,16 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
52
73
|
elemBefore: (0, _react2.jsx)(_shortcut.default, {
|
|
53
74
|
label: goToLinkLabel,
|
|
54
75
|
size: 'medium'
|
|
55
|
-
})
|
|
76
|
+
}),
|
|
77
|
+
onClick: onGoToLinkClick
|
|
56
78
|
}, goToLinkLabel), (0, _react2.jsx)(_dropdownMenu.DropdownItem, {
|
|
57
79
|
elemBefore: (0, _react2.jsx)(_preferences.default, {
|
|
58
80
|
label: configureLinkLabel,
|
|
59
81
|
size: 'medium'
|
|
60
|
-
})
|
|
82
|
+
}),
|
|
83
|
+
onClick: onConfigureClick
|
|
61
84
|
}, configureLinkLabel)));
|
|
62
85
|
};
|
|
63
|
-
var _default = exports.default =
|
|
86
|
+
var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)({
|
|
87
|
+
source: SMALL_LINK_TOOLBAR_ANALYTICS_SOURCE
|
|
88
|
+
})(Dropdown);
|
|
@@ -9,6 +9,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _react2 = require("@emotion/react");
|
|
11
11
|
var _reactIntlNext = require("react-intl-next");
|
|
12
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
12
13
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
13
14
|
var _preferences = _interopRequireDefault(require("@atlaskit/icon/glyph/preferences"));
|
|
14
15
|
var _colors = require("@atlaskit/theme/colors");
|
|
@@ -17,6 +18,7 @@ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
|
17
18
|
var _messages = require("../../messages");
|
|
18
19
|
var _Dropdown = _interopRequireDefault(require("./Dropdown"));
|
|
19
20
|
var _StyledButton = require("./StyledButton");
|
|
21
|
+
var _useLinkOverlayAnalyticsEvents = require("./useLinkOverlayAnalyticsEvents");
|
|
20
22
|
/** @jsx jsx */
|
|
21
23
|
|
|
22
24
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
@@ -31,7 +33,7 @@ var buttonWrapperStyles = (0, _react2.css)({
|
|
|
31
33
|
borderRadius: "var(--ds-border-radius, 3px)"
|
|
32
34
|
});
|
|
33
35
|
var showDropdownThresholdPx = 50;
|
|
34
|
-
var OverlayButton = exports.OverlayButton = function
|
|
36
|
+
var OverlayButton = exports.OverlayButton = (0, _analyticsNext.withAnalyticsContext)()(function (_ref) {
|
|
35
37
|
var _docNode$nodeSize;
|
|
36
38
|
var editorView = _ref.editorView,
|
|
37
39
|
_ref$testId = _ref.testId,
|
|
@@ -46,6 +48,9 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
|
|
|
46
48
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
47
49
|
showDropdown = _useState2[0],
|
|
48
50
|
setShowDropdown = _useState2[1];
|
|
51
|
+
var _useLinkOverlayAnalyt = (0, _useLinkOverlayAnalyticsEvents.useLinkOverlayAnalyticsEvents)(),
|
|
52
|
+
fireLinkClickEvent = _useLinkOverlayAnalyt.fireLinkClickEvent,
|
|
53
|
+
fireActionClickEvent = _useLinkOverlayAnalyt.fireActionClickEvent;
|
|
49
54
|
(0, _react.useLayoutEffect)(function () {
|
|
50
55
|
var _domNode;
|
|
51
56
|
var domNode = editorView.nodeDOM(targetElementPos);
|
|
@@ -63,7 +68,7 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
|
|
|
63
68
|
var docNode = editorView.state.doc.nodeAt(targetElementPos);
|
|
64
69
|
var nodeEnd = targetElementPos + ((_docNode$nodeSize = docNode === null || docNode === void 0 ? void 0 : docNode.nodeSize) !== null && _docNode$nodeSize !== void 0 ? _docNode$nodeSize : 0);
|
|
65
70
|
var isText = docNode === null || docNode === void 0 ? void 0 : docNode.isText;
|
|
66
|
-
var
|
|
71
|
+
var handleConfigureClick = (0, _react.useCallback)(function () {
|
|
67
72
|
var tr = editorView.state.tr;
|
|
68
73
|
if (isText) {
|
|
69
74
|
tr.setSelection(_state.TextSelection.create(tr.doc, targetElementPos, Math.min(nodeEnd, tr.doc.nodeSize)));
|
|
@@ -71,7 +76,12 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
|
|
|
71
76
|
tr.setSelection(_state.NodeSelection.create(tr.doc, targetElementPos));
|
|
72
77
|
}
|
|
73
78
|
editorView.dispatch(tr);
|
|
74
|
-
}, [isText,
|
|
79
|
+
}, [editorView, isText, targetElementPos, nodeEnd]);
|
|
80
|
+
var handleConfigureClickWithAnalytics = (0, _react.useCallback)(function () {
|
|
81
|
+
fireLinkClickEvent();
|
|
82
|
+
fireActionClickEvent('configureLink');
|
|
83
|
+
handleConfigureClick();
|
|
84
|
+
}, [fireActionClickEvent, fireLinkClickEvent, handleConfigureClick]);
|
|
75
85
|
var _editorView$state$sel = editorView.state.selection,
|
|
76
86
|
from = _editorView$state$sel.from,
|
|
77
87
|
to = _editorView$state$sel.to;
|
|
@@ -90,11 +100,11 @@ var OverlayButton = exports.OverlayButton = function OverlayButton(_ref) {
|
|
|
90
100
|
hideTooltipOnClick: true,
|
|
91
101
|
testId: "".concat(testId, "-tooltip")
|
|
92
102
|
}, (0, _react2.jsx)(_StyledButton.StyledButton, {
|
|
93
|
-
onClick:
|
|
103
|
+
onClick: handleConfigureClickWithAnalytics,
|
|
94
104
|
iconBefore: (0, _react2.jsx)(_preferences.default, {
|
|
95
105
|
label: configureLinkLabel,
|
|
96
106
|
size: "small",
|
|
97
107
|
testId: "".concat(testId, "-configure-icon")
|
|
98
108
|
})
|
|
99
109
|
})));
|
|
100
|
-
};
|
|
110
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useLinkOverlayAnalyticsEvents = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _analyticsListeners = require("@atlaskit/analytics-listeners");
|
|
9
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
10
|
+
var _analytics = require("../../analytics");
|
|
11
|
+
var useLinkOverlayAnalyticsEvents = exports.useLinkOverlayAnalyticsEvents = function useLinkOverlayAnalyticsEvents() {
|
|
12
|
+
var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
13
|
+
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
14
|
+
return (0, _react.useMemo)(function () {
|
|
15
|
+
return {
|
|
16
|
+
fireActionClickEvent: function fireActionClickEvent(linkAction) {
|
|
17
|
+
createAnalyticsEvent({
|
|
18
|
+
action: _analytics.ACTION.CLICKED,
|
|
19
|
+
actionSubject: _analytics.ACTION_SUBJECT.BUTTON,
|
|
20
|
+
eventType: _analytics.EVENT_TYPE.UI,
|
|
21
|
+
attributes: {
|
|
22
|
+
action: linkAction
|
|
23
|
+
}
|
|
24
|
+
}).fire(_analyticsListeners.FabricChannel.media);
|
|
25
|
+
},
|
|
26
|
+
fireLinkClickEvent: function fireLinkClickEvent() {
|
|
27
|
+
createAnalyticsEvent({
|
|
28
|
+
action: _analytics.ACTION.CLICKED,
|
|
29
|
+
actionSubject: _analytics.ACTION_SUBJECT.LINK,
|
|
30
|
+
eventType: _analytics.EVENT_TYPE.UI
|
|
31
|
+
}).fire(_analyticsListeners.FabricChannel.media);
|
|
32
|
+
},
|
|
33
|
+
fireToolbarViewEvent: function fireToolbarViewEvent() {
|
|
34
|
+
createAnalyticsEvent({
|
|
35
|
+
action: _analytics.ACTION.VIEWED,
|
|
36
|
+
actionSubject: _analytics.ACTION_SUBJECT.INLINE_DIALOG,
|
|
37
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SMART_LINK_TOOLBAR,
|
|
38
|
+
eventType: _analytics.EVENT_TYPE.SCREEN,
|
|
39
|
+
attributes: {
|
|
40
|
+
linkType: 'smallLink'
|
|
41
|
+
}
|
|
42
|
+
}).fire(_analyticsListeners.FabricChannel.media);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}, [createAnalyticsEvent]);
|
|
46
|
+
};
|
|
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
17
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
18
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
19
19
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
20
|
-
var packageVersion = "
|
|
20
|
+
var packageVersion = "85.0.0";
|
|
21
21
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
22
22
|
// Remove URL as it has UGC
|
|
23
23
|
// TODO: Sanitise the URL instead of just removing it
|
|
@@ -65,9 +65,7 @@ function createNodeView(_ref) {
|
|
|
65
65
|
nodeViewParams: nodeViewParams,
|
|
66
66
|
Component: Component,
|
|
67
67
|
extraComponentProps: extraComponentProps
|
|
68
|
-
}), domRef, key
|
|
69
|
-
// node views should be rendered with intl context
|
|
70
|
-
true);
|
|
68
|
+
}), domRef, key);
|
|
71
69
|
}
|
|
72
70
|
var _getPerformanceOption = (0, _utils.getPerformanceOptions)(nodeViewParams.view),
|
|
73
71
|
samplingRate = _getPerformanceOption.samplingRate,
|
|
@@ -123,7 +121,7 @@ function createNodeView(_ref) {
|
|
|
123
121
|
// When prosemirror destroys the node view, we need to clean up
|
|
124
122
|
// what we have previously rendered using the editor portal
|
|
125
123
|
// provider api.
|
|
126
|
-
pmPluginFactoryParams.portalProviderAPI.remove(key
|
|
124
|
+
pmPluginFactoryParams.portalProviderAPI.remove(key);
|
|
127
125
|
// @ts-expect-error Expect an error as domRef is expected to be
|
|
128
126
|
// of HTMLSpanElement type however once the node view has
|
|
129
127
|
// been destroyed no other consumers should still be using it.
|
|
@@ -30,11 +30,8 @@ var _analytics2 = require("../utils/analytics");
|
|
|
30
30
|
var _generateUniqueNodeKey = require("./generateUniqueNodeKey");
|
|
31
31
|
var _getInlineNodeViewProducer = require("./getInlineNodeViewProducer");
|
|
32
32
|
var ReactNodeView = exports.default = /*#__PURE__*/function () {
|
|
33
|
-
function ReactNodeView(_node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent) {
|
|
33
|
+
function ReactNodeView(_node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate) {
|
|
34
34
|
var _this = this;
|
|
35
|
-
var hasAnalyticsContext = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
36
|
-
var viewShouldUpdate = arguments.length > 8 ? arguments[8] : undefined;
|
|
37
|
-
var hasIntlContext = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
|
|
38
35
|
(0, _classCallCheck2.default)(this, ReactNodeView);
|
|
39
36
|
(0, _defineProperty2.default)(this, "decorations", []);
|
|
40
37
|
(0, _defineProperty2.default)(this, "handleRef", function (node) {
|
|
@@ -54,10 +51,8 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
|
|
|
54
51
|
this.portalProviderAPI = portalProviderAPI;
|
|
55
52
|
this.reactComponentProps = reactComponentProps || {};
|
|
56
53
|
this.reactComponent = reactComponent;
|
|
57
|
-
this.hasAnalyticsContext = hasAnalyticsContext;
|
|
58
54
|
this._viewShouldUpdate = viewShouldUpdate;
|
|
59
55
|
this.eventDispatcher = eventDispatcher;
|
|
60
|
-
this.hasIntlContext = hasIntlContext;
|
|
61
56
|
this.key = (0, _generateUniqueNodeKey.generateUniqueNodeKey)();
|
|
62
57
|
}
|
|
63
58
|
|
|
@@ -126,7 +121,7 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
|
|
|
126
121
|
dispatchAnalyticsEvent: _this3.dispatchAnalyticsEvent
|
|
127
122
|
}, component());
|
|
128
123
|
};
|
|
129
|
-
this.portalProviderAPI.render(componentWithErrorBoundary, this.domRef, this.key
|
|
124
|
+
this.portalProviderAPI.render(componentWithErrorBoundary, this.domRef, this.key);
|
|
130
125
|
}
|
|
131
126
|
}, {
|
|
132
127
|
key: "createDomRef",
|
|
@@ -223,16 +218,15 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
|
|
|
223
218
|
if (!this.domRef) {
|
|
224
219
|
return;
|
|
225
220
|
}
|
|
226
|
-
this.portalProviderAPI.remove(this.key
|
|
221
|
+
this.portalProviderAPI.remove(this.key);
|
|
227
222
|
this.domRef = undefined;
|
|
228
223
|
this.contentDOM = undefined;
|
|
229
224
|
}
|
|
230
225
|
}], [{
|
|
231
226
|
key: "fromComponent",
|
|
232
227
|
value: function fromComponent(component, portalProviderAPI, eventDispatcher, props, viewShouldUpdate) {
|
|
233
|
-
var hasIntlContext = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
234
228
|
return function (node, view, getPos) {
|
|
235
|
-
return new ReactNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, props, component,
|
|
229
|
+
return new ReactNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, props, component, viewShouldUpdate).init();
|
|
236
230
|
};
|
|
237
231
|
}
|
|
238
232
|
}]);
|
|
@@ -41,13 +41,10 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
41
41
|
var SelectionBasedNodeView = exports.SelectionBasedNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
42
42
|
(0, _inherits2.default)(SelectionBasedNodeView, _ReactNodeView);
|
|
43
43
|
var _super = _createSuper(SelectionBasedNodeView);
|
|
44
|
-
function SelectionBasedNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent) {
|
|
44
|
+
function SelectionBasedNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate) {
|
|
45
45
|
var _this;
|
|
46
|
-
var hasContext = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
47
|
-
var viewShouldUpdate = arguments.length > 8 ? arguments[8] : undefined;
|
|
48
|
-
var hasIntlContext = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
|
|
49
46
|
(0, _classCallCheck2.default)(this, SelectionBasedNodeView);
|
|
50
|
-
_this = _super.call(this, node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent,
|
|
47
|
+
_this = _super.call(this, node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate);
|
|
51
48
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isSelectedNode", false);
|
|
52
49
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isNodeInsideSelection", function (from, to, pos, posEnd) {
|
|
53
50
|
var _this$getPositionsWit = _this.getPositionsWithDefault(pos, posEnd);
|
|
@@ -20,7 +20,7 @@ var _Layer = _interopRequireDefault(require("../Layer"));
|
|
|
20
20
|
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); }; }
|
|
21
21
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /** @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
22
22
|
var packageName = "@atlaskit/editor-common";
|
|
23
|
-
var packageVersion = "
|
|
23
|
+
var packageVersion = "85.0.0";
|
|
24
24
|
var halfFocusRing = 1;
|
|
25
25
|
var dropOffset = '0, 8';
|
|
26
26
|
var DropList = /*#__PURE__*/function (_Component) {
|
|
@@ -235,6 +235,7 @@ export let ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJECT) {
|
|
|
235
235
|
ACTION_SUBJECT["DRAG"] = "drag";
|
|
236
236
|
ACTION_SUBJECT["ELEMENT"] = "element";
|
|
237
237
|
ACTION_SUBJECT["CONTEXT_MENU"] = "contextMenu";
|
|
238
|
+
ACTION_SUBJECT["INLINE_DIALOG"] = "inlineDialog";
|
|
238
239
|
return ACTION_SUBJECT;
|
|
239
240
|
}({});
|
|
240
241
|
export let ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
|
|
@@ -349,6 +350,7 @@ export let ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
|
|
|
349
350
|
ACTION_SUBJECT_ID["SAVE"] = "save";
|
|
350
351
|
ACTION_SUBJECT_ID["SECTION"] = "section";
|
|
351
352
|
ACTION_SUBJECT_ID["SMART_LINK"] = "smartLink";
|
|
353
|
+
ACTION_SUBJECT_ID["SMART_LINK_TOOLBAR"] = "smartLinkToolbar";
|
|
352
354
|
ACTION_SUBJECT_ID["STATUS"] = "status";
|
|
353
355
|
ACTION_SUBJECT_ID["SYMBOL"] = "symbol";
|
|
354
356
|
ACTION_SUBJECT_ID["TABLE"] = "table";
|
|
@@ -53,13 +53,12 @@ export class ExtensionNode extends ReactNodeView {
|
|
|
53
53
|
}
|
|
54
54
|
export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags) {
|
|
55
55
|
return (node, view, getPos) => {
|
|
56
|
-
const hasIntlContext = true;
|
|
57
56
|
return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
|
|
58
57
|
providerFactory,
|
|
59
58
|
extensionHandlers,
|
|
60
59
|
extensionNodeViewOptions,
|
|
61
60
|
pluginInjectionApi,
|
|
62
61
|
macroInteractionDesignFeatureFlags
|
|
63
|
-
}
|
|
62
|
+
}).init();
|
|
64
63
|
};
|
|
65
64
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { base, keyName } from 'w3c-keyname';
|
|
2
2
|
import { keydownHandler } from '@atlaskit/editor-prosemirror/keymap';
|
|
3
|
-
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
4
3
|
import { SafePlugin } from '../safe-plugin';
|
|
5
4
|
|
|
6
5
|
/**
|
|
@@ -14,52 +13,35 @@ export function keymap(bindings) {
|
|
|
14
13
|
return new SafePlugin({
|
|
15
14
|
props: {
|
|
16
15
|
handleKeyDown(view, event) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
let keyboardEvent = event;
|
|
16
|
+
const name = keyName(event);
|
|
17
|
+
let keyboardEvent = event;
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
// We will try to bypass the keycode only if any of mod keys are pressed,
|
|
20
|
+
// to allow users to use non-latin and Dead characters.
|
|
21
|
+
const isModKeyPressed = event.ctrlKey || event.metaKey;
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
// Check the unicode of the character to assert that it's not an ASCII character.
|
|
24
|
+
// These are characters outside latin's range.
|
|
25
|
+
const isNonLatinKey = name.length === 1 && /[^\u0000-\u007f]/.test(name);
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
return keydownHandler(bindings)(view, keyboardEvent);
|
|
47
|
-
} else {
|
|
48
|
-
const name = keyName(event);
|
|
49
|
-
let keyboardEvent = event;
|
|
50
|
-
if (event.ctrlKey && name.length === 1 &&
|
|
51
|
-
// Check the unicode of the character to
|
|
52
|
-
// assert that its not an ASCII character.
|
|
53
|
-
// These are characters outside Latin's range.
|
|
54
|
-
/[^\u0000-\u007f]/.test(name)) {
|
|
55
|
-
keyboardEvent = new KeyboardEvent('keydown', {
|
|
56
|
-
key: base[event.keyCode],
|
|
57
|
-
code: event.code,
|
|
58
|
-
ctrlKey: true
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
return keydownHandler(bindings)(view, keyboardEvent);
|
|
27
|
+
// The `Dead` key is a key that combines with a following key to produce a combined character.
|
|
28
|
+
// It will have `even.key === 'Dead'` in some browsers but the `keyCode` will be the same as in a qwerty-keyboard.
|
|
29
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key and https://en.wikipedia.org/wiki/Dead_key
|
|
30
|
+
const isDeadKey = name === 'Dead';
|
|
31
|
+
if (isModKeyPressed && (isNonLatinKey || isDeadKey)) {
|
|
32
|
+
keyboardEvent = new KeyboardEvent(event.type, {
|
|
33
|
+
// FIXME: The event.keyCode is deprecated (see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode),
|
|
34
|
+
// and could be removed in any time, but the w3c-keyname library doesn't provide a way to get
|
|
35
|
+
// a key by event.code.
|
|
36
|
+
key: base[event.keyCode],
|
|
37
|
+
code: event.code,
|
|
38
|
+
ctrlKey: event.ctrlKey,
|
|
39
|
+
altKey: event.altKey,
|
|
40
|
+
metaKey: event.metaKey,
|
|
41
|
+
shiftKey: event.shiftKey
|
|
42
|
+
});
|
|
62
43
|
}
|
|
44
|
+
return keydownHandler(bindings)(view, keyboardEvent);
|
|
63
45
|
}
|
|
64
46
|
}
|
|
65
47
|
});
|