@atlaskit/emoji 65.0.0 → 65.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.
Files changed (115) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/components/common/CachingEmoji.js +84 -151
  3. package/dist/cjs/components/common/Emoji.js +2 -2
  4. package/dist/cjs/components/common/EmojiActions.js +129 -175
  5. package/dist/cjs/components/common/EmojiErrorMessage.js +23 -59
  6. package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -0
  7. package/dist/cjs/components/common/EmojiUploadPicker.js +235 -293
  8. package/dist/cjs/components/common/FileChooser.js +34 -71
  9. package/dist/cjs/components/common/Popup.js +105 -154
  10. package/dist/cjs/components/common/ResourcedEmojiComponent.js +10 -5
  11. package/dist/cjs/components/common/RetryableButton.js +43 -64
  12. package/dist/cjs/components/common/ToneSelector.js +50 -89
  13. package/dist/cjs/components/common/styles.js +14 -16
  14. package/dist/cjs/components/hooks.js +16 -0
  15. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +16 -48
  16. package/dist/cjs/components/picker/EmojiPickerComponent.js +496 -508
  17. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +33 -60
  18. package/dist/cjs/components/picker/EmojiPickerFooter.js +13 -46
  19. package/dist/cjs/components/picker/styles.js +16 -13
  20. package/dist/cjs/components/uploader/EmojiUploadComponent.js +124 -109
  21. package/dist/cjs/hooks/useEmojiContext.js +16 -0
  22. package/dist/cjs/hooks/usePrevious.js +16 -0
  23. package/dist/cjs/index.js +16 -0
  24. package/dist/cjs/util/constants.js +3 -1
  25. package/dist/cjs/version.json +1 -1
  26. package/dist/es2019/components/common/CachingEmoji.js +65 -112
  27. package/dist/es2019/components/common/Emoji.js +2 -2
  28. package/dist/es2019/components/common/EmojiActions.js +124 -150
  29. package/dist/es2019/components/common/EmojiErrorMessage.js +22 -26
  30. package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
  31. package/dist/es2019/components/common/EmojiUploadPicker.js +190 -253
  32. package/dist/es2019/components/common/FileChooser.js +37 -40
  33. package/dist/es2019/components/common/Popup.js +89 -109
  34. package/dist/es2019/components/common/ResourcedEmojiComponent.js +5 -4
  35. package/dist/es2019/components/common/RetryableButton.js +43 -34
  36. package/dist/es2019/components/common/ToneSelector.js +46 -59
  37. package/dist/es2019/components/common/styles.js +9 -9
  38. package/dist/es2019/components/hooks.js +8 -0
  39. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +13 -17
  40. package/dist/es2019/components/picker/EmojiPickerComponent.js +417 -497
  41. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +32 -35
  42. package/dist/es2019/components/picker/EmojiPickerFooter.js +11 -19
  43. package/dist/es2019/components/picker/styles.js +16 -14
  44. package/dist/es2019/components/uploader/EmojiUploadComponent.js +81 -91
  45. package/dist/es2019/hooks/useEmojiContext.js +3 -0
  46. package/dist/es2019/hooks/usePrevious.js +8 -0
  47. package/dist/es2019/index.js +4 -1
  48. package/dist/es2019/util/constants.js +1 -0
  49. package/dist/es2019/version.json +1 -1
  50. package/dist/esm/components/common/CachingEmoji.js +86 -156
  51. package/dist/esm/components/common/Emoji.js +2 -2
  52. package/dist/esm/components/common/EmojiActions.js +129 -176
  53. package/dist/esm/components/common/EmojiErrorMessage.js +21 -56
  54. package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
  55. package/dist/esm/components/common/EmojiUploadPicker.js +233 -299
  56. package/dist/esm/components/common/FileChooser.js +34 -70
  57. package/dist/esm/components/common/Popup.js +104 -155
  58. package/dist/esm/components/common/ResourcedEmojiComponent.js +8 -4
  59. package/dist/esm/components/common/RetryableButton.js +40 -60
  60. package/dist/esm/components/common/ToneSelector.js +50 -87
  61. package/dist/esm/components/common/styles.js +10 -10
  62. package/dist/esm/components/hooks.js +8 -0
  63. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +14 -43
  64. package/dist/esm/components/picker/EmojiPickerComponent.js +486 -526
  65. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +31 -59
  66. package/dist/esm/components/picker/EmojiPickerFooter.js +14 -47
  67. package/dist/esm/components/picker/styles.js +16 -14
  68. package/dist/esm/components/uploader/EmojiUploadComponent.js +119 -113
  69. package/dist/esm/hooks/useEmojiContext.js +5 -0
  70. package/dist/esm/hooks/usePrevious.js +8 -0
  71. package/dist/esm/index.js +4 -1
  72. package/dist/esm/util/constants.js +1 -0
  73. package/dist/esm/version.json +1 -1
  74. package/dist/types/api/EmojiResource.d.ts +2 -3
  75. package/dist/types/components/common/CachingEmoji.d.ts +3 -13
  76. package/dist/types/components/common/Emoji.d.ts +1 -2
  77. package/dist/types/components/common/EmojiActions.d.ts +6 -17
  78. package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -6
  79. package/dist/types/components/common/EmojiPreviewComponent.d.ts +2 -2
  80. package/dist/types/components/common/EmojiUploadPicker.d.ts +3 -27
  81. package/dist/types/components/common/FileChooser.d.ts +3 -5
  82. package/dist/types/components/common/LoadingEmojiComponent.d.ts +3 -0
  83. package/dist/types/components/common/Popup.d.ts +3 -20
  84. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +23 -11
  85. package/dist/types/components/common/RetryableButton.d.ts +3 -7
  86. package/dist/types/components/common/ToneSelector.d.ts +4 -10
  87. package/dist/types/components/common/setSkinToneAriaLabelText.d.ts +1 -1
  88. package/dist/types/components/common/styles.d.ts +1 -3
  89. package/dist/types/components/hooks.d.ts +1 -0
  90. package/dist/types/components/picker/CategorySelector.d.ts +1 -1
  91. package/dist/types/components/picker/EmojiPicker.d.ts +12 -3
  92. package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +3 -4
  93. package/dist/types/components/picker/EmojiPickerComponent.d.ts +14 -76
  94. package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +3 -4
  95. package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -5
  96. package/dist/types/components/picker/styles.d.ts +1 -1
  97. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +18 -0
  98. package/dist/types/components/uploader/EmojiUploadComponent.d.ts +3 -17
  99. package/dist/types/components/uploader/EmojiUploader.d.ts +5 -7
  100. package/dist/types/hooks/useEmojiContext.d.ts +1 -0
  101. package/dist/types/hooks/usePrevious.d.ts +1 -0
  102. package/dist/types/index.d.ts +3 -1
  103. package/dist/types/types.d.ts +2 -1
  104. package/dist/types/util/constants.d.ts +1 -0
  105. package/docs/0-intro.tsx +35 -27
  106. package/docs/1-resourced-emoji.tsx +74 -0
  107. package/docs/2-emoji-picker.tsx +56 -0
  108. package/docs/3-typeahead.tsx +20 -0
  109. package/docs/4-emoji-provider.tsx +98 -0
  110. package/local-config-example.ts +3 -1
  111. package/package.json +19 -6
  112. package/dist/cjs/components/common/EmojiPreview.js +0 -194
  113. package/dist/es2019/components/common/EmojiPreview.js +0 -152
  114. package/dist/esm/components/common/EmojiPreview.js +0 -170
  115. package/dist/types/components/common/EmojiPreview.d.ts +0 -31
