@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.
- package/CHANGELOG.md +36 -0
- package/dist/cjs/components/common/CachingEmoji.js +84 -151
- package/dist/cjs/components/common/Emoji.js +2 -2
- package/dist/cjs/components/common/EmojiActions.js +129 -175
- package/dist/cjs/components/common/EmojiErrorMessage.js +23 -59
- package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/cjs/components/common/EmojiUploadPicker.js +235 -293
- package/dist/cjs/components/common/FileChooser.js +34 -71
- package/dist/cjs/components/common/Popup.js +105 -154
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +10 -5
- package/dist/cjs/components/common/RetryableButton.js +43 -64
- package/dist/cjs/components/common/ToneSelector.js +50 -89
- package/dist/cjs/components/common/styles.js +14 -16
- package/dist/cjs/components/hooks.js +16 -0
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +16 -48
- package/dist/cjs/components/picker/EmojiPickerComponent.js +496 -508
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +33 -60
- package/dist/cjs/components/picker/EmojiPickerFooter.js +13 -46
- package/dist/cjs/components/picker/styles.js +16 -13
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +124 -109
- package/dist/cjs/hooks/useEmojiContext.js +16 -0
- package/dist/cjs/hooks/usePrevious.js +16 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/util/constants.js +3 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/common/CachingEmoji.js +65 -112
- package/dist/es2019/components/common/Emoji.js +2 -2
- package/dist/es2019/components/common/EmojiActions.js +124 -150
- package/dist/es2019/components/common/EmojiErrorMessage.js +22 -26
- package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +190 -253
- package/dist/es2019/components/common/FileChooser.js +37 -40
- package/dist/es2019/components/common/Popup.js +89 -109
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +5 -4
- package/dist/es2019/components/common/RetryableButton.js +43 -34
- package/dist/es2019/components/common/ToneSelector.js +46 -59
- package/dist/es2019/components/common/styles.js +9 -9
- package/dist/es2019/components/hooks.js +8 -0
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +13 -17
- package/dist/es2019/components/picker/EmojiPickerComponent.js +417 -497
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +32 -35
- package/dist/es2019/components/picker/EmojiPickerFooter.js +11 -19
- package/dist/es2019/components/picker/styles.js +16 -14
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +81 -91
- package/dist/es2019/hooks/useEmojiContext.js +3 -0
- package/dist/es2019/hooks/usePrevious.js +8 -0
- package/dist/es2019/index.js +4 -1
- package/dist/es2019/util/constants.js +1 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/common/CachingEmoji.js +86 -156
- package/dist/esm/components/common/Emoji.js +2 -2
- package/dist/esm/components/common/EmojiActions.js +129 -176
- package/dist/esm/components/common/EmojiErrorMessage.js +21 -56
- package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +233 -299
- package/dist/esm/components/common/FileChooser.js +34 -70
- package/dist/esm/components/common/Popup.js +104 -155
- package/dist/esm/components/common/ResourcedEmojiComponent.js +8 -4
- package/dist/esm/components/common/RetryableButton.js +40 -60
- package/dist/esm/components/common/ToneSelector.js +50 -87
- package/dist/esm/components/common/styles.js +10 -10
- package/dist/esm/components/hooks.js +8 -0
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +14 -43
- package/dist/esm/components/picker/EmojiPickerComponent.js +486 -526
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +31 -59
- package/dist/esm/components/picker/EmojiPickerFooter.js +14 -47
- package/dist/esm/components/picker/styles.js +16 -14
- package/dist/esm/components/uploader/EmojiUploadComponent.js +119 -113
- package/dist/esm/hooks/useEmojiContext.js +5 -0
- package/dist/esm/hooks/usePrevious.js +8 -0
- package/dist/esm/index.js +4 -1
- package/dist/esm/util/constants.js +1 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +2 -3
- package/dist/types/components/common/CachingEmoji.d.ts +3 -13
- package/dist/types/components/common/Emoji.d.ts +1 -2
- package/dist/types/components/common/EmojiActions.d.ts +6 -17
- package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -6
- package/dist/types/components/common/EmojiPreviewComponent.d.ts +2 -2
- package/dist/types/components/common/EmojiUploadPicker.d.ts +3 -27
- package/dist/types/components/common/FileChooser.d.ts +3 -5
- package/dist/types/components/common/LoadingEmojiComponent.d.ts +3 -0
- package/dist/types/components/common/Popup.d.ts +3 -20
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +23 -11
- package/dist/types/components/common/RetryableButton.d.ts +3 -7
- package/dist/types/components/common/ToneSelector.d.ts +4 -10
- package/dist/types/components/common/setSkinToneAriaLabelText.d.ts +1 -1
- package/dist/types/components/common/styles.d.ts +1 -3
- package/dist/types/components/hooks.d.ts +1 -0
- package/dist/types/components/picker/CategorySelector.d.ts +1 -1
- package/dist/types/components/picker/EmojiPicker.d.ts +12 -3
- package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +3 -4
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +14 -76
- package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +3 -4
- package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -5
- package/dist/types/components/picker/styles.d.ts +1 -1
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +18 -0
- package/dist/types/components/uploader/EmojiUploadComponent.d.ts +3 -17
- package/dist/types/components/uploader/EmojiUploader.d.ts +5 -7
- package/dist/types/hooks/useEmojiContext.d.ts +1 -0
- package/dist/types/hooks/usePrevious.d.ts +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/util/constants.d.ts +1 -0
- package/docs/0-intro.tsx +35 -27
- package/docs/1-resourced-emoji.tsx +74 -0
- package/docs/2-emoji-picker.tsx +56 -0
- package/docs/3-typeahead.tsx +20 -0
- package/docs/4-emoji-provider.tsx +98 -0
- package/local-config-example.ts +3 -1
- package/package.json +19 -6
- package/dist/cjs/components/common/EmojiPreview.js +0 -194
- package/dist/es2019/components/common/EmojiPreview.js +0 -152
- package/dist/esm/components/common/EmojiPreview.js +0 -170
- 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 {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
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
|
+
`;
|
package/local-config-example.ts
CHANGED
|
@@ -29,7 +29,9 @@ export default {
|
|
|
29
29
|
},
|
|
30
30
|
optimisticImageApi: {
|
|
31
31
|
getUrl: (emojiId: EmojiId) =>
|
|
32
|
-
`http://www.example.org/site-id/${
|
|
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.
|
|
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.
|
|
35
|
-
"@atlaskit/theme": "^12.
|
|
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.
|
|
59
|
+
"@atlaskit/section-message": "^6.2.0",
|
|
60
60
|
"@atlaskit/ssr": "*",
|
|
61
|
-
"@atlaskit/util-data-test": "^17.
|
|
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.
|
|
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;
|