@atlaskit/emoji 72.4.11 → 72.4.13

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,22 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 72.4.13
4
+
5
+ ### Patch Changes
6
+
7
+ - [`c03298c2e2f68`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c03298c2e2f68) -
8
+ Cleanup `experiment` `platform_emoji_fetch_in_effect`. `ResourcedEmoji` now always fetches its
9
+ emoji from a layout effect instead of during render, so only committed renders fetch and discarded
10
+ renders (for example a pass that suspends) no longer trigger emoji provider lookups.
11
+
12
+ ## 72.4.12
13
+
14
+ ### Patch Changes
15
+
16
+ - [`8dc7c24a6415f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8dc7c24a6415f) -
17
+ Add gating for Canvas emojis
18
+ - Updated dependencies
19
+
3
20
  ## 72.4.11
4
21
 
5
22
  ### Patch Changes
@@ -14,7 +14,6 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
16
  var _react = _interopRequireWildcard(require("react"));
17
- var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
18
17
  var _fg = require("@atlaskit/platform-feature-flags/fg");
19
18
  var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
20
19
  var _EmojiCommonProvider = require("../../context/EmojiCommonProvider");
@@ -178,18 +177,12 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
178
177
  }
179
178
  }, [emojiId]);
180
179
 
181
- // Fetching from `useMemo` runs during render, so a render React later discards (for example a
182
- // pass that suspends) still creates a promise whose callbacks set state and schedule yet another
183
- // render. The layout effect only runs for committed renders, and being pre-paint it keeps the
184
- // synchronous cache-hit path from flashing the placeholder.
185
- (0, _react.useMemo)(function () {
186
- if (!resolvedEmojiProvider || !emojiId || (0, _isExperimentEnabled.isExperimentEnabled)('platform_emoji_fetch_in_effect')) {
187
- return;
188
- }
189
- fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
190
- }, [resolvedEmojiProvider, emojiId, optimistic, fetchOrGetEmoji]);
180
+ // Fetching during render means a render React later discards (for example a pass that suspends)
181
+ // still creates a promise whose callbacks set state and schedule yet another render. This layout
182
+ // effect only runs for committed renders, and being pre-paint it keeps the synchronous cache-hit
183
+ // path from flashing the placeholder.
191
184
  (0, _react.useLayoutEffect)(function () {
192
- if (!resolvedEmojiProvider || !emojiId || !(0, _isExperimentEnabled.isExperimentEnabled)('platform_emoji_fetch_in_effect')) {
185
+ if (!resolvedEmojiProvider || !emojiId) {
193
186
  return;
194
187
  }
195
188
  fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
@@ -19,7 +19,7 @@ var createEvent = exports.createEvent = function createEvent(eventType, action,
19
19
  actionSubjectId: actionSubjectId,
20
20
  attributes: _objectSpread({
21
21
  packageName: "@atlaskit/emoji",
22
- packageVersion: "72.4.10"
22
+ packageVersion: "72.4.12"
23
23
  }, attributes)
24
24
  };
25
25
  };
@@ -3,16 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.teamoji26RefreshEmojiPickerUserIdGateName = exports.teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = exports.teamoji26RefreshEmojiPickerExperimentName = exports.isTeamoji26RefreshEmojiPickerEnabledNoExposure = exports.isTeamoji26RefreshEmojiPickerEnabled = void 0;
6
+ exports.teamoji26RefreshEmojiPickerUserIdGateName = exports.teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = exports.teamoji26RefreshEmojiPickerExperimentName = exports.teamoji26RefreshEmojiPickerCanvasExperimentName = exports.isTeamoji26RefreshEmojiPickerEnabledNoExposure = exports.isTeamoji26RefreshEmojiPickerEnabled = void 0;
7
7
  var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
8
8
  var _unsafeExpValNoExposure = require("@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure");
9
9
  var _fg = require("@atlaskit/platform-feature-flags/fg");
10
10
  var teamoji26RefreshEmojiPickerExperimentName = exports.teamoji26RefreshEmojiPickerExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
11
+ var teamoji26RefreshEmojiPickerCanvasExperimentName = exports.teamoji26RefreshEmojiPickerCanvasExperimentName = 'platform_teamoji_26_refresh_emoji_picker_canvas';
11
12
  var teamoji26RefreshEmojiPickerUserIdGateName = exports.teamoji26RefreshEmojiPickerUserIdGateName = 'platform_teamoji_26_refresh_emoji_picker_user_id';
12
13
  var teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = exports.teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = 'platform_bitbucket_fix_shortname_and_ordering';
13
14
  var isTeamoji26RefreshEmojiPickerEnabled = exports.isTeamoji26RefreshEmojiPickerEnabled = function isTeamoji26RefreshEmojiPickerEnabled() {
14
- return (0, _isExperimentEnabled.isExperimentEnabled)(teamoji26RefreshEmojiPickerExperimentName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerUserIdGateName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
15
+ return (0, _isExperimentEnabled.isExperimentEnabled)(teamoji26RefreshEmojiPickerExperimentName) || (0, _isExperimentEnabled.isExperimentEnabled)(teamoji26RefreshEmojiPickerCanvasExperimentName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerUserIdGateName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
15
16
  };
16
17
  var isTeamoji26RefreshEmojiPickerEnabledNoExposure = exports.isTeamoji26RefreshEmojiPickerEnabledNoExposure = function isTeamoji26RefreshEmojiPickerEnabledNoExposure() {
17
- return (0, _unsafeExpValNoExposure.UNSAFE_expValNoExposure)(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || (0, _fg.fg)(teamoji26RefreshEmojiPickerUserIdGateName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
18
+ return (0, _unsafeExpValNoExposure.UNSAFE_expValNoExposure)(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || (0, _unsafeExpValNoExposure.UNSAFE_expValNoExposure)(teamoji26RefreshEmojiPickerCanvasExperimentName, 'isEnabled', false) === true || (0, _fg.fg)(teamoji26RefreshEmojiPickerUserIdGateName) || (0, _fg.fg)(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
18
19
  };
@@ -2,7 +2,6 @@
2
2
  import "./ResourcedEmojiComponent.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
4
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
5
- import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
6
5
  import { fg } from '@atlaskit/platform-feature-flags/fg';
7
6
  import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
8
7
  import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
@@ -127,18 +126,12 @@ export const ResourcedEmojiComponent = ({
127
126
  }
128
127
  }, [emojiId]);
129
128
 
130
- // Fetching from `useMemo` runs during render, so a render React later discards (for example a
131
- // pass that suspends) still creates a promise whose callbacks set state and schedule yet another
132
- // render. The layout effect only runs for committed renders, and being pre-paint it keeps the
133
- // synchronous cache-hit path from flashing the placeholder.
134
- useMemo(() => {
135
- if (!resolvedEmojiProvider || !emojiId || isExperimentEnabled('platform_emoji_fetch_in_effect')) {
136
- return;
137
- }
138
- fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
139
- }, [resolvedEmojiProvider, emojiId, optimistic, fetchOrGetEmoji]);
129
+ // Fetching during render means a render React later discards (for example a pass that suspends)
130
+ // still creates a promise whose callbacks set state and schedule yet another render. This layout
131
+ // effect only runs for committed renders, and being pre-paint it keeps the synchronous cache-hit
132
+ // path from flashing the placeholder.
140
133
  useLayoutEffect(() => {
141
- if (!resolvedEmojiProvider || !emojiId || !isExperimentEnabled('platform_emoji_fetch_in_effect')) {
134
+ if (!resolvedEmojiProvider || !emojiId) {
142
135
  return;
143
136
  }
144
137
  fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
@@ -7,7 +7,7 @@ export const createEvent = (eventType, action, actionSubject, actionSubjectId, a
7
7
  actionSubjectId,
8
8
  attributes: {
9
9
  packageName: "@atlaskit/emoji",
10
- packageVersion: "72.4.10",
10
+ packageVersion: "72.4.12",
11
11
  ...attributes
12
12
  }
13
13
  });
@@ -2,11 +2,12 @@ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-e
2
2
  import { UNSAFE_expValNoExposure } from '@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure';
3
3
  import { fg } from '@atlaskit/platform-feature-flags/fg';
4
4
  export const teamoji26RefreshEmojiPickerExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
5
+ export const teamoji26RefreshEmojiPickerCanvasExperimentName = 'platform_teamoji_26_refresh_emoji_picker_canvas';
5
6
  export const teamoji26RefreshEmojiPickerUserIdGateName = 'platform_teamoji_26_refresh_emoji_picker_user_id';
6
7
  export const teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = 'platform_bitbucket_fix_shortname_and_ordering';
7
8
  export const isTeamoji26RefreshEmojiPickerEnabled = () => {
8
- return isExperimentEnabled(teamoji26RefreshEmojiPickerExperimentName) || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
9
+ return isExperimentEnabled(teamoji26RefreshEmojiPickerExperimentName) || isExperimentEnabled(teamoji26RefreshEmojiPickerCanvasExperimentName) || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
9
10
  };
10
11
  export const isTeamoji26RefreshEmojiPickerEnabledNoExposure = () => {
11
- return UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
12
+ return UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerCanvasExperimentName, 'isEnabled', false) === true || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
12
13
  };
@@ -8,7 +8,6 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
8
8
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
9
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
10
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
11
- import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
12
11
  import { fg } from '@atlaskit/platform-feature-flags/fg';
13
12
  import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
14
13
  import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
@@ -169,18 +168,12 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
169
168
  }
170
169
  }, [emojiId]);
171
170
 
172
- // Fetching from `useMemo` runs during render, so a render React later discards (for example a
173
- // pass that suspends) still creates a promise whose callbacks set state and schedule yet another
174
- // render. The layout effect only runs for committed renders, and being pre-paint it keeps the
175
- // synchronous cache-hit path from flashing the placeholder.
176
- useMemo(function () {
177
- if (!resolvedEmojiProvider || !emojiId || isExperimentEnabled('platform_emoji_fetch_in_effect')) {
178
- return;
179
- }
180
- fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
181
- }, [resolvedEmojiProvider, emojiId, optimistic, fetchOrGetEmoji]);
171
+ // Fetching during render means a render React later discards (for example a pass that suspends)
172
+ // still creates a promise whose callbacks set state and schedule yet another render. This layout
173
+ // effect only runs for committed renders, and being pre-paint it keeps the synchronous cache-hit
174
+ // path from flashing the placeholder.
182
175
  useLayoutEffect(function () {
183
- if (!resolvedEmojiProvider || !emojiId || !isExperimentEnabled('platform_emoji_fetch_in_effect')) {
176
+ if (!resolvedEmojiProvider || !emojiId) {
184
177
  return;
185
178
  }
186
179
  fetchOrGetEmoji(resolvedEmojiProvider, emojiId, optimistic);
@@ -12,7 +12,7 @@ export var createEvent = function createEvent(eventType, action, actionSubject,
12
12
  actionSubjectId: actionSubjectId,
13
13
  attributes: _objectSpread({
14
14
  packageName: "@atlaskit/emoji",
15
- packageVersion: "72.4.10"
15
+ packageVersion: "72.4.12"
16
16
  }, attributes)
17
17
  };
18
18
  };
@@ -2,11 +2,12 @@ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-e
2
2
  import { UNSAFE_expValNoExposure } from '@atlaskit/platform-feature-experiments/unsafe-exp-val-no-exposure';
3
3
  import { fg } from '@atlaskit/platform-feature-flags/fg';
4
4
  export var teamoji26RefreshEmojiPickerExperimentName = 'platform_teamoji_26_refresh_emoji_picker';
5
+ export var teamoji26RefreshEmojiPickerCanvasExperimentName = 'platform_teamoji_26_refresh_emoji_picker_canvas';
5
6
  export var teamoji26RefreshEmojiPickerUserIdGateName = 'platform_teamoji_26_refresh_emoji_picker_user_id';
6
7
  export var teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = 'platform_bitbucket_fix_shortname_and_ordering';
7
8
  export var isTeamoji26RefreshEmojiPickerEnabled = function isTeamoji26RefreshEmojiPickerEnabled() {
8
- return isExperimentEnabled(teamoji26RefreshEmojiPickerExperimentName) || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
9
+ return isExperimentEnabled(teamoji26RefreshEmojiPickerExperimentName) || isExperimentEnabled(teamoji26RefreshEmojiPickerCanvasExperimentName) || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
9
10
  };
10
11
  export var isTeamoji26RefreshEmojiPickerEnabledNoExposure = function isTeamoji26RefreshEmojiPickerEnabledNoExposure() {
11
- return UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
12
+ return UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerExperimentName, 'isEnabled', false) === true || UNSAFE_expValNoExposure(teamoji26RefreshEmojiPickerCanvasExperimentName, 'isEnabled', false) === true || fg(teamoji26RefreshEmojiPickerUserIdGateName) || fg(teamoji26RefreshEmojiPickerShortNameAndOrderingGateName);
12
13
  };
@@ -1,4 +1,5 @@
1
1
  export declare const teamoji26RefreshEmojiPickerExperimentName = "platform_teamoji_26_refresh_emoji_picker";
2
+ export declare const teamoji26RefreshEmojiPickerCanvasExperimentName = "platform_teamoji_26_refresh_emoji_picker_canvas";
2
3
  export declare const teamoji26RefreshEmojiPickerUserIdGateName = "platform_teamoji_26_refresh_emoji_picker_user_id";
3
4
  export declare const teamoji26RefreshEmojiPickerShortNameAndOrderingGateName = "platform_bitbucket_fix_shortname_and_ordering";
4
5
  export declare const isTeamoji26RefreshEmojiPickerEnabled: () => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "72.4.11",
3
+ "version": "72.4.13",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -35,7 +35,7 @@
35
35
  "@atlaskit/afm-i18n-platform-elements-emoji": "2.249.0",
36
36
  "@atlaskit/analytics-next": "^12.5.0",
37
37
  "@atlaskit/browser-apis": "^1.2.0",
38
- "@atlaskit/button": "^25.3.0",
38
+ "@atlaskit/button": "^25.4.0",
39
39
  "@atlaskit/css": "^1.1.0",
40
40
  "@atlaskit/feature-gate-js-client": "^6.0.0",
41
41
  "@atlaskit/form": "^17.2.0",
@@ -150,6 +150,10 @@
150
150
  "platform_teamoji_26_refresh_emoji_picker": {
151
151
  "param": "isEnabled",
152
152
  "defaultValue": false
153
+ },
154
+ "platform_teamoji_26_refresh_emoji_picker_canvas": {
155
+ "param": "isEnabled",
156
+ "defaultValue": false
153
157
  }
154
158
  },
155
159
  "scripts": {