package/docs/0-intro.tsx CHANGED
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
- import { md, Example, code, AtlassianInternalWarning } from '@atlaskit/docs';
3
- import SectionMessage, {
4
- SectionMessageAction,
5
- } from '@atlaskit/section-message';
2
+ import {
3
+ md,
4
+ Example,
5
+ code,
6
+ AtlassianInternalWarning,
7
+ Props,
8
+ } from '@atlaskit/docs';
9
+ import SectionMessage from '@atlaskit/section-message';
6
10
  import SimpleEmojiExample from '../examples/00-simple-emoji';
7
11
 
8
12
  const SimpleEmojiSource = require('!!raw-loader!../examples/00-simple-emoji');
13
+ const EmojiProps = require('!!extract-react-types-loader!../src/components/common/Emoji');
9
14
 
10
15
  export default md`
11
16
  ${(<AtlassianInternalWarning />)}
@@ -20,9 +25,9 @@ export default md`
20
25
 
21
26
  ${code`
22
27
  import EmojiPicker from '@atlaskit/emoji/picker';
23
- import { EmojiResource } from '@atlaskit/emoji/resource';
28
+ import { EmojiResource, EmojiResourceConfig } from '@atlaskit/emoji/resource';
24
29
 
25
- const emojiProvider = new EmojiResource({
30
+ const config: EmojiResourceConfig = {
26
31
  providers: [
27
32
  {
28
33
  url: 'https://emoji-example/emoji/standard',
@@ -36,7 +41,9 @@ export default md`
36
41
  }),
