@atlaskit/editor-plugin-mentions 4.2.0 → 4.3.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 +12 -0
- package/dist/cjs/nodeviews/mentionNodeView.js +198 -0
- package/dist/cjs/nodeviews/profileCardRenderer.js +63 -0
- package/dist/cjs/pm-plugins/main.js +19 -11
- package/dist/cjs/ui/ProfileCardComponent.compiled.css +2 -0
- package/dist/cjs/ui/ProfileCardComponent.js +205 -0
- package/dist/es2019/nodeviews/mentionNodeView.js +139 -0
- package/dist/es2019/nodeviews/profileCardRenderer.js +56 -0
- package/dist/es2019/pm-plugins/main.js +19 -11
- package/dist/es2019/ui/ProfileCardComponent.compiled.css +2 -0
- package/dist/es2019/ui/ProfileCardComponent.js +143 -0
- package/dist/esm/nodeviews/mentionNodeView.js +191 -0
- package/dist/esm/nodeviews/profileCardRenderer.js +56 -0
- package/dist/esm/pm-plugins/main.js +19 -11
- package/dist/esm/ui/ProfileCardComponent.compiled.css +2 -0
- package/dist/esm/ui/ProfileCardComponent.js +194 -0
- package/dist/types/mentionsPluginType.d.ts +3 -1
- package/dist/types/nodeviews/mentionNodeView.d.ts +12 -0
- package/dist/types/nodeviews/profileCardRenderer.d.ts +15 -0
- package/dist/types/ui/ProfileCardComponent.d.ts +23 -0
- package/dist/types-ts4.5/mentionsPluginType.d.ts +3 -1
- package/dist/types-ts4.5/nodeviews/mentionNodeView.d.ts +12 -0
- package/dist/types-ts4.5/nodeviews/profileCardRenderer.d.ts +15 -0
- package/dist/types-ts4.5/ui/ProfileCardComponent.d.ts +23 -0
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-mentions
|
|
2
2
|
|
|
3
|
+
## 4.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#134205](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/134205)
|
|
8
|
+
[`7751c880c8ebf`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7751c880c8ebf) -
|
|
9
|
+
Refactor mentions node view to vanilla javascript.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
3
15
|
## 4.2.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.mentionNodeView = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
var _browser = require("@atlaskit/editor-common/browser");
|
|
14
|
+
var _whitespace = require("@atlaskit/editor-common/whitespace");
|
|
15
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
16
|
+
var _resource = require("@atlaskit/mention/resource");
|
|
17
|
+
var _types = require("@atlaskit/mention/types");
|
|
18
|
+
var _profileCardRenderer2 = require("./profileCardRenderer");
|
|
19
|
+
var primitiveClassName = 'editor-mention-primitive';
|
|
20
|
+
var toDOM = function toDOM(node) {
|
|
21
|
+
// packages/elements/mention/src/components/Mention/index.tsx
|
|
22
|
+
var mentionAttrs = {
|
|
23
|
+
contenteditable: 'false',
|
|
24
|
+
'data-access-level': node.attrs.accessLevel,
|
|
25
|
+
'data-mention-id': node.attrs.id,
|
|
26
|
+
'data-prosemirror-content-type': 'node',
|
|
27
|
+
'data-prosemirror-node-inline': 'true',
|
|
28
|
+
'data-prosemirror-node-name': 'mention',
|
|
29
|
+
'data-prosemirror-node-view-type': 'vanilla',
|
|
30
|
+
class: 'mentionView-content-wrap inlineNodeView'
|
|
31
|
+
};
|
|
32
|
+
return ['span', mentionAttrs, ['span', {
|
|
33
|
+
class: 'zeroWidthSpaceContainer'
|
|
34
|
+
}, ['span', {
|
|
35
|
+
class: 'inlineNodeViewAddZeroWidthSpace'
|
|
36
|
+
}, _whitespace.ZERO_WIDTH_SPACE]], ['span', {
|
|
37
|
+
spellcheck: 'false',
|
|
38
|
+
class: primitiveClassName
|
|
39
|
+
}, node.attrs.text || '@…'], _browser.browser.android ? ['span', {
|
|
40
|
+
class: 'zeroWidthSpaceContainer',
|
|
41
|
+
contenteditable: 'false'
|
|
42
|
+
}, ['span', {
|
|
43
|
+
class: 'inlineNodeViewAddZeroWidthSpace'
|
|
44
|
+
}, _whitespace.ZERO_WIDTH_SPACE]] : ['span', {
|
|
45
|
+
class: 'inlineNodeViewAddZeroWidthSpace'
|
|
46
|
+
}, _whitespace.ZERO_WIDTH_SPACE]];
|
|
47
|
+
};
|
|
48
|
+
var processName = function processName(name) {
|
|
49
|
+
return name.status === _resource.MentionNameStatus.OK ? "@".concat(name.name || '') : "@_|unknown|_";
|
|
50
|
+
};
|
|
51
|
+
var handleProviderName = /*#__PURE__*/function () {
|
|
52
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mentionProvider, node) {
|
|
53
|
+
var nameDetail, resolvedNameDetail;
|
|
54
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
if (!((0, _resource.isResolvingMentionProvider)(mentionProvider) && node.attrs.id && !node.attrs.text)) {
|
|
58
|
+
_context.next = 6;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
nameDetail = mentionProvider === null || mentionProvider === void 0 ? void 0 : mentionProvider.resolveMentionName(node.attrs.id);
|
|
62
|
+
_context.next = 4;
|
|
63
|
+
return nameDetail;
|
|
64
|
+
case 4:
|
|
65
|
+
resolvedNameDetail = _context.sent;
|
|
66
|
+
return _context.abrupt("return", processName(resolvedNameDetail));
|
|
67
|
+
case 6:
|
|
68
|
+
case "end":
|
|
69
|
+
return _context.stop();
|
|
70
|
+
}
|
|
71
|
+
}, _callee);
|
|
72
|
+
}));
|
|
73
|
+
return function handleProviderName(_x, _x2) {
|
|
74
|
+
return _ref.apply(this, arguments);
|
|
75
|
+
};
|
|
76
|
+
}();
|
|
77
|
+
var getNewState = function getNewState(isHighlighted, isRestricted) {
|
|
78
|
+
if (isHighlighted) {
|
|
79
|
+
return 'self';
|
|
80
|
+
}
|
|
81
|
+
if (isRestricted) {
|
|
82
|
+
return 'restricted';
|
|
83
|
+
}
|
|
84
|
+
return 'default';
|
|
85
|
+
};
|
|
86
|
+
var MentionNodeView = /*#__PURE__*/function () {
|
|
87
|
+
function MentionNodeView(node, config) {
|
|
88
|
+
var _api$mention$sharedSt,
|
|
89
|
+
_this = this;
|
|
90
|
+
(0, _classCallCheck2.default)(this, MentionNodeView);
|
|
91
|
+
(0, _defineProperty2.default)(this, "state", 'default');
|
|
92
|
+
var options = config.options,
|
|
93
|
+
api = config.api,
|
|
94
|
+
portalProviderAPI = config.portalProviderAPI;
|
|
95
|
+
var _DOMSerializer$render = _model.DOMSerializer.renderSpec(document, toDOM(node)),
|
|
96
|
+
dom = _DOMSerializer$render.dom,
|
|
97
|
+
contentDOM = _DOMSerializer$render.contentDOM;
|
|
98
|
+
this.dom = dom;
|
|
99
|
+
this.contentDOM = contentDOM;
|
|
100
|
+
this.config = config;
|
|
101
|
+
this.node = node;
|
|
102
|
+
var _ref2 = (_api$mention$sharedSt = api === null || api === void 0 ? void 0 : api.mention.sharedState.currentState()) !== null && _api$mention$sharedSt !== void 0 ? _api$mention$sharedSt : {},
|
|
103
|
+
mentionProvider = _ref2.mentionProvider;
|
|
104
|
+
this.updateState(mentionProvider);
|
|
105
|
+
this.cleanup = api === null || api === void 0 ? void 0 : api.mention.sharedState.onChange(function (_ref3) {
|
|
106
|
+
var nextSharedState = _ref3.nextSharedState;
|
|
107
|
+
_this.updateState(nextSharedState === null || nextSharedState === void 0 ? void 0 : nextSharedState.mentionProvider);
|
|
108
|
+
});
|
|
109
|
+
var _profileCardRenderer = (0, _profileCardRenderer2.profileCardRenderer)({
|
|
110
|
+
dom: dom,
|
|
111
|
+
options: options,
|
|
112
|
+
portalProviderAPI: portalProviderAPI,
|
|
113
|
+
node: node,
|
|
114
|
+
api: api
|
|
115
|
+
}),
|
|
116
|
+
destroyProfileCard = _profileCardRenderer.destroyProfileCard,
|
|
117
|
+
removeProfileCard = _profileCardRenderer.removeProfileCard;
|
|
118
|
+
this.destroyProfileCard = destroyProfileCard;
|
|
119
|
+
this.removeProfileCard = removeProfileCard;
|
|
120
|
+
}
|
|
121
|
+
return (0, _createClass2.default)(MentionNodeView, [{
|
|
122
|
+
key: "setClassList",
|
|
123
|
+
value: function setClassList(state) {
|
|
124
|
+
var mentionElement = this.getMentionPrimitive();
|
|
125
|
+
mentionElement === null || mentionElement === void 0 || mentionElement.classList.toggle('mention-self', state === 'self');
|
|
126
|
+
mentionElement === null || mentionElement === void 0 || mentionElement.classList.toggle('mention-restricted', state === 'restricted');
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "getMentionPrimitive",
|
|
130
|
+
value: function getMentionPrimitive() {
|
|
131
|
+
var _this$dom$querySelect;
|
|
132
|
+
return this.dom instanceof HTMLElement ? (_this$dom$querySelect = this.dom.querySelector(".".concat(primitiveClassName))) !== null && _this$dom$querySelect !== void 0 ? _this$dom$querySelect : undefined : undefined;
|
|
133
|
+
}
|
|
134
|
+
}, {
|
|
135
|
+
key: "setTextContent",
|
|
136
|
+
value: function setTextContent(name) {
|
|
137
|
+
var _this$config$options;
|
|
138
|
+
if (!(this.dom instanceof HTMLElement)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
var mentionPrimitive = this.getMentionPrimitive();
|
|
142
|
+
if (mentionPrimitive && name && !this.node.attrs.text && (_this$config$options = this.config.options) !== null && _this$config$options !== void 0 && _this$config$options.sanitizePrivateContent) {
|
|
143
|
+
mentionPrimitive.textContent = name;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, {
|
|
147
|
+
key: "updateState",
|
|
148
|
+
value: function () {
|
|
149
|
+
var _updateState = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(mentionProvider) {
|
|
150
|
+
var _mentionProvider$shou;
|
|
151
|
+
var isHighlighted, newState, name;
|
|
152
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
153
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
154
|
+
case 0:
|
|
155
|
+
isHighlighted = (_mentionProvider$shou = mentionProvider === null || mentionProvider === void 0 ? void 0 : mentionProvider.shouldHighlightMention({
|
|
156
|
+
id: this.node.attrs.id
|
|
157
|
+
})) !== null && _mentionProvider$shou !== void 0 ? _mentionProvider$shou : false;
|
|
158
|
+
newState = getNewState(isHighlighted, (0, _types.isRestricted)(this.node.attrs.accessLevel));
|
|
159
|
+
if (newState !== this.state) {
|
|
160
|
+
this.setClassList(newState);
|
|
161
|
+
this.state = newState;
|
|
162
|
+
}
|
|
163
|
+
_context2.next = 5;
|
|
164
|
+
return handleProviderName(mentionProvider, this.node);
|
|
165
|
+
case 5:
|
|
166
|
+
name = _context2.sent;
|
|
167
|
+
this.setTextContent(name);
|
|
168
|
+
case 7:
|
|
169
|
+
case "end":
|
|
170
|
+
return _context2.stop();
|
|
171
|
+
}
|
|
172
|
+
}, _callee2, this);
|
|
173
|
+
}));
|
|
174
|
+
function updateState(_x3) {
|
|
175
|
+
return _updateState.apply(this, arguments);
|
|
176
|
+
}
|
|
177
|
+
return updateState;
|
|
178
|
+
}()
|
|
179
|
+
}, {
|
|
180
|
+
key: "destroy",
|
|
181
|
+
value: function destroy() {
|
|
182
|
+
var _this$cleanup, _this$destroyProfileC;
|
|
183
|
+
(_this$cleanup = this.cleanup) === null || _this$cleanup === void 0 || _this$cleanup.call(this);
|
|
184
|
+
(_this$destroyProfileC = this.destroyProfileCard) === null || _this$destroyProfileC === void 0 || _this$destroyProfileC.call(this);
|
|
185
|
+
}
|
|
186
|
+
}, {
|
|
187
|
+
key: "deselectNode",
|
|
188
|
+
value: function deselectNode() {
|
|
189
|
+
var _this$removeProfileCa;
|
|
190
|
+
(_this$removeProfileCa = this.removeProfileCard) === null || _this$removeProfileCa === void 0 || _this$removeProfileCa.call(this);
|
|
191
|
+
}
|
|
192
|
+
}]);
|
|
193
|
+
}();
|
|
194
|
+
var mentionNodeView = exports.mentionNodeView = function mentionNodeView(config) {
|
|
195
|
+
return function (node) {
|
|
196
|
+
return new MentionNodeView(node, config);
|
|
197
|
+
};
|
|
198
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.profileCardRenderer = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _bindEventListener = require("bind-event-listener");
|
|
10
|
+
var _v = _interopRequireDefault(require("uuid/v4"));
|
|
11
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
12
|
+
var _ProfileCardComponent = require("../ui/ProfileCardComponent");
|
|
13
|
+
var profileCardRenderer = exports.profileCardRenderer = function profileCardRenderer(_ref) {
|
|
14
|
+
var dom = _ref.dom,
|
|
15
|
+
options = _ref.options,
|
|
16
|
+
portalProviderAPI = _ref.portalProviderAPI,
|
|
17
|
+
node = _ref.node,
|
|
18
|
+
api = _ref.api;
|
|
19
|
+
var renderingProfileCard = false;
|
|
20
|
+
var key = (0, _v.default)();
|
|
21
|
+
var cleanupSelection;
|
|
22
|
+
var removeProfileCard = function removeProfileCard() {
|
|
23
|
+
var _cleanupSelection;
|
|
24
|
+
portalProviderAPI.remove(key);
|
|
25
|
+
renderingProfileCard = false;
|
|
26
|
+
(_cleanupSelection = cleanupSelection) === null || _cleanupSelection === void 0 || _cleanupSelection();
|
|
27
|
+
};
|
|
28
|
+
var listenerCleanup = (0, _bindEventListener.bind)(dom, {
|
|
29
|
+
type: 'click',
|
|
30
|
+
listener: function listener() {
|
|
31
|
+
if (dom instanceof HTMLElement && options !== null && options !== void 0 && options.profilecardProvider && !renderingProfileCard) {
|
|
32
|
+
var _api$selection;
|
|
33
|
+
renderingProfileCard = true;
|
|
34
|
+
portalProviderAPI.render(function () {
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(_ProfileCardComponent.ProfileCardComponent, {
|
|
36
|
+
activeMention: node,
|
|
37
|
+
profilecardProvider: options === null || options === void 0 ? void 0 : options.profilecardProvider,
|
|
38
|
+
dom: dom,
|
|
39
|
+
closeComponent: removeProfileCard
|
|
40
|
+
});
|
|
41
|
+
}, dom, key);
|
|
42
|
+
// If we change the selection we should also remove the profile card. The "deselectNode"
|
|
43
|
+
// should usually catch this, but it's possible (ie. on triple click) for this not to be called
|
|
44
|
+
// which means the profile card gets stuck open until you click + change selection
|
|
45
|
+
cleanupSelection = api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 ? void 0 : _api$selection.sharedState.onChange(function (_ref2) {
|
|
46
|
+
var nextSharedState = _ref2.nextSharedState;
|
|
47
|
+
var selection = nextSharedState === null || nextSharedState === void 0 ? void 0 : nextSharedState.selection;
|
|
48
|
+
if (selection instanceof _state.NodeSelection ? selection.node === node : false) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
removeProfileCard === null || removeProfileCard === void 0 || removeProfileCard();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
destroyProfileCard: function destroyProfileCard() {
|
|
58
|
+
listenerCleanup();
|
|
59
|
+
removeProfileCard === null || removeProfileCard === void 0 || removeProfileCard();
|
|
60
|
+
},
|
|
61
|
+
removeProfileCard: removeProfileCard
|
|
62
|
+
};
|
|
63
|
+
};
|
|
@@ -14,7 +14,9 @@ var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
|
14
14
|
var _resource = require("@atlaskit/mention/resource");
|
|
15
15
|
var _types = require("@atlaskit/mention/types");
|
|
16
16
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
|
+
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
17
18
|
var _mention = require("../nodeviews/mention");
|
|
19
|
+
var _mentionNodeView = require("../nodeviews/mentionNodeView");
|
|
18
20
|
var _types2 = require("../types");
|
|
19
21
|
var _key = require("./key");
|
|
20
22
|
var _utils2 = require("./utils");
|
|
@@ -24,7 +26,7 @@ var ACTIONS = exports.ACTIONS = {
|
|
|
24
26
|
SET_PROVIDER: 'SET_PROVIDER'
|
|
25
27
|
};
|
|
26
28
|
var PACKAGE_NAME = "@atlaskit/editor-plugin-mentions";
|
|
27
|
-
var PACKAGE_VERSION = "4.
|
|
29
|
+
var PACKAGE_VERSION = "4.3.0";
|
|
28
30
|
var setProvider = function setProvider(provider) {
|
|
29
31
|
return function (state, dispatch) {
|
|
30
32
|
if (dispatch) {
|
|
@@ -99,15 +101,21 @@ function createMentionPlugin(_ref) {
|
|
|
99
101
|
},
|
|
100
102
|
props: {
|
|
101
103
|
nodeViews: {
|
|
102
|
-
mention: (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
mention: function mention(node, view, getPos, decorations, innerDecorations) {
|
|
105
|
+
return (0, _experiments.editorExperiment)('platform_editor_vanilla_dom', true) ? (0, _mentionNodeView.mentionNodeView)({
|
|
106
|
+
options: options,
|
|
107
|
+
api: api,
|
|
108
|
+
portalProviderAPI: pmPluginFactoryParams.portalProviderAPI
|
|
109
|
+
})(node, view, getPos, decorations, innerDecorations) : (0, _reactNodeView.getInlineNodeViewProducer)({
|
|
110
|
+
pmPluginFactoryParams: pmPluginFactoryParams,
|
|
111
|
+
Component: _mention.MentionNodeView,
|
|
112
|
+
extraComponentProps: {
|
|
113
|
+
providerFactory: pmPluginFactoryParams.providerFactory,
|
|
114
|
+
pluginInjectionApi: api,
|
|
115
|
+
options: options
|
|
116
|
+
}
|
|
117
|
+
})(node, view, getPos, decorations);
|
|
118
|
+
}
|
|
111
119
|
}
|
|
112
120
|
},
|
|
113
121
|
view: function view(editorView) {
|
|
@@ -166,7 +174,7 @@ function createMentionPlugin(_ref) {
|
|
|
166
174
|
},
|
|
167
175
|
update: function update(view, prevState) {
|
|
168
176
|
var newState = view.state;
|
|
169
|
-
if (options !== null && options !== void 0 && options.handleMentionsChanged
|
|
177
|
+
if (options !== null && options !== void 0 && options.handleMentionsChanged) {
|
|
170
178
|
var mentionSchema = newState.schema.nodes.mention;
|
|
171
179
|
var mentionNodesBefore = (0, _utils.findChildrenByType)(prevState.doc, mentionSchema);
|
|
172
180
|
var mentionLocalIdsAfter = new Set((0, _utils.findChildrenByType)(newState.doc, mentionSchema).map(function (_ref3) {
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/* ProfileCardComponent.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.ProfileCardComponent = ProfileCardComponent;
|
|
10
|
+
exports.useProfileCardState = void 0;
|
|
11
|
+
require("./ProfileCardComponent.compiled.css");
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var React = _react;
|
|
14
|
+
var _runtime = require("@compiled/react/runtime");
|
|
15
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
18
|
+
var _bindEventListener = require("bind-event-listener");
|
|
19
|
+
var _ui = require("@atlaskit/editor-common/ui");
|
|
20
|
+
var _portal = _interopRequireDefault(require("@atlaskit/portal"));
|
|
21
|
+
var _user = require("@atlaskit/profilecard/user");
|
|
22
|
+
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); }
|
|
23
|
+
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 && {}.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; }
|
|
24
|
+
var styles = {
|
|
25
|
+
loadingStyles: "_2rkoglpi _16qs1cd0"
|
|
26
|
+
};
|
|
27
|
+
var LoadingWrapper = function LoadingWrapper(_ref) {
|
|
28
|
+
var children = _ref.children,
|
|
29
|
+
isLoading = _ref.isLoading;
|
|
30
|
+
return isLoading ? /*#__PURE__*/React.createElement("div", {
|
|
31
|
+
className: (0, _runtime.ax)([styles.loadingStyles])
|
|
32
|
+
}, children) : children;
|
|
33
|
+
};
|
|
34
|
+
var useProfileCardState = exports.useProfileCardState = function useProfileCardState(_ref2) {
|
|
35
|
+
var id = _ref2.id,
|
|
36
|
+
provider = _ref2.provider;
|
|
37
|
+
var _useState = (0, _react.useState)(),
|
|
38
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
39
|
+
data = _useState2[0],
|
|
40
|
+
setData = _useState2[1];
|
|
41
|
+
var _useState3 = (0, _react.useState)(undefined),
|
|
42
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
43
|
+
reportingLinesData = _useState4[0],
|
|
44
|
+
setReportingLinesData = _useState4[1];
|
|
45
|
+
var _useState5 = (0, _react.useState)(false),
|
|
46
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
47
|
+
shouldShowGiveKudos = _useState6[0],
|
|
48
|
+
setShouldShowGiveKudos = _useState6[1];
|
|
49
|
+
var _useState7 = (0, _react.useState)(undefined),
|
|
50
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
51
|
+
teamCentralBaseUrl = _useState8[0],
|
|
52
|
+
setTeamCentralBaseUrl = _useState8[1];
|
|
53
|
+
var _useState9 = (0, _react.useState)(false),
|
|
54
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
55
|
+
isLoading = _useState10[0],
|
|
56
|
+
setIsLoading = _useState10[1];
|
|
57
|
+
var _useState11 = (0, _react.useState)(false),
|
|
58
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
59
|
+
hasError = _useState12[0],
|
|
60
|
+
setHasError = _useState12[1];
|
|
61
|
+
|
|
62
|
+
// From: packages/people-and-teams/profilecard/src/components/User/ProfileCardTrigger.tsx
|
|
63
|
+
(0, _react.useEffect)(function () {
|
|
64
|
+
var fetchData = /*#__PURE__*/function () {
|
|
65
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
66
|
+
var _yield$Promise$all, _yield$Promise$all2, _data, reportingLines, shouldGiveKudos, _teamCentralBaseUrl;
|
|
67
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
68
|
+
while (1) switch (_context.prev = _context.next) {
|
|
69
|
+
case 0:
|
|
70
|
+
if (!(!id || !provider)) {
|
|
71
|
+
_context.next = 2;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
return _context.abrupt("return");
|
|
75
|
+
case 2:
|
|
76
|
+
setIsLoading(true);
|
|
77
|
+
_context.prev = 3;
|
|
78
|
+
_context.next = 6;
|
|
79
|
+
return Promise.all([provider === null || provider === void 0 ? void 0 : provider.resourceClient.getProfile((provider === null || provider === void 0 ? void 0 : provider.cloudId) || '', id, function () {}), provider === null || provider === void 0 ? void 0 : provider.resourceClient.getReportingLines(id), provider === null || provider === void 0 ? void 0 : provider.resourceClient.shouldShowGiveKudos(), provider === null || provider === void 0 ? void 0 : provider.resourceClient.getTeamCentralBaseUrl({
|
|
80
|
+
withOrgContext: true,
|
|
81
|
+
withSiteContext: true
|
|
82
|
+
})]);
|
|
83
|
+
case 6:
|
|
84
|
+
_yield$Promise$all = _context.sent;
|
|
85
|
+
_yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 4);
|
|
86
|
+
_data = _yield$Promise$all2[0];
|
|
87
|
+
reportingLines = _yield$Promise$all2[1];
|
|
88
|
+
shouldGiveKudos = _yield$Promise$all2[2];
|
|
89
|
+
_teamCentralBaseUrl = _yield$Promise$all2[3];
|
|
90
|
+
setData(_data);
|
|
91
|
+
setReportingLinesData(reportingLines);
|
|
92
|
+
setShouldShowGiveKudos(shouldGiveKudos !== null && shouldGiveKudos !== void 0 ? shouldGiveKudos : false);
|
|
93
|
+
setTeamCentralBaseUrl(_teamCentralBaseUrl);
|
|
94
|
+
setHasError(false);
|
|
95
|
+
_context.next = 22;
|
|
96
|
+
break;
|
|
97
|
+
case 19:
|
|
98
|
+
_context.prev = 19;
|
|
99
|
+
_context.t0 = _context["catch"](3);
|
|
100
|
+
setHasError(true);
|
|
101
|
+
case 22:
|
|
102
|
+
_context.prev = 22;
|
|
103
|
+
setIsLoading(false);
|
|
104
|
+
return _context.finish(22);
|
|
105
|
+
case 25:
|
|
106
|
+
case "end":
|
|
107
|
+
return _context.stop();
|
|
108
|
+
}
|
|
109
|
+
}, _callee, null, [[3, 19, 22, 25]]);
|
|
110
|
+
}));
|
|
111
|
+
return function fetchData() {
|
|
112
|
+
return _ref3.apply(this, arguments);
|
|
113
|
+
};
|
|
114
|
+
}();
|
|
115
|
+
fetchData();
|
|
116
|
+
}, [id, provider]);
|
|
117
|
+
return {
|
|
118
|
+
data: data,
|
|
119
|
+
reportingLinesData: reportingLinesData,
|
|
120
|
+
shouldShowGiveKudos: shouldShowGiveKudos,
|
|
121
|
+
teamCentralBaseUrl: teamCentralBaseUrl,
|
|
122
|
+
isLoading: isLoading,
|
|
123
|
+
hasError: hasError
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
function ProfileCardComponent(_ref4) {
|
|
127
|
+
var _ref6;
|
|
128
|
+
var profilecardProvider = _ref4.profilecardProvider,
|
|
129
|
+
activeMention = _ref4.activeMention,
|
|
130
|
+
dom = _ref4.dom,
|
|
131
|
+
closeComponent = _ref4.closeComponent;
|
|
132
|
+
var _useState13 = (0, _react.useState)(undefined),
|
|
133
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
134
|
+
provider = _useState14[0],
|
|
135
|
+
setProvider = _useState14[1];
|
|
136
|
+
(0, _react.useEffect)(function () {
|
|
137
|
+
profilecardProvider === null || profilecardProvider === void 0 || profilecardProvider.then(function (p) {
|
|
138
|
+
setProvider(p);
|
|
139
|
+
});
|
|
140
|
+
}, [profilecardProvider]);
|
|
141
|
+
var _ref5 = (_ref6 = activeMention.attrs) !== null && _ref6 !== void 0 ? _ref6 : {},
|
|
142
|
+
id = _ref5.id,
|
|
143
|
+
text = _ref5.text,
|
|
144
|
+
accessLevel = _ref5.accessLevel;
|
|
145
|
+
var actions = (0, _react.useMemo)(function () {
|
|
146
|
+
return provider === null || provider === void 0 ? void 0 : provider.getActions(id, text !== null && text !== void 0 ? text : '', accessLevel);
|
|
147
|
+
}, [accessLevel, id, provider, text]);
|
|
148
|
+
var _useProfileCardState = useProfileCardState({
|
|
149
|
+
id: id,
|
|
150
|
+
provider: provider
|
|
151
|
+
}),
|
|
152
|
+
data = _useProfileCardState.data,
|
|
153
|
+
reportingLinesData = _useProfileCardState.reportingLinesData,
|
|
154
|
+
shouldShowGiveKudos = _useProfileCardState.shouldShowGiveKudos,
|
|
155
|
+
teamCentralBaseUrl = _useProfileCardState.teamCentralBaseUrl,
|
|
156
|
+
isLoading = _useProfileCardState.isLoading,
|
|
157
|
+
hasError = _useProfileCardState.hasError;
|
|
158
|
+
(0, _react.useEffect)(function () {
|
|
159
|
+
return (0, _bindEventListener.bind)(window, {
|
|
160
|
+
type: 'keydown',
|
|
161
|
+
listener: function listener(e) {
|
|
162
|
+
if (e.key === 'Escape') {
|
|
163
|
+
closeComponent();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
if (!provider || !activeMention) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
var cloudId = provider.cloudId;
|
|
172
|
+
return /*#__PURE__*/React.createElement(_portal.default, null, /*#__PURE__*/React.createElement(_ui.Popup, {
|
|
173
|
+
target: dom,
|
|
174
|
+
absoluteOffset: {
|
|
175
|
+
top: 8
|
|
176
|
+
},
|
|
177
|
+
stick: true
|
|
178
|
+
}, /*#__PURE__*/React.createElement(_react.Suspense, {
|
|
179
|
+
fallback: null
|
|
180
|
+
}, /*#__PURE__*/React.createElement(LoadingWrapper, {
|
|
181
|
+
isLoading: isLoading
|
|
182
|
+
}, /*#__PURE__*/React.createElement(_user.ProfileCardLazy, {
|
|
183
|
+
avatarUrl: data === null || data === void 0 ? void 0 : data.avatarUrl,
|
|
184
|
+
accountType: data === null || data === void 0 ? void 0 : data.accountType,
|
|
185
|
+
status: data === null || data === void 0 ? void 0 : data.status,
|
|
186
|
+
statusModifiedDate: data === null || data === void 0 ? void 0 : data.statusModifiedDate,
|
|
187
|
+
timestring: data === null || data === void 0 ? void 0 : data.timestring,
|
|
188
|
+
isCurrentUser: data === null || data === void 0 ? void 0 : data.isCurrentUser,
|
|
189
|
+
isBot: data === null || data === void 0 ? void 0 : data.isBot,
|
|
190
|
+
fullName: data === null || data === void 0 ? void 0 : data.fullName,
|
|
191
|
+
userId: id,
|
|
192
|
+
cloudId: cloudId,
|
|
193
|
+
actions: actions,
|
|
194
|
+
isLoading: isLoading,
|
|
195
|
+
location: data === null || data === void 0 ? void 0 : data.location,
|
|
196
|
+
companyName: data === null || data === void 0 ? void 0 : data.companyName,
|
|
197
|
+
customLozenges: data === null || data === void 0 ? void 0 : data.customLozenges,
|
|
198
|
+
nickname: data === null || data === void 0 ? void 0 : data.nickname,
|
|
199
|
+
email: data === null || data === void 0 ? void 0 : data.email,
|
|
200
|
+
hasError: hasError,
|
|
201
|
+
reportingLines: reportingLinesData,
|
|
202
|
+
isKudosEnabled: shouldShowGiveKudos,
|
|
203
|
+
teamCentralBaseUrl: teamCentralBaseUrl
|
|
204
|
+
})))));
|
|
205
|
+
}
|