@atlaskit/editor-plugin-emoji 2.3.1 → 2.4.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 CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/editor-plugin-emoji
2
2
 
3
+ ## 2.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#135270](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/135270)
8
+ [`4a75557335357`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4a75557335357) -
9
+ [ux] [ED-23237] feat(node data provider): wire up to emoji provider
10
+
11
+ ## 2.3.2
12
+
13
+ ### Patch Changes
14
+
15
+ - [#134213](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/134213)
16
+ [`93bd7032842ec`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/93bd7032842ec) -
17
+ [ux] [ED-24636] Bump ADF Schema package
18
+
3
19
  ## 2.3.1
4
20
 
5
21
  ### Patch Changes
@@ -9,6 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _reactIntlNext = require("react-intl-next");
10
10
  var _emoji = require("@atlaskit/editor-common/emoji");
11
11
  var _Emoji = _interopRequireDefault(require("../ui/Emoji"));
12
+ var _NdpEmoji = require("../ui/NdpEmoji");
12
13
  var EmojiAssistiveTextComponent = /*#__PURE__*/_react.default.memo(function (_ref) {
13
14
  var emojiShortName = _ref.emojiShortName;
14
15
  var intl = (0, _reactIntlNext.useIntl)();
@@ -23,10 +24,17 @@ var EmojiAssistiveTextComponent = /*#__PURE__*/_react.default.memo(function (_re
23
24
  );
24
25
  });
25
26
  function EmojiNodeView(props) {
27
+ var _props$options;
26
28
  var _props$node$attrs = props.node.attrs,
27
29
  shortName = _props$node$attrs.shortName,
28
30
  id = _props$node$attrs.id,
29
31
  text = _props$node$attrs.text;
32
+ if ((_props$options = props.options) !== null && _props$options !== void 0 && _props$options.emojiNodeDataProvider) {
33
+ return /*#__PURE__*/_react.default.createElement(_NdpEmoji.NdpEmoji, {
34
+ node: props.node,
35
+ emojiNodeDataProvider: props.options.emojiNodeDataProvider
36
+ });
37
+ }
30
38
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(EmojiAssistiveTextComponent, {
31
39
  emojiShortName: shortName
32
40
  }), /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Emoji.default, {
@@ -197,7 +197,7 @@ var emojiPlugin = exports.emojiPlugin = function emojiPlugin(_ref2) {
197
197
  return [{
198
198
  name: 'emoji',
199
199
  plugin: function plugin(pmPluginFactoryParams) {
200
- return createEmojiPlugin(pmPluginFactoryParams);
200
+ return createEmojiPlugin(pmPluginFactoryParams, options);
201
201
  }
202
202
  }, {
203
203
  name: 'emojiAsciiInputRule',
@@ -344,7 +344,7 @@ var emojiPluginKey = exports.emojiPluginKey = new _state.PluginKey('emojiPlugin'
344
344
  function getEmojiPluginState(state) {
345
345
  return emojiPluginKey.getState(state) || {};
346
346
  }
347
- function createEmojiPlugin(pmPluginFactoryParams) {
347
+ function createEmojiPlugin(pmPluginFactoryParams, options) {
348
348
  return new _safePlugin.SafePlugin({
349
349
  key: emojiPluginKey,
350
350
  state: {
@@ -382,7 +382,8 @@ function createEmojiPlugin(pmPluginFactoryParams) {
382
382
  pmPluginFactoryParams: pmPluginFactoryParams,
383
383
  Component: _emoji3.EmojiNodeView,
384
384
  extraComponentProps: {
385
- providerFactory: pmPluginFactoryParams.providerFactory
385
+ providerFactory: pmPluginFactoryParams.providerFactory,
386
+ options: options
386
387
  }
387
388
  })
388
389
  }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LoadableSimpleEmojiPlaceholder = exports.LoadableSimpleEmoji = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _reactLoadable = _interopRequireDefault(require("react-loadable"));
10
+ 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); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != (0, _typeof2.default)(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; }
12
+ var LoadableSimpleEmoji = exports.LoadableSimpleEmoji = (0, _reactLoadable.default)({
13
+ loader: function loader() {
14
+ return Promise.resolve().then(function () {
15
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji'));
16
+ }).then(function (component) {
17
+ return component.SimpleEmoji;
18
+ });
19
+ },
20
+ loading: function loading() {
21
+ return null;
22
+ }
23
+ });
24
+ var LoadableSimpleEmojiPlaceholder = exports.LoadableSimpleEmojiPlaceholder = (0, _reactLoadable.default)({
25
+ loader: function loader() {
26
+ return Promise.resolve().then(function () {
27
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji'));
28
+ }).then(function (component) {
29
+ return component.SimpleEmojiPlaceholder;
30
+ });
31
+ },
32
+ loading: function loading() {
33
+ return null;
34
+ }
35
+ });
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.NdpEmoji = NdpEmoji;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _react2 = require("@emotion/react");
10
+ var _reactIntlNext = require("react-intl-next");
11
+ var _emoji = require("@atlaskit/editor-common/emoji");
12
+ var _pluginHooks = require("@atlaskit/node-data-provider/plugin-hooks");
13
+ var _LoadableSimpleEmoji = require("./LoadableSimpleEmoji");
14
+ 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); }
15
+ 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; }
16
+ /**
17
+ * @jsxRuntime classic
18
+ * @jsx jsx
19
+ */
20
+
21
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled
22
+
23
+ function NdpEmoji(props) {
24
+ var emojiNode = props.node;
25
+ var value = (0, _pluginHooks.useNodeDataProviderGet)({
26
+ node: emojiNode,
27
+ provider: props.emojiNodeDataProvider
28
+ });
29
+ if (value.state === 'loading') {
30
+ return (0, _react2.jsx)(EmojiCommonWrapper, {
31
+ emojiNode: emojiNode
32
+ }, (0, _react2.jsx)(_LoadableSimpleEmoji.LoadableSimpleEmojiPlaceholder, {
33
+ shortName: emojiNode.attrs.shortName
34
+ }));
35
+ }
36
+ if (value.state === 'failed') {
37
+ return (0, _react2.jsx)(EmojiCommonWrapper, {
38
+ emojiNode: emojiNode
39
+ }, (0, _react2.jsx)(_react.Fragment, null, emojiNode.attrs.text || emojiNode.attrs.shortName));
40
+ }
41
+ return (0, _react2.jsx)(EmojiCommonWrapper, {
42
+ emojiNode: emojiNode
43
+ }, (0, _react2.jsx)(_LoadableSimpleEmoji.LoadableSimpleEmoji, {
44
+ emojiDescription: value.result
45
+ }));
46
+ }
47
+ var clickSelectWrapperStyle = (0, _react2.css)({
48
+ userSelect: 'all'
49
+ });
50
+ var EmojiAssistiveTextComponent = /*#__PURE__*/_react.default.memo(function (_ref) {
51
+ var emojiShortName = _ref.emojiShortName;
52
+ var intl = (0, _reactIntlNext.useIntl)();
53
+ return (
54
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
55
+ (0, _react2.jsx)("span", {
56
+ style: {
57
+ fontSize: 0
58
+ }
59
+ }, "".concat(intl.formatMessage(_emoji.messages.emojiNodeLabel), " ").concat(emojiShortName))
60
+ );
61
+ });
62
+ function EmojiCommonWrapper(_ref2) {
63
+ var emojiNode = _ref2.emojiNode,
64
+ children = _ref2.children;
65
+ return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(EmojiAssistiveTextComponent, {
66
+ emojiShortName: emojiNode.attrs.shortName
67
+ }), (0, _react2.jsx)("span", null, (0, _react2.jsx)("span", {
68
+ css: clickSelectWrapperStyle
69
+ }, (0, _react2.jsx)("span", {
70
+ "data-emoji-id": emojiNode.attrs.id,
71
+ "data-emoji-short-name": emojiNode.attrs.shortName,
72
+ "data-emoji-text": emojiNode.attrs.text || emojiNode.attrs.shortName
73
+ }, children))));
74
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SimpleEmoji = SimpleEmoji;
8
+ exports.SimpleEmojiPlaceholder = SimpleEmojiPlaceholder;
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _emoji = require("@atlaskit/emoji");
11
+ function SimpleEmoji(_ref) {
12
+ var emojiDescription = _ref.emojiDescription;
13
+ return /*#__PURE__*/_react.default.createElement(_emoji.Emoji, {
14
+ emoji: emojiDescription,
15
+ autoWidth: false,
16
+ editorEmoji: true,
17
+ fitToHeight: _emoji.defaultEmojiHeight
18
+ });
19
+ }
20
+ function SimpleEmojiPlaceholder(_ref2) {
21
+ var shortName = _ref2.shortName;
22
+ return /*#__PURE__*/_react.default.createElement(_emoji.EmojiPlaceholder, {
23
+ shortName: shortName,
24
+ showTooltip: false,
25
+ size: _emoji.defaultEmojiHeight,
26
+ loading: true
27
+ });
28
+ }
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { useIntl } from 'react-intl-next';
3
3
  import { messages } from '@atlaskit/editor-common/emoji';
4
4
  import Emoji from '../ui/Emoji';
5
+ import { NdpEmoji } from '../ui/NdpEmoji';
5
6
  const EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(({
6
7
  emojiShortName
7
8
  }) => {
@@ -17,11 +18,18 @@ const EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(({
17
18
  );
18
19
  });
19
20
  export function EmojiNodeView(props) {
21
+ var _props$options;
20
22
  const {
21
23
  shortName,
22
24
  id,
23
25
  text
24
26
  } = props.node.attrs;
27
+ if ((_props$options = props.options) !== null && _props$options !== void 0 && _props$options.emojiNodeDataProvider) {
28
+ return /*#__PURE__*/React.createElement(NdpEmoji, {
29
+ node: props.node,
30
+ emojiNodeDataProvider: props.options.emojiNodeDataProvider
31
+ });
32
+ }
25
33
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EmojiAssistiveTextComponent, {
26
34
  emojiShortName: shortName
27
35
  }), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Emoji, {
@@ -178,7 +178,7 @@ export const emojiPlugin = ({
178
178
  pmPlugins() {
179
179
  return [{
180
180
  name: 'emoji',
181
- plugin: pmPluginFactoryParams => createEmojiPlugin(pmPluginFactoryParams)
181
+ plugin: pmPluginFactoryParams => createEmojiPlugin(pmPluginFactoryParams, options)
182
182
  }, {
183
183
  name: 'emojiAsciiInputRule',
184
184
  plugin: ({
@@ -319,7 +319,7 @@ export const emojiPluginKey = new PluginKey('emojiPlugin');
319
319
  export function getEmojiPluginState(state) {
320
320
  return emojiPluginKey.getState(state) || {};
321
321
  }
322
- export function createEmojiPlugin(pmPluginFactoryParams) {
322
+ export function createEmojiPlugin(pmPluginFactoryParams, options) {
323
323
  return new SafePlugin({
324
324
  key: emojiPluginKey,
325
325
  state: {
@@ -360,7 +360,8 @@ export function createEmojiPlugin(pmPluginFactoryParams) {
360
360
  pmPluginFactoryParams,
361
361
  Component: EmojiNodeView,
362
362
  extraComponentProps: {
363
- providerFactory: pmPluginFactoryParams.providerFactory
363
+ providerFactory: pmPluginFactoryParams.providerFactory,
364
+ options
364
365
  }
365
366
  })
366
367
  }
@@ -0,0 +1,9 @@
1
+ import Loadable from 'react-loadable';
2
+ export const LoadableSimpleEmoji = Loadable({
3
+ loader: () => import( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji').then(component => component.SimpleEmoji),
4
+ loading: () => null
5
+ });
6
+ export const LoadableSimpleEmojiPlaceholder = Loadable({
7
+ loader: () => import( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji').then(component => component.SimpleEmojiPlaceholder),
8
+ loading: () => null
9
+ });
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import React, { Fragment } from 'react';
6
+
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled
8
+ import { css, jsx } from '@emotion/react';
9
+ import { useIntl } from 'react-intl-next';
10
+ import { messages } from '@atlaskit/editor-common/emoji';
11
+ import { useNodeDataProviderGet } from '@atlaskit/node-data-provider/plugin-hooks';
12
+ import { LoadableSimpleEmoji, LoadableSimpleEmojiPlaceholder } from './LoadableSimpleEmoji';
13
+ export function NdpEmoji(props) {
14
+ const emojiNode = props.node;
15
+ const value = useNodeDataProviderGet({
16
+ node: emojiNode,
17
+ provider: props.emojiNodeDataProvider
18
+ });
19
+ if (value.state === 'loading') {
20
+ return jsx(EmojiCommonWrapper, {
21
+ emojiNode: emojiNode
22
+ }, jsx(LoadableSimpleEmojiPlaceholder, {
23
+ shortName: emojiNode.attrs.shortName
24
+ }));
25
+ }
26
+ if (value.state === 'failed') {
27
+ return jsx(EmojiCommonWrapper, {
28
+ emojiNode: emojiNode
29
+ }, jsx(Fragment, null, emojiNode.attrs.text || emojiNode.attrs.shortName));
30
+ }
31
+ return jsx(EmojiCommonWrapper, {
32
+ emojiNode: emojiNode
33
+ }, jsx(LoadableSimpleEmoji, {
34
+ emojiDescription: value.result
35
+ }));
36
+ }
37
+ const clickSelectWrapperStyle = css({
38
+ userSelect: 'all'
39
+ });
40
+ const EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(({
41
+ emojiShortName
42
+ }) => {
43
+ const intl = useIntl();
44
+ return (
45
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
46
+ jsx("span", {
47
+ style: {
48
+ fontSize: 0
49
+ }
50
+ }, `${intl.formatMessage(messages.emojiNodeLabel)} ${emojiShortName}`)
51
+ );
52
+ });
53
+ function EmojiCommonWrapper({
54
+ emojiNode,
55
+ children
56
+ }) {
57
+ return jsx(Fragment, null, jsx(EmojiAssistiveTextComponent, {
58
+ emojiShortName: emojiNode.attrs.shortName
59
+ }), jsx("span", null, jsx("span", {
60
+ css: clickSelectWrapperStyle
61
+ }, jsx("span", {
62
+ "data-emoji-id": emojiNode.attrs.id,
63
+ "data-emoji-short-name": emojiNode.attrs.shortName,
64
+ "data-emoji-text": emojiNode.attrs.text || emojiNode.attrs.shortName
65
+ }, children))));
66
+ }
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { Emoji as AtlaskitEmoji, defaultEmojiHeight, EmojiPlaceholder } from '@atlaskit/emoji';
3
+ export function SimpleEmoji({
4
+ emojiDescription
5
+ }) {
6
+ return /*#__PURE__*/React.createElement(AtlaskitEmoji, {
7
+ emoji: emojiDescription,
8
+ autoWidth: false,
9
+ editorEmoji: true,
10
+ fitToHeight: defaultEmojiHeight
11
+ });
12
+ }
13
+ export function SimpleEmojiPlaceholder({
14
+ shortName
15
+ }) {
16
+ return /*#__PURE__*/React.createElement(EmojiPlaceholder, {
17
+ shortName: shortName,
18
+ showTooltip: false,
19
+ size: defaultEmojiHeight,
20
+ loading: true
21
+ });
22
+ }
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { useIntl } from 'react-intl-next';
3
3
  import { messages } from '@atlaskit/editor-common/emoji';
4
4
  import Emoji from '../ui/Emoji';
5
+ import { NdpEmoji } from '../ui/NdpEmoji';
5
6
  var EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(function (_ref) {
6
7
  var emojiShortName = _ref.emojiShortName;
7
8
  var intl = useIntl();
@@ -16,10 +17,17 @@ var EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(function (_ref) {
16
17
  );
17
18
  });
18
19
  export function EmojiNodeView(props) {
20
+ var _props$options;
19
21
  var _props$node$attrs = props.node.attrs,
20
22
  shortName = _props$node$attrs.shortName,
21
23
  id = _props$node$attrs.id,
22
24
  text = _props$node$attrs.text;
25
+ if ((_props$options = props.options) !== null && _props$options !== void 0 && _props$options.emojiNodeDataProvider) {
26
+ return /*#__PURE__*/React.createElement(NdpEmoji, {
27
+ node: props.node,
28
+ emojiNodeDataProvider: props.options.emojiNodeDataProvider
29
+ });
30
+ }
23
31
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EmojiAssistiveTextComponent, {
24
32
  emojiShortName: shortName
25
33
  }), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Emoji, {
@@ -184,7 +184,7 @@ export var emojiPlugin = function emojiPlugin(_ref2) {
184
184
  return [{
185
185
  name: 'emoji',
186
186
  plugin: function plugin(pmPluginFactoryParams) {
187
- return createEmojiPlugin(pmPluginFactoryParams);
187
+ return createEmojiPlugin(pmPluginFactoryParams, options);
188
188
  }
189
189
  }, {
190
190
  name: 'emojiAsciiInputRule',
@@ -331,7 +331,7 @@ export var emojiPluginKey = new PluginKey('emojiPlugin');
331
331
  export function getEmojiPluginState(state) {
332
332
  return emojiPluginKey.getState(state) || {};
333
333
  }
334
- export function createEmojiPlugin(pmPluginFactoryParams) {
334
+ export function createEmojiPlugin(pmPluginFactoryParams, options) {
335
335
  return new SafePlugin({
336
336
  key: emojiPluginKey,
337
337
  state: {
@@ -369,7 +369,8 @@ export function createEmojiPlugin(pmPluginFactoryParams) {
369
369
  pmPluginFactoryParams: pmPluginFactoryParams,
370
370
  Component: EmojiNodeView,
371
371
  extraComponentProps: {
372
- providerFactory: pmPluginFactoryParams.providerFactory
372
+ providerFactory: pmPluginFactoryParams.providerFactory,
373
+ options: options
373
374
  }
374
375
  })
375
376
  }
@@ -0,0 +1,21 @@
1
+ import Loadable from 'react-loadable';
2
+ export var LoadableSimpleEmoji = Loadable({
3
+ loader: function loader() {
4
+ return import( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji').then(function (component) {
5
+ return component.SimpleEmoji;
6
+ });
7
+ },
8
+ loading: function loading() {
9
+ return null;
10
+ }
11
+ });
12
+ export var LoadableSimpleEmojiPlaceholder = Loadable({
13
+ loader: function loader() {
14
+ return import( /* webpackChunkName: "@atlaskit-internal_simpleEmoji" */'./SimpleEmoji').then(function (component) {
15
+ return component.SimpleEmojiPlaceholder;
16
+ });
17
+ },
18
+ loading: function loading() {
19
+ return null;
20
+ }
21
+ });
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import React, { Fragment } from 'react';
6
+
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled
8
+ import { css, jsx } from '@emotion/react';
9
+ import { useIntl } from 'react-intl-next';
10
+ import { messages } from '@atlaskit/editor-common/emoji';
11
+ import { useNodeDataProviderGet } from '@atlaskit/node-data-provider/plugin-hooks';
12
+ import { LoadableSimpleEmoji, LoadableSimpleEmojiPlaceholder } from './LoadableSimpleEmoji';
13
+ export function NdpEmoji(props) {
14
+ var emojiNode = props.node;
15
+ var value = useNodeDataProviderGet({
16
+ node: emojiNode,
17
+ provider: props.emojiNodeDataProvider
18
+ });
19
+ if (value.state === 'loading') {
20
+ return jsx(EmojiCommonWrapper, {
21
+ emojiNode: emojiNode
22
+ }, jsx(LoadableSimpleEmojiPlaceholder, {
23
+ shortName: emojiNode.attrs.shortName
24
+ }));
25
+ }
26
+ if (value.state === 'failed') {
27
+ return jsx(EmojiCommonWrapper, {
28
+ emojiNode: emojiNode
29
+ }, jsx(Fragment, null, emojiNode.attrs.text || emojiNode.attrs.shortName));
30
+ }
31
+ return jsx(EmojiCommonWrapper, {
32
+ emojiNode: emojiNode
33
+ }, jsx(LoadableSimpleEmoji, {
34
+ emojiDescription: value.result
35
+ }));
36
+ }
37
+ var clickSelectWrapperStyle = css({
38
+ userSelect: 'all'
39
+ });
40
+ var EmojiAssistiveTextComponent = /*#__PURE__*/React.memo(function (_ref) {
41
+ var emojiShortName = _ref.emojiShortName;
42
+ var intl = useIntl();
43
+ return (
44
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
45
+ jsx("span", {
46
+ style: {
47
+ fontSize: 0
48
+ }
49
+ }, "".concat(intl.formatMessage(messages.emojiNodeLabel), " ").concat(emojiShortName))
50
+ );
51
+ });
52
+ function EmojiCommonWrapper(_ref2) {
53
+ var emojiNode = _ref2.emojiNode,
54
+ children = _ref2.children;
55
+ return jsx(Fragment, null, jsx(EmojiAssistiveTextComponent, {
56
+ emojiShortName: emojiNode.attrs.shortName
57
+ }), jsx("span", null, jsx("span", {
58
+ css: clickSelectWrapperStyle
59
+ }, jsx("span", {
60
+ "data-emoji-id": emojiNode.attrs.id,
61
+ "data-emoji-short-name": emojiNode.attrs.shortName,
62
+ "data-emoji-text": emojiNode.attrs.text || emojiNode.attrs.shortName
63
+ }, children))));
64
+ }
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { Emoji as AtlaskitEmoji, defaultEmojiHeight, EmojiPlaceholder } from '@atlaskit/emoji';
3
+ export function SimpleEmoji(_ref) {
4
+ var emojiDescription = _ref.emojiDescription;
5
+ return /*#__PURE__*/React.createElement(AtlaskitEmoji, {
6
+ emoji: emojiDescription,
7
+ autoWidth: false,
8
+ editorEmoji: true,
9
+ fitToHeight: defaultEmojiHeight
10
+ });
11
+ }
12
+ export function SimpleEmojiPlaceholder(_ref2) {
13
+ var shortName = _ref2.shortName;
14
+ return /*#__PURE__*/React.createElement(EmojiPlaceholder, {
15
+ shortName: shortName,
16
+ showTooltip: false,
17
+ size: defaultEmojiHeight,
18
+ loading: true
19
+ });
20
+ }
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
3
3
  import type { InlineNodeViewComponentProps } from '@atlaskit/editor-common/react-node-view';
4
+ import { type EmojiPluginOptions } from '../types';
4
5
  export type Props = InlineNodeViewComponentProps & {
5
6
  providerFactory: ProviderFactory;
7
+ options?: EmojiPluginOptions;
6
8
  };
7
9
  export declare function EmojiNodeView(props: Props): JSX.Element;
@@ -3,7 +3,7 @@ import type { Command, PMPluginFactoryParams, TypeAheadItem } from '@atlaskit/ed
3
3
  import type { EditorState } from '@atlaskit/editor-prosemirror/state';
4
4
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
5
5
  import type { EmojiDescription, EmojiProvider } from '@atlaskit/emoji';
6
- import type { EmojiPlugin, EmojiPluginState } from './types';
6
+ import type { EmojiPlugin, EmojiPluginOptions, EmojiPluginState } from './types';
7
7
  export declare const emojiToTypeaheadItem: (emoji: EmojiDescription, emojiProvider?: EmojiProvider) => TypeAheadItem;
8
8
  export declare function memoize<ResultFn extends (emoji: EmojiDescription, emojiProvider?: EmojiProvider) => TypeAheadItem>(fn: ResultFn): {
9
9
  call: ResultFn;
@@ -39,4 +39,4 @@ export declare function createRateLimitReachedFunction<LimitedFunction extends (
39
39
  export declare const setProvider: ((provider?: EmojiProvider) => Command) | undefined;
40
40
  export declare const emojiPluginKey: PluginKey<EmojiPluginState>;
41
41
  export declare function getEmojiPluginState(state: EditorState): EmojiPluginState;
42
- export declare function createEmojiPlugin(pmPluginFactoryParams: PMPluginFactoryParams): SafePlugin<EmojiPluginState>;
42
+ export declare function createEmojiPlugin(pmPluginFactoryParams: PMPluginFactoryParams, options?: EmojiPluginOptions): SafePlugin<EmojiPluginState>;
@@ -3,8 +3,10 @@ import type { EditorCommand, NextEditorPlugin, OptionalPlugin, TypeAheadHandler
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
4
  import type { TypeAheadInputMethod, TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
5
5
  import type { EmojiDescription, EmojiId, EmojiProvider, EmojiResourceConfig } from '@atlaskit/emoji';
6
+ import { type EmojiNodeDataProvider } from '@atlaskit/node-data-provider/emoji-provider';
6
7
  export interface EmojiPluginOptions {
7
8
  headless?: boolean;
9
+ emojiNodeDataProvider?: EmojiNodeDataProvider;
8
10
  }
9
11
  export type EmojiPluginState = {
10
12
  emojiProvider?: EmojiProvider;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import Loadable from 'react-loadable';
3
+ import { type SimpleEmojiPlaceholderProps, type SimpleEmojiProps } from './SimpleEmoji';
4
+ export declare const LoadableSimpleEmoji: import("react").ComponentType<import("react").PropsWithChildren<SimpleEmojiProps>> & Loadable.LoadableComponent;
5
+ export declare const LoadableSimpleEmojiPlaceholder: import("react").ComponentType<import("react").PropsWithChildren<SimpleEmojiPlaceholderProps>> & Loadable.LoadableComponent;
@@ -0,0 +1,7 @@
1
+ import { jsx } from '@emotion/react';
2
+ import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
+ import { type EmojiNodeDataProvider } from '@atlaskit/node-data-provider/emoji-provider';
4
+ export declare function NdpEmoji(props: {
5
+ node: PMNode;
6
+ emojiNodeDataProvider: EmojiNodeDataProvider;
7
+ }): jsx.JSX.Element;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { type EmojiDescription } from '@atlaskit/emoji';
3
+ export type SimpleEmojiProps = {
4
+ emojiDescription: EmojiDescription;
5
+ };
6
+ export declare function SimpleEmoji({ emojiDescription }: {
7
+ emojiDescription: EmojiDescription;
8
+ }): JSX.Element;
9
+ export type SimpleEmojiPlaceholderProps = {
10
+ shortName: string;
11
+ };
12
+ export declare function SimpleEmojiPlaceholder({ shortName }: {
13
+ shortName: string;
14
+ }): JSX.Element;
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
3
3
  import type { InlineNodeViewComponentProps } from '@atlaskit/editor-common/react-node-view';
4
+ import { type EmojiPluginOptions } from '../types';
4
5
  export type Props = InlineNodeViewComponentProps & {
5
6
  providerFactory: ProviderFactory;
7
+ options?: EmojiPluginOptions;
6
8
  };
7
9
  export declare function EmojiNodeView(props: Props): JSX.Element;
@@ -3,7 +3,7 @@ import type { Command, PMPluginFactoryParams, TypeAheadItem } from '@atlaskit/ed
3
3
  import type { EditorState } from '@atlaskit/editor-prosemirror/state';
4
4
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
5
5
  import type { EmojiDescription, EmojiProvider } from '@atlaskit/emoji';
6
- import type { EmojiPlugin, EmojiPluginState } from './types';
6
+ import type { EmojiPlugin, EmojiPluginOptions, EmojiPluginState } from './types';
7
7
  export declare const emojiToTypeaheadItem: (emoji: EmojiDescription, emojiProvider?: EmojiProvider) => TypeAheadItem;
8
8
  export declare function memoize<ResultFn extends (emoji: EmojiDescription, emojiProvider?: EmojiProvider) => TypeAheadItem>(fn: ResultFn): {
9
9
  call: ResultFn;
@@ -39,4 +39,4 @@ export declare function createRateLimitReachedFunction<LimitedFunction extends (
39
39
  export declare const setProvider: ((provider?: EmojiProvider) => Command) | undefined;
40
40
  export declare const emojiPluginKey: PluginKey<EmojiPluginState>;
41
41
  export declare function getEmojiPluginState(state: EditorState): EmojiPluginState;
42
- export declare function createEmojiPlugin(pmPluginFactoryParams: PMPluginFactoryParams): SafePlugin<EmojiPluginState>;
42
+ export declare function createEmojiPlugin(pmPluginFactoryParams: PMPluginFactoryParams, options?: EmojiPluginOptions): SafePlugin<EmojiPluginState>;
@@ -3,8 +3,10 @@ import type { EditorCommand, NextEditorPlugin, OptionalPlugin, TypeAheadHandler
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
4
  import type { TypeAheadInputMethod, TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
5
5
  import type { EmojiDescription, EmojiId, EmojiProvider, EmojiResourceConfig } from '@atlaskit/emoji';
6
+ import { type EmojiNodeDataProvider } from '@atlaskit/node-data-provider/emoji-provider';
6
7
  export interface EmojiPluginOptions {
7
8
  headless?: boolean;
9
+ emojiNodeDataProvider?: EmojiNodeDataProvider;
8
10
  }
9
11
  export type EmojiPluginState = {
10
12
  emojiProvider?: EmojiProvider;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import Loadable from 'react-loadable';
3
+ import { type SimpleEmojiPlaceholderProps, type SimpleEmojiProps } from './SimpleEmoji';
4
+ export declare const LoadableSimpleEmoji: import("react").ComponentType<import("react").PropsWithChildren<SimpleEmojiProps>> & Loadable.LoadableComponent;
5
+ export declare const LoadableSimpleEmojiPlaceholder: import("react").ComponentType<import("react").PropsWithChildren<SimpleEmojiPlaceholderProps>> & Loadable.LoadableComponent;
@@ -0,0 +1,7 @@
1
+ import { jsx } from '@emotion/react';
2
+ import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
+ import { type EmojiNodeDataProvider } from '@atlaskit/node-data-provider/emoji-provider';
4
+ export declare function NdpEmoji(props: {
5
+ node: PMNode;
6
+ emojiNodeDataProvider: EmojiNodeDataProvider;
7
+ }): jsx.JSX.Element;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { type EmojiDescription } from '@atlaskit/emoji';
3
+ export type SimpleEmojiProps = {
4
+ emojiDescription: EmojiDescription;
5
+ };
6
+ export declare function SimpleEmoji({ emojiDescription }: {
7
+ emojiDescription: EmojiDescription;
8
+ }): JSX.Element;
9
+ export type SimpleEmojiPlaceholderProps = {
10
+ shortName: string;
11
+ };
12
+ export declare function SimpleEmojiPlaceholder({ shortName }: {
13
+ shortName: string;
14
+ }): JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-emoji",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "description": "Emoji plugin for @atlaskit/editor-core",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -21,17 +21,19 @@
21
21
  "runReact18": false
22
22
  },
23
23
  "dependencies": {
24
- "@atlaskit/adf-schema": "^40.8.1",
25
- "@atlaskit/editor-common": "^88.0.0",
24
+ "@atlaskit/adf-schema": "^40.9.0",
25
+ "@atlaskit/editor-common": "^88.4.0",
26
26
  "@atlaskit/editor-plugin-analytics": "^1.8.0",
27
27
  "@atlaskit/editor-plugin-type-ahead": "^1.8.0",
28
28
  "@atlaskit/editor-prosemirror": "5.0.1",
29
29
  "@atlaskit/emoji": "^67.7.0",
30
+ "@atlaskit/node-data-provider": "^2.0.0",
30
31
  "@atlaskit/platform-feature-flags": "^0.3.0",
31
32
  "@atlaskit/prosemirror-input-rules": "^3.2.0",
32
33
  "@babel/runtime": "^7.0.0",
33
34
  "@emotion/react": "^11.7.1",
34
- "react-intl-next": "npm:react-intl@^5.18.1"
35
+ "react-intl-next": "npm:react-intl@^5.18.1",
36
+ "react-loadable": "^5.1.0"
35
37
  },
36
38
  "peerDependencies": {
37
39
  "react": "^16.8.0"