@atlaskit/editor-plugin-emoji 11.1.1 → 11.2.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,18 @@
1
1
  # @atlaskit/editor-plugin-emoji
2
2
 
3
+ ## 11.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`98324cca28bc6`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/98324cca28bc6) -
8
+ Add unicode emoji support to EmojiNodeView
9
+
10
+ ## 11.1.2
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies
15
+
3
16
  ## 11.1.1
4
17
 
5
18
  ### Patch Changes
@@ -12,6 +12,7 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
12
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
+ var _browserApis = require("@atlaskit/browser-apis");
15
16
  var _coreUtils = require("@atlaskit/editor-common/core-utils");
16
17
  var _emoji = require("@atlaskit/editor-common/emoji");
17
18
  var _monitoring = require("@atlaskit/editor-common/monitoring");
@@ -223,7 +224,12 @@ var EmojiNodeView = exports.EmojiNodeView = /*#__PURE__*/function () {
223
224
  value: function renderFallback() {
224
225
  this.renderingFallback = true;
225
226
  this.cleanUpAndRenderCommonAttributes();
226
- var fallbackElement = document.createElement('span');
227
+ var doc = (0, _browserApis.getDocument)();
228
+ if (!doc) {
229
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
230
+ doc = document;
231
+ }
232
+ var fallbackElement = doc.createElement('span');
227
233
  fallbackElement.innerText = this.node.attrs.text || this.node.attrs.shortName;
228
234
  fallbackElement.setAttribute('data-testid', "fallback-emoji-".concat(this.node.attrs.shortName));
229
235
  fallbackElement.setAttribute('data-emoji-type', 'fallback');
@@ -235,23 +241,54 @@ var EmojiNodeView = exports.EmojiNodeView = /*#__PURE__*/function () {
235
241
  this.renderingFallback = false;
236
242
  this.cleanUpAndRenderCommonAttributes();
237
243
  var emojiType = 'sprite' in representation ? 'sprite' : 'image';
244
+ var doc = (0, _browserApis.getDocument)();
245
+ if (!doc) {
246
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
247
+ doc = document;
248
+ }
238
249
 
239
250
  // Add wrapper for the emoji
240
- var containerElement = document.createElement('span');
251
+ var containerElement = doc.createElement('span');
241
252
  containerElement.setAttribute('role', 'img');
242
253
  containerElement.setAttribute('title', description.shortName);
243
254
  containerElement.classList.add(_emoji.EmojiSharedCssClassName.EMOJI_CONTAINER);
244
255
  containerElement.setAttribute('data-testid', "".concat(emojiType, "-emoji-").concat(description.shortName));
245
256
  containerElement.setAttribute('data-emoji-type', emojiType);
246
257
  containerElement.setAttribute('aria-label', "".concat(this.intl.formatMessage(_emoji.messages.emojiNodeLabel), " ").concat(description.shortName));
247
- var emojiElement = 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
258
+ var emojiElement = 'unicodeEmoji' in representation ? this.createUnicodeEmojiElement(representation.unicodeEmoji) : 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
248
259
  containerElement.appendChild(emojiElement);
249
260
  this.dom.appendChild(containerElement);
250
261
  }
262
+ }, {
263
+ key: "createUnicodeEmojiElement",
264
+ value: function createUnicodeEmojiElement(emoji) {
265
+ var doc = (0, _browserApis.getDocument)();
266
+ if (!doc) {
267
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
268
+ doc = document;
269
+ }
270
+ var spanElement = doc.createElement('span');
271
+ spanElement.classList.add(_emoji.EmojiSharedCssClassName.EMOJI_IMAGE);
272
+ spanElement.style.textAlign = 'center';
273
+ spanElement.style.alignContent = 'center';
274
+ spanElement.textContent = emoji;
275
+ spanElement.style.fontSize = "max(1em, ".concat(_emoji.defaultEmojiHeight, "px)");
276
+ spanElement.style.width = "max(calc(1em + 2px), ".concat(_emoji.defaultEmojiHeight + 2, "px)");
277
+ spanElement.style.height = "max(calc(1em + 2px), ".concat(_emoji.defaultEmojiHeight + 2, "px)");
278
+ spanElement.style.lineHeight = '0';
279
+ spanElement.style.margin = '0';
280
+ spanElement.style.padding = '0';
281
+ return spanElement;
282
+ }
251
283
  }, {
252
284
  key: "createSpriteEmojiElement",
253
285
  value: function createSpriteEmojiElement(representation) {
254
- var spriteElement = document.createElement('span');
286
+ var doc = (0, _browserApis.getDocument)();
287
+ if (!doc) {
288
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
289
+ doc = document;
290
+ }
291
+ var spriteElement = doc.createElement('span');
255
292
  spriteElement.classList.add(_emoji.EmojiSharedCssClassName.EMOJI_SPRITE);
256
293
  var sprite = representation.sprite;
257
294
  var xPositionInPercent = 100 / (sprite.column - 1) * representation.xIndex;
@@ -271,7 +308,12 @@ var EmojiNodeView = exports.EmojiNodeView = /*#__PURE__*/function () {
271
308
  key: "createImageEmojiElement",
272
309
  value: function createImageEmojiElement(emojiDescription, representation) {
273
310
  var _this2 = this;
274
- var imageElement = document.createElement('img');
311
+ var doc = (0, _browserApis.getDocument)();
312
+ if (!doc) {
313
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
314
+ doc = document;
315
+ }
316
+ var imageElement = doc.createElement('img');
275
317
  imageElement.classList.add(_emoji.EmojiSharedCssClassName.EMOJI_IMAGE);
276
318
  imageElement.src = 'imagePath' in representation ? representation.imagePath : representation.mediaPath;
277
319
  imageElement.loading = 'lazy';
@@ -1,5 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import isEqual from 'lodash/isEqual';
3
+ import { getDocument } from '@atlaskit/browser-apis';
3
4
  import { isSSR } from '@atlaskit/editor-common/core-utils';
4
5
  import { messages, EmojiSharedCssClassName, defaultEmojiHeight } from '@atlaskit/editor-common/emoji';
5
6
  import { logException } from '@atlaskit/editor-common/monitoring';
@@ -191,7 +192,12 @@ export class EmojiNodeView {
191
192
  renderFallback() {
192
193
  this.renderingFallback = true;
193
194
  this.cleanUpAndRenderCommonAttributes();
194
- const fallbackElement = document.createElement('span');
195
+ let doc = getDocument();
196
+ if (!doc) {
197
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
198
+ doc = document;
199
+ }
200
+ const fallbackElement = doc.createElement('span');
195
201
  fallbackElement.innerText = this.node.attrs.text || this.node.attrs.shortName;
196
202
  fallbackElement.setAttribute('data-testid', `fallback-emoji-${this.node.attrs.shortName}`);
197
203
  fallbackElement.setAttribute('data-emoji-type', 'fallback');
@@ -201,21 +207,50 @@ export class EmojiNodeView {
201
207
  this.renderingFallback = false;
202
208
  this.cleanUpAndRenderCommonAttributes();
203
209
  const emojiType = 'sprite' in representation ? 'sprite' : 'image';
210
+ let doc = getDocument();
211
+ if (!doc) {
212
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
213
+ doc = document;
214
+ }
204
215
 
205
216
  // Add wrapper for the emoji
206
- const containerElement = document.createElement('span');
217
+ const containerElement = doc.createElement('span');
207
218
  containerElement.setAttribute('role', 'img');
208
219
  containerElement.setAttribute('title', description.shortName);
209
220
  containerElement.classList.add(EmojiSharedCssClassName.EMOJI_CONTAINER);
210
221
  containerElement.setAttribute('data-testid', `${emojiType}-emoji-${description.shortName}`);
211
222
  containerElement.setAttribute('data-emoji-type', emojiType);
212
223
  containerElement.setAttribute('aria-label', `${this.intl.formatMessage(messages.emojiNodeLabel)} ${description.shortName}`);
213
- const emojiElement = 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
224
+ const emojiElement = 'unicodeEmoji' in representation ? this.createUnicodeEmojiElement(representation.unicodeEmoji) : 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
214
225
  containerElement.appendChild(emojiElement);
215
226
  this.dom.appendChild(containerElement);
216
227
  }
228
+ createUnicodeEmojiElement(emoji) {
229
+ let doc = getDocument();
230
+ if (!doc) {
231
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
232
+ doc = document;
233
+ }
234
+ const spanElement = doc.createElement('span');
235
+ spanElement.classList.add(EmojiSharedCssClassName.EMOJI_IMAGE);
236
+ spanElement.style.textAlign = 'center';
237
+ spanElement.style.alignContent = 'center';
238
+ spanElement.textContent = emoji;
239
+ spanElement.style.fontSize = `max(1em, ${defaultEmojiHeight}px)`;
240
+ spanElement.style.width = `max(calc(1em + 2px), ${defaultEmojiHeight + 2}px)`;
241
+ spanElement.style.height = `max(calc(1em + 2px), ${defaultEmojiHeight + 2}px)`;
242
+ spanElement.style.lineHeight = '0';
243
+ spanElement.style.margin = '0';
244
+ spanElement.style.padding = '0';
245
+ return spanElement;
246
+ }
217
247
  createSpriteEmojiElement(representation) {
218
- const spriteElement = document.createElement('span');
248
+ let doc = getDocument();
249
+ if (!doc) {
250
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
251
+ doc = document;
252
+ }
253
+ const spriteElement = doc.createElement('span');
219
254
  spriteElement.classList.add(EmojiSharedCssClassName.EMOJI_SPRITE);
220
255
  const sprite = representation.sprite;
221
256
  const xPositionInPercent = 100 / (sprite.column - 1) * representation.xIndex;
@@ -232,7 +267,12 @@ export class EmojiNodeView {
232
267
  return spriteElement;
233
268
  }
234
269
  createImageEmojiElement(emojiDescription, representation) {
235
- const imageElement = document.createElement('img');
270
+ let doc = getDocument();
271
+ if (!doc) {
272
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
273
+ doc = document;
274
+ }
275
+ const imageElement = doc.createElement('img');
236
276
  imageElement.classList.add(EmojiSharedCssClassName.EMOJI_IMAGE);
237
277
  imageElement.src = 'imagePath' in representation ? representation.imagePath : representation.mediaPath;
238
278
  imageElement.loading = 'lazy';
@@ -4,6 +4,7 @@ import _createClass from "@babel/runtime/helpers/createClass";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  import isEqual from 'lodash/isEqual';
7
+ import { getDocument } from '@atlaskit/browser-apis';
7
8
  import { isSSR } from '@atlaskit/editor-common/core-utils';
8
9
  import { messages, EmojiSharedCssClassName, defaultEmojiHeight } from '@atlaskit/editor-common/emoji';
9
10
  import { logException } from '@atlaskit/editor-common/monitoring';
@@ -215,7 +216,12 @@ export var EmojiNodeView = /*#__PURE__*/function () {
215
216
  value: function renderFallback() {
216
217
  this.renderingFallback = true;
217
218
  this.cleanUpAndRenderCommonAttributes();
218
- var fallbackElement = document.createElement('span');
219
+ var doc = getDocument();
220
+ if (!doc) {
221
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
222
+ doc = document;
223
+ }
224
+ var fallbackElement = doc.createElement('span');
219
225
  fallbackElement.innerText = this.node.attrs.text || this.node.attrs.shortName;
220
226
  fallbackElement.setAttribute('data-testid', "fallback-emoji-".concat(this.node.attrs.shortName));
221
227
  fallbackElement.setAttribute('data-emoji-type', 'fallback');
@@ -227,23 +233,54 @@ export var EmojiNodeView = /*#__PURE__*/function () {
227
233
  this.renderingFallback = false;
228
234
  this.cleanUpAndRenderCommonAttributes();
229
235
  var emojiType = 'sprite' in representation ? 'sprite' : 'image';
236
+ var doc = getDocument();
237
+ if (!doc) {
238
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
239
+ doc = document;
240
+ }
230
241
 
231
242
  // Add wrapper for the emoji
232
- var containerElement = document.createElement('span');
243
+ var containerElement = doc.createElement('span');
233
244
  containerElement.setAttribute('role', 'img');
234
245
  containerElement.setAttribute('title', description.shortName);
235
246
  containerElement.classList.add(EmojiSharedCssClassName.EMOJI_CONTAINER);
236
247
  containerElement.setAttribute('data-testid', "".concat(emojiType, "-emoji-").concat(description.shortName));
237
248
  containerElement.setAttribute('data-emoji-type', emojiType);
238
249
  containerElement.setAttribute('aria-label', "".concat(this.intl.formatMessage(messages.emojiNodeLabel), " ").concat(description.shortName));
239
- var emojiElement = 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
250
+ var emojiElement = 'unicodeEmoji' in representation ? this.createUnicodeEmojiElement(representation.unicodeEmoji) : 'sprite' in representation ? this.createSpriteEmojiElement(representation) : this.createImageEmojiElement(description, representation);
240
251
  containerElement.appendChild(emojiElement);
241
252
  this.dom.appendChild(containerElement);
242
253
  }
254
+ }, {
255
+ key: "createUnicodeEmojiElement",
256
+ value: function createUnicodeEmojiElement(emoji) {
257
+ var doc = getDocument();
258
+ if (!doc) {
259
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
260
+ doc = document;
261
+ }
262
+ var spanElement = doc.createElement('span');
263
+ spanElement.classList.add(EmojiSharedCssClassName.EMOJI_IMAGE);
264
+ spanElement.style.textAlign = 'center';
265
+ spanElement.style.alignContent = 'center';
266
+ spanElement.textContent = emoji;
267
+ spanElement.style.fontSize = "max(1em, ".concat(defaultEmojiHeight, "px)");
268
+ spanElement.style.width = "max(calc(1em + 2px), ".concat(defaultEmojiHeight + 2, "px)");
269
+ spanElement.style.height = "max(calc(1em + 2px), ".concat(defaultEmojiHeight + 2, "px)");
270
+ spanElement.style.lineHeight = '0';
271
+ spanElement.style.margin = '0';
272
+ spanElement.style.padding = '0';
273
+ return spanElement;
274
+ }
243
275
  }, {
244
276
  key: "createSpriteEmojiElement",
245
277
  value: function createSpriteEmojiElement(representation) {
246
- var spriteElement = document.createElement('span');
278
+ var doc = getDocument();
279
+ if (!doc) {
280
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
281
+ doc = document;
282
+ }
283
+ var spriteElement = doc.createElement('span');
247
284
  spriteElement.classList.add(EmojiSharedCssClassName.EMOJI_SPRITE);
248
285
  var sprite = representation.sprite;
249
286
  var xPositionInPercent = 100 / (sprite.column - 1) * representation.xIndex;
@@ -263,7 +300,12 @@ export var EmojiNodeView = /*#__PURE__*/function () {
263
300
  key: "createImageEmojiElement",
264
301
  value: function createImageEmojiElement(emojiDescription, representation) {
265
302
  var _this2 = this;
266
- var imageElement = document.createElement('img');
303
+ var doc = getDocument();
304
+ if (!doc) {
305
+ // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
306
+ doc = document;
307
+ }
308
+ var imageElement = doc.createElement('img');
267
309
  imageElement.classList.add(EmojiSharedCssClassName.EMOJI_IMAGE);
268
310
  imageElement.src = 'imagePath' in representation ? representation.imagePath : representation.mediaPath;
269
311
  imageElement.loading = 'lazy';
@@ -50,6 +50,7 @@ export declare class EmojiNodeView implements NodeView {
50
50
  private cleanUpAndRenderCommonAttributes;
51
51
  private renderFallback;
52
52
  private renderEmoji;
53
+ private createUnicodeEmojiElement;
53
54
  private createSpriteEmojiElement;
54
55
  private createImageEmojiElement;
55
56
  }
@@ -50,6 +50,7 @@ export declare class EmojiNodeView implements NodeView {
50
50
  private cleanUpAndRenderCommonAttributes;
51
51
  private renderFallback;
52
52
  private renderEmoji;
53
+ private createUnicodeEmojiElement;
53
54
  private createSpriteEmojiElement;
54
55
  private createImageEmojiElement;
55
56
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-emoji",
3
- "version": "11.1.1",
3
+ "version": "11.2.0",
4
4
  "description": "Emoji plugin for @atlaskit/editor-core",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -21,7 +21,8 @@
21
21
  "singleton": true
22
22
  },
23
23
  "dependencies": {
24
- "@atlaskit/adf-schema": "^52.11.0",
24
+ "@atlaskit/adf-schema": "^52.12.0",
25
+ "@atlaskit/browser-apis": "^0.0.1",
25
26
  "@atlaskit/editor-plugin-analytics": "^10.1.0",
26
27
  "@atlaskit/editor-plugin-annotation": "^10.4.0",
27
28
  "@atlaskit/editor-plugin-base": "^11.1.0",
@@ -31,12 +32,12 @@
31
32
  "@atlaskit/editor-plugin-type-ahead": "^10.1.0",
32
33
  "@atlaskit/editor-prosemirror": "^7.3.0",
33
34
  "@atlaskit/editor-shared-styles": "^3.11.0",
34
- "@atlaskit/emoji": "^70.7.0",
35
- "@atlaskit/icon": "^34.5.0",
35
+ "@atlaskit/emoji": "^70.9.0",
36
+ "@atlaskit/icon": "^35.0.0",
36
37
  "@atlaskit/node-data-provider": "^11.1.0",
37
38
  "@atlaskit/platform-feature-flags": "^1.1.0",
38
39
  "@atlaskit/prosemirror-input-rules": "^3.7.0",
39
- "@atlaskit/tmp-editor-statsig": "^81.0.0",
40
+ "@atlaskit/tmp-editor-statsig": "^81.1.0",
40
41
  "@atlaskit/tokens": "^13.0.0",
41
42
  "@babel/runtime": "^7.0.0",
42
43
  "@emotion/react": "^11.7.1",
@@ -44,7 +45,7 @@
44
45
  "react-loadable": "^5.1.0"
45
46
  },
46
47
  "peerDependencies": {
47
- "@atlaskit/editor-common": "^114.32.0",
48
+ "@atlaskit/editor-common": "^114.35.0",
48
49
  "react": "^18.2.0",
49
50
  "react-dom": "^18.2.0",
50
51
  "react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"