37
42
  },
38
43
  ],
39
- });
44
+ }
45
+
46
+ const emojiProvider = new EmojiResource(config);
40
47
 
41
48
  ReactDOM.render(
42
49
  <EmojiPicker
@@ -46,7 +53,25 @@ export default md`
46
53
  }}
47
54
  />,
48
55
  container,
49
- );`}
56
+ );
57
+ `}
58
+
59
+
60
+
61
+ ${(
62
+ <>
63
+ <br />
64
+ <SectionMessage
65
+ appearance="warning"
66
+ title="Emoji provider is required to be configured in order to use components from this package."
67
+ >
68
+ <p>
69
+ Please refer to `Emoji picker` section for more information on how to
70
+ configure emoji provider.
71
+ </p>
72
+ </SectionMessage>
73
+ </>
74
+ )}
50
75
 
51
76
  ### Other emoji components import examples
52
77
 
@@ -75,27 +100,10 @@ export default md`
75
100
  <Example
76
101
  packageName="@atlaskit/emoji"
77
102
  Component={SimpleEmojiExample}
78
- title="Emoji"
103
+ title=" Simple Emoji"
79
104
  source={SimpleEmojiSource}
80
105
  />
81
106
  )}
82
107
 
83
- ${(
84
- <SectionMessage
85
- appearance="warning"
86
- title="Props can not be displayed for the time being."
87
- actions={[
88
- {
89
- key: '1',
90
- href:
91
- 'https://bitbucket.org/atlassian/atlaskit-mk-2/src/master/packages/elements/emoji/src/components/common/Emoji.tsx',
92
- text: 'Emoji Props',
93
- },
94
- ].map(({ text, ...restAction }) => (
95
- <SectionMessageAction {...restAction}>{text}</SectionMessageAction>
96
- ))}
97
- >
98
- <p>You can still find props in the source code.</p>
99
- </SectionMessage>
100
- )}
108
+ ${(<Props props={EmojiProps} />)}
101
109
  `;
@@ -0,0 +1,74 @@
1
+ import React from 'react';
2
+ import { md, Example, code, Props } from '@atlaskit/docs';
3
+ import ResourcedEmojiExample from '../examples/23-optimistic-emoji';
4
+
5
+ const ResourcedEmojiSource = require('!!raw-loader!../examples/23-optimistic-emoji');
6
+ const ResourcedEmojiProps = require('!!extract-react-types-loader!../src/components/common/ResourcedEmojiComponent');
7
+
8
+ export default md`
9
+ ## Usage
10
+
11
+ Import the component in your React app as follows:
12
+
13
+ ${code`
14
+ import { ResourcedEmoji } from '@atlaskit/emoji';
15
+ import { EmojiResource, EmojiResourceConfig } from '@atlaskit/emoji/resource';
16
+
17
+ const config: EmojiResourceConfig = {
18
+ singleEmojiApi: {
19
+ getUrl: (emojiId: string) => 'https://emoji-example/emoji/site-id/emojiId',
20
+ securityProvider: () => ({
21
+ headers: {
22
+ 'User-Context': '{{token}}',
23
+ Authorization: 'Bearer {{token}}',
24
+ },
25
+ })
26
+ },
27
+ optimisticImageApi: {
28
+ getUrl: (emojiId: string) => 'https://emoji-example/emoji/site-id/emojiId/path',
29
+ securityProvider: () => ({
30
+ headers: {
31
+ 'User-Context': '{{token}}',
32
+ Authorization: 'Bearer {{token}}',
33
+ },
34
+ })
35
+ },
36
+ providers: [
37
+ {
38
+ url: 'https://emoji-example/emoji/standard',
39
+ },
40
+ {
41
+ url: 'https://emoji-example/emoji/site-id/site',
42
+ securityProvider: () => ({
43
+ headers: {
44
+ Authorization: 'Bearer {{token}}',
45
+ },
46
+ }),
47
+ },
48
+ ],
49
+ }
50
+
51
+ const emojiProvider = new EmojiResource(config);
52
+ const emojiId = { shortName: ':grimacing:', id: '1f603' };
53
+
54
+ ReactDOM.render(
55
+ <ResourcedEmoji
56
+ emojiId={emojiId}
57
+ emojiProvider={emojiProvider}
58
+ optimistic
59
+ optimisticImageURL={emojiProvider.getOptimisticImageURL(emojiId)}
60
+ />,
61
+ container,
62
+ );`}
63
+
64
+ ${(
65
+ <Example
66
+ packageName="@atlaskit/emoji"
67
+ Component={ResourcedEmojiExample}
68
+ title="Resourced Emoji"
69
+ source={ResourcedEmojiSource}
70
+ />
71
+ )}
72
+
73
+ ${(<Props props={ResourcedEmojiProps} />)}
74
+ `;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { md, Example, code, Props } from '@atlaskit/docs';
3
+ import EmojiPickerExample from '../examples/05-standard-emoji-picker-with-upload';
4
+
5
+ const EmojiPickerSource = require('!!raw-loader!../examples/05-standard-emoji-picker-with-upload');
6
+ const EmojiPickerProps = require('!!extract-react-types-loader!../src/components/picker/EmojiPickerComponent');
7
+
8
+ export default md`
9
+ ## Usage
10
+
11
+ Import the component in your React app as follows:
12
+
13
+ ${code`
14
+ import EmojiPicker from '@atlaskit/emoji/picker';
15
+ import { EmojiResource, EmojiResourceConfig } from '@atlaskit/emoji/resource';
16
+
17
+ const config: EmojiResourceConfig = {
18
+ providers: [
19
+ {
20
+ url: 'https://emoji-example/emoji/standard',
21
+ },
22
+ {
23
+ url: 'https://emoji-example/emoji/site-id/site',
24
+ securityProvider: () => ({
25
+ headers: {
26
+ Authorization: 'Bearer token',
27
+ },
28
+ }),
29
+ },
30
+ ],
31
+ }
32
+
33
+ const emojiProvider = new EmojiResource(config);
34
+
35
+ ReactDOM.render(
36
+ <EmojiPicker
37
+ emojiProvider={emojiProvider}
38
+ onSelection={emoji => {
39
+ /* do something */
40
+ }}
41
+ />,
42
+ container,
43
+ );
44
+ `}
45
+
46
+ ${(
47
+ <Example
48
+ packageName="@atlaskit/emoji"
49
+ Component={EmojiPickerExample}
50
+ title="Emoji Picker"
51
+ source={EmojiPickerSource}
52
+ />
53
+ )}
54
+
55
+ ${(<Props props={EmojiPickerProps} />)}
56
+ `;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { md, Example, Props } from '@atlaskit/docs';
3
+ import TypeAheadiExample from '../examples/03-standard-emoji-typeahead';
4
+
5
+ const TypeAheadSource = require('!!raw-loader!../examples/03-standard-emoji-typeahead');
6
+ const TypeAheadProps = require('!!extract-react-types-loader!../src/components/typeahead/EmojiTypeAheadComponent');
7
+
8
+ export default md`
9
+
10
+ ${(
11
+ <Example
12
+ packageName="@atlaskit/emoji"
13
+ Component={TypeAheadiExample}
14
+ title="Typeahead"
15
+ source={TypeAheadSource}
16
+ />
17
+ )}
18
+
19
+ ${(<Props props={TypeAheadProps} />)}
20
+ `;
@@ -0,0 +1,98 @@
1
+ import React from 'react';
2
+ import { md, code } from '@atlaskit/docs';
3
+ import SectionMessage from '@atlaskit/section-message';
4
+
5
+ export default md`
6
+ Emoji provider mainly controls what type of emojis you want to support, how to resolve emojis, and how to upload custom emojis if enabled.
7
+
8
+ This is a basic example of emoji provider, supporting standard, atlassian, and site emojis:
9
+
10
+ ${code`
11
+ const emojiProvider = new EmojiResource({
12
+ providers: [
13
+ {
14
+ url: '/gateway/emoji/standard',
15
+ },
16
+ {
17
+ url: '/gateway/emoji/atlassian',
18
+ },
19
+ {
20
+ url: '/gateway/emoji/{cloudId}/site',
21
+ securityProvider: () => ({ headers: { Authorization: 'Bearer token' }}), // not needed if session token cookie is available.
22
+ },
23
+ ],
24
+ allowUpload: true,
25
+ currentUser: { id: { uid } }
26
+ });`}
27
+
28
+ ${(
29
+ <>
30
+ <br />
31
+ <SectionMessage
32
+ appearance="warning"
33
+ title="There should be only one instance of EmojiResource in your application"
34
+ >
35
+ <p>Make sure EmojiResource is initialised only once.</p>
36
+ </SectionMessage>
37
+ </>
38
+ )}
39
+
40
+ The emoji provider plays a vital role to glue with our backend emoji service. Emoji metadata is fetched based on the url defined in providers array.
41
+ After a successful fetch the emoji resource holds emoji data for rendering emoji in picker, single emoji or the typeahead component.
42
+ Uploading and rendering site specific emojis is only available for Atlassian services.
43
+
44
+ Initialising EmojiResource doesn't fetch emoji data on initialization. If EmojiResource is being passed into ResourcedEmoji, EmojiPicker or Typeahead no further action is required.
45
+ Emoji meta data will be fetched on first component render. If EmojiResource is being used outside of the context of the above components, fetching meta data requires to be triggered manually.
46
+
47
+ ${code`
48
+ const emojiProvider = new EmojiResource(emojiConfig);
49
+ emojiProvider.fetchEmojiProvider();
50
+ `}
51
+
52
+ ### Configuration options
53
+
54
+ ${code`
55
+ interface EmojiResourceConfig {
56
+ /**
57
+ * The service configuration for remotely recording emoji selections.
58
+ * A post will be performed to this URL with the EmojiId as the body.
59
+ */
60
+ recordConfig?: ServiceConfig;
61
+
62
+ /**
63
+ * This defines the different providers. Later providers will override earlier
64
+ * providers when performing shortName based look up.
65
+ */
66
+ providers: ServiceConfig[];
67
+
68
+ /**
69
+ * Must be set to true to enable upload support in the emoji components.
70
+ *
71
+ * Can be used for the restriction of the upload UI based on permissions, or feature flags.
72
+ *
73
+ * Note this also requires that other conditions are met (for example, one of the providers
74
+ * must support upload for the UploadingEmojiResource implementation of UploadingEmojiProvider).
75
+ */
76
+ allowUpload?: boolean;
77
+
78
+ /**
79
+ * Logged user in the Product.
80
+ */
81
+ currentUser?: User;
82
+
83
+ /**
84
+ * This is specifically used for fetching a meta information of a single emoji.
85
+ * Useful for when rendering a single or a subset of emojis on a page that does not require the
86
+ * whole provider list to be downloaded.
87
+ */
88
+ singleEmojiApi?: SingleEmojiApiLoaderConfig;
89
+
90
+ /**
91
+ * Renders an image while the provider is being downloaded to reduce the time
92
+ * the user is being presented with a placeholder
93
+ */
94
+ optimisticImageApi?: OptimisticImageApiLoaderConfig;
95
+ }
96
+ `}
97
+
98
+ `;
@@ -29,7 +29,9 @@ export default {
29
29
  },
30
30
  optimisticImageApi: {
31
31
  getUrl: (emojiId: EmojiId) =>
32
- `http://www.example.org/site-id/${emojiId.id || emojiId.shortName}/path`,
32
+ `http://www.example.org/emoji/site-id/${
33
+ emojiId.id || emojiId.shortName
34
+ }/path`,
33
35
  securityProvider: () => ({
34
36
  headers: {
35
37
  'User-Context': '{token}',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "65.0.0",
3
+ "version": "65.2.0",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -31,8 +31,8 @@
31
31
  "@atlaskit/icon": "^21.10.0",
32
32
  "@atlaskit/media-client": "^17.1.0",
33
33
  "@atlaskit/spinner": "^15.0.0",
34
- "@atlaskit/textfield": "^5.1.0",
35
- "@atlaskit/theme": "^12.1.0",
34
+ "@atlaskit/textfield": "^5.2.0",
35
+ "@atlaskit/theme": "^12.2.0",
36
36
  "@atlaskit/tokens": "^0.10.0",
37
37
  "@atlaskit/tooltip": "^17.5.0",
38
38
  "@atlaskit/ufo": "^0.1.0",
@@ -56,18 +56,21 @@
56
56
  "@atlaskit/editor-test-helpers": "^17.1.0",
57
57
  "@atlaskit/elements-test-helpers": "^0.7.0",
58
58
  "@atlaskit/media-core": "^33.0.0",
59
- "@atlaskit/section-message": "^6.0.0",
59
+ "@atlaskit/section-message": "^6.2.0",
60
60
  "@atlaskit/ssr": "*",
61
- "@atlaskit/util-data-test": "^17.4.0",
61
+ "@atlaskit/util-data-test": "^17.5.0",
62
62
  "@atlaskit/visual-regression": "*",
63
63
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
64
64
  "@atlassian/ufo": "^0.1.10",
65
+ "@emotion/jest": "^11.8.0",
66
+ "@testing-library/dom": "^7.7.3",
65
67
  "@testing-library/jest-dom": "^4.1.0",
66
68
  "@testing-library/react": "^8.0.1",
67
69
  "@testing-library/user-event": "10.4.0",
68
70
  "@types/js-search": "^1.4.0",
69
71
  "@types/react-virtualized": "^9.18.12",
70
72
  "@types/webpack-dev-server": "^3.11.2",
73
+ "dotenv": "^8.2.0",
71
74
  "enzyme": "^3.10.0",
72
75
  "enzyme-adapter-react-16": "^1.15.1",
73
76
  "es6-promise": "^4.0.5",
@@ -78,7 +81,7 @@
78
81
  "react-intl-next": "npm:react-intl@^5.18.1",
79
82
  "rxjs": "^5.5.0",
80
83
  "sinon": "^2.2.0",
81
- "typescript": "4.2.4",
84
+ "typescript": "4.3.5",
82
85
  "wait-for-expect": "^1.2.0",
83
86
  "webpack-dev-server": "^3.11.2"
84
87
  },
@@ -91,5 +94,15 @@
91
94
  "@repo/internal": {
92
95
  "theming": "tokens"
93
96
  }
97
+ },
98
+ "scripts": {
99
+ "setup-first-time": "yarn run setup-local-config; yarn run setup-env",
100
+ "setup-local-config": "cp -nv local-config-template.ts local-config.ts",
101
+ "setup-env": "cp -nv .env-template .env",
102
+ "start": "cd ../../ && yarn start emoji",
103
+ "test": "cd ../../ && yarn test emoji",
104
+ "typecheck": "cd ../../ && yarn typecheck:package ./packages/elements/emoji",
105
+ "start:dev": "cd ../../ && yarn start emoji --proxy ./packages/elements/emoji/proxy.ts",
106
+ "start:edge": "cd ../../ && PROXY_TARGET_ENV=edge yarn start emoji --proxy ./packages/elements/emoji/proxy.ts"
94
107
  }
95
108
  }
@@ -1,194 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = exports.EmojiPreview = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _core = require("@emotion/core");
25
-
26
- var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
27
-
28
- var _add = _interopRequireDefault(require("@atlaskit/icon/glyph/add"));
29
-
30
- var _react = require("react");
31
-
32
- var _reactIntlNext = require("react-intl-next");
33
-
34
- var _EmojiButton = _interopRequireDefault(require("../../components/common/EmojiButton"));
35
-
36
- var _i18n = require("../i18n");
37
-
38
- var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
39
-
40
- var _setSkinToneAriaLabelText = require("./setSkinToneAriaLabelText");
41
-
42
- var _styles = require("./styles");
43
-
44
- var _EmojiPreviewComponent = require("./EmojiPreviewComponent");
45
-
46
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
47
-
48
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
49
-
50
- var EmojiPreview = /*#__PURE__*/function (_PureComponent) {
51
- (0, _inherits2.default)(EmojiPreview, _PureComponent);
52
-
53
- var _super = _createSuper(EmojiPreview);
54
-
55
- function EmojiPreview() {
56
- var _this;
57
-
58
- (0, _classCallCheck2.default)(this, EmojiPreview);
59
-
60
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
61
- args[_key] = arguments[_key];
62
- }
63
-
64
- _this = _super.call.apply(_super, [this].concat(args));
65
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
66
- selectingTone: false
67
- });
68
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneButtonClick", function () {
69
- _this.setState({
70
- selectingTone: !_this.state.selectingTone
71
- });
72
- });
73
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneSelected", function (toneValue) {
74
- _this.setState({
75
- selectingTone: false
76
- });
77
-
78
- if (_this.props.onToneSelected) {
79
- _this.props.onToneSelected(toneValue);
80
- }
81
- });
82
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseLeave", function () {
83
- var selectingTone = _this.state.selectingTone;
84
- var onToneSelectorCancelled = _this.props.onToneSelectorCancelled;
85
-
86
- if (selectingTone && onToneSelectorCancelled) {
87
- onToneSelectorCancelled();
88
- }
89
-
90
- _this.setState({
91
- selectingTone: false
92
- });
93
- });
94
- return _this;
95
- }
96
-
97
- (0, _createClass2.default)(EmojiPreview, [{
98
- key: "renderTones",
99
- value: function renderTones() {
100
- var _this$props = this.props,
101
- toneEmoji = _this$props.toneEmoji,
102
- selectedTone = _this$props.selectedTone,
103
- intl = _this$props.intl;
104
- var formatMessage = intl.formatMessage;
105
-
106
- if (!toneEmoji) {
107
- return null;
108
- }
109
-
110
- var previewEmoji = toneEmoji;
111
-
112
- if (selectedTone && previewEmoji.skinVariations) {
113
- previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
114
- }
115
-
116
- return (0, _core.jsx)("div", {
117
- className: _styles.toneSelectorContainer
118
- }, this.state.selectingTone && (0, _core.jsx)(_ToneSelector.default, {
119
- emoji: toneEmoji,
120
- onToneSelected: this.onToneSelected,
121
- previewEmojiId: previewEmoji.id
122
- }), (0, _core.jsx)(_EmojiButton.default, {
123
- ariaExpanded: this.state.selectingTone,
124
- emoji: previewEmoji,
125
- selectOnHover: true,
126
- onSelected: this.onToneButtonClick,
127
- ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
128
- selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewEmoji.name), " selected")
129
- })
130
- }));
131
- }
132
- }, {
133
- key: "renderEmojiPreview",
134
- value: function renderEmojiPreview() {
135
- var selectingTone = this.state.selectingTone;
136
- var _this$props2 = this.props,
137
- emoji = _this$props2.emoji,
138
- uploadEnabled = _this$props2.uploadEnabled;
139
-
140
- if (!emoji || selectingTone || uploadEnabled) {
141
- return null;
142
- }
143
-
144
- return (0, _core.jsx)(_EmojiPreviewComponent.EmojiPreviewComponent, {
145
- emoji: emoji
146
- });
147
- } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
148
-
149
- }, {
150
- key: "renderAddOwnEmoji",
151
- value: function renderAddOwnEmoji() {
152
- var _this$props3 = this.props,
153
- onOpenUpload = _this$props3.onOpenUpload,
154
- uploadEnabled = _this$props3.uploadEnabled,
155
- intl = _this$props3.intl;
156
- var selectingTone = this.state.selectingTone;
157
- var formatMessage = intl.formatMessage;
158
-
159
- if (!uploadEnabled || selectingTone) {
160
- return null;
161
- }
162
-
163
- return (0, _core.jsx)("div", {
164
- css: _styles.addCustomEmoji
165
- }, (0, _core.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
166
- return (0, _core.jsx)(_standardButton.default, {
167
- onClick: onOpenUpload,
168
- iconBefore: (0, _core.jsx)(_add.default, {
169
- label: formatMessage(_i18n.messages.addCustomEmojiLabel),
170
- size: "small"
171
- }),
172
- appearance: "subtle",
173
- css: _styles.addCustomEmojiButton,
174
- className: _styles.emojiPickerAddEmoji
175
- }, label);
176
- }));
177
- }
178
- }, {
179
- key: "render",
180
- value: function render() {
181
- return (0, _core.jsx)("div", {
182
- css: _styles.emojiPreview,
183
- onMouseLeave: this.onMouseLeave
184
- }, this.renderAddOwnEmoji(), this.renderEmojiPreview(), this.renderTones());
185
- }
186
- }]);
187
- return EmojiPreview;
188
- }(_react.PureComponent);
189
-
190
- exports.EmojiPreview = EmojiPreview;
191
-
192
- var _default = (0, _reactIntlNext.injectIntl)(EmojiPreview);
193
-
194
- exports.default = _default;