@atlaskit/emoji 66.0.0 → 66.0.1

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,13 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 66.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`98b7ff82dae`](https://bitbucket.org/atlassian/atlassian-frontend/commits/98b7ff82dae) - [UX] To remove the unwanted styles (which is taken care in typeahead list component ED-15655)
8
+ - [`f86e84d3cd8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f86e84d3cd8) - ED-13980 Changes to make typeahead menu accessible by adding assistive text and improving keyboard navigation
9
+ - Updated dependencies
10
+
3
11
  ## 66.0.0
4
12
 
5
13
  ### Major Changes
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "66.0.0",
3
+ "version": "66.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "66.0.0",
3
+ "version": "66.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "66.0.0",
3
+ "version": "66.0.1",
4
4
  "sideEffects": false
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "66.0.0",
3
+ "version": "66.0.1",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -35,13 +35,13 @@
35
35
  "dependencies": {
36
36
  "@atlaskit/analytics-next": "^8.2.0",
37
37
  "@atlaskit/button": "^16.3.0",
38
- "@atlaskit/icon": "^21.10.0",
39
- "@atlaskit/media-client": "^17.1.0",
38
+ "@atlaskit/icon": "^21.11.0",
39
+ "@atlaskit/media-client": "^18.0.0",
40
40
  "@atlaskit/spinner": "^15.0.0",
41
41
  "@atlaskit/textfield": "^5.3.0",
42
42
  "@atlaskit/theme": "^12.2.0",
43
43
  "@atlaskit/tokens": "^0.10.0",
44
- "@atlaskit/tooltip": "^17.5.0",
44
+ "@atlaskit/tooltip": "^17.6.0",
45
45
  "@atlaskit/ufo": "^0.1.0",
46
46
  "@atlaskit/util-service-support": "^6.1.0",
47
47
  "@babel/runtime": "^7.0.0",
@@ -62,8 +62,8 @@
62
62
  "@atlaskit/docs": "*",
63
63
  "@atlaskit/editor-test-helpers": "^17.2.0",
64
64
  "@atlaskit/elements-test-helpers": "^0.7.0",
65
- "@atlaskit/media-core": "^33.0.0",
66
- "@atlaskit/section-message": "^6.2.0",
65
+ "@atlaskit/media-core": "^34.0.0",
66
+ "@atlaskit/section-message": "^6.3.0",
67
67
  "@atlaskit/ssr": "*",
68
68
  "@atlaskit/util-data-test": "^17.5.0",
69
69
  "@atlaskit/visual-regression": "*",
package/report.api.md CHANGED
@@ -1,6 +1,8 @@
1
- ## API Report File for "@atlaskit/emoji"
1
+ ## API Report File for "@atlaskit/emoji".
2
2
 
3
- > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
3
+ > Do not edit this file. This report is auto-generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ [Learn more about API reports](https://hello.atlassian.net/wiki/spaces/UR/pages/1825484529/Package+API+Reports)
4
6
 
5
7
  ```ts
6
8
  /// <reference types="react" />
@@ -8,8 +10,10 @@
8
10
  import { AbstractResource } from '@atlaskit/util-service-support';
9
11
  import { Component } from 'react';
10
12
  import { ComponentClass } from 'react';
13
+ import { ComponentType } from 'react';
11
14
  import { ConcurrentExperience } from '@atlaskit/ufo';
12
15
  import { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next';
16
+ import { FC } from 'react';
13
17
  import { ForwardRefExoticComponent } from 'react';
14
18
  import { Provider } from '@atlaskit/util-service-support/types';
15
19
  import { PureComponent } from 'react';
@@ -27,9 +31,41 @@ export declare interface AltRepresentations {
27
31
  }
28
32
 
29
33
  declare interface BaseResourcedEmojiProps {
34
+ /**
35
+ * Emoji to display
36
+ */
30
37
  emojiId: EmojiId;
38
+ /**
39
+ * Allows to show the tooltip.
40
+ * Defaults to `false`.
41
+ */
31
42
  showTooltip?: boolean;
43
+ /**
44
+ * Scales the emoji proportionally to provided hight.
45
+ * Defaults to `undefined`.
46
+ */
32
47
  fitToHeight?: number;
48
+ /**
49
+ * Optimistic will call the fetch interface first and not wait for the entire emoji collection
50
+ * to be available before rendering. This is useful for views or pages that show a select set of
51
+ * emojis.
52
+ * Defaults to `false`.
53
+ */
54
+ optimistic?: boolean;
55
+ /**
56
+ * Custom Fallback allows a custom element or string to be rendered if an emoji fails to be fetched or found.
57
+ * By default it takes the fallback or shortName inside emojiId, but if this prop is set it override the internal
58
+ * fallbacks
59
+ * customFallback<Element | string> else emojiId.fallback else emojiId.shortName.
60
+ * Defaults to `undefined`.
61
+ */
62
+ customFallback?: JSX.Element | string;
63
+ /**
64
+ * Will attempt to render a highly condensed version of the emoji with an image url before showing the meta version.
65
+ * All that is required for optimistic images to render is an emojiId, imageUrl and sizing props.
66
+ * Defaults to `undefined`.
67
+ */
68
+ optimisticImageURL?: string;
33
69
  }
34
70
 
35
71
  export declare interface CategoryDescription {
@@ -143,6 +179,20 @@ declare class DuplicateLimitedQueue<T> {
143
179
 
144
180
  export declare const Emoji: (props: Props) => JSX.Element;
145
181
 
182
+ declare interface EmojiContext {
183
+ emoji: {
184
+ emojiProvider: EmojiProvider;
185
+ };
186
+ }
187
+
188
+ export declare const EmojiContextProvider: FC<EmojiContextProviderType>;
189
+
190
+ declare type EmojiContextProviderType = {
191
+ emojiContextValue: EmojiContextType;
192
+ };
193
+
194
+ declare type EmojiContextType = EmojiContext | null;
195
+
146
196
  export declare interface EmojiDescription extends EmojiId {
147
197
  name?: string;
148
198
  order?: number;
@@ -174,6 +224,8 @@ export declare interface EmojiId {
174
224
  fallback?: string;
175
225
  }
176
226
 
227
+ export declare const EmojiImage: FC<EmojiImageType>;
228
+
177
229
  export declare const emojiImage = 'emoji-common-emoji-image';
178
230
 
179
231
  export declare interface EmojiImageRepresentation {
@@ -181,6 +233,16 @@ export declare interface EmojiImageRepresentation {
181
233
  width: number;
182
234
  }
183
235
 
236
+ declare type EmojiImageType = {
237
+ emojiId: EmojiId;
238
+ imageUrl: string;
239
+ showImageBeforeLoad?: boolean;
240
+ maxSize?: number;
241
+ representation?: EmojiImageRepresentation;
242
+ showTooltip?: boolean;
243
+ onImageLoadError?: () => void;
244
+ };
245
+
184
246
  /**
185
247
  * Emoji providers should return JSON in the format defined by EmojiServiceResponse.
186
248
  */
@@ -217,6 +279,8 @@ export declare const emojiPickerWidth = 350;
217
279
 
218
280
  export declare const EmojiPlaceholder: (props: Props_2) => JSX.Element;
219
281
 
282
+ export declare const emojiPlaceholder = 'emoji-common-placeholder';
283
+
220
284
  declare interface EmojiProgessCallback {
221
285
  (progress: EmojiProgress): void;
222
286
  }
@@ -340,6 +404,14 @@ export declare interface EmojiProvider
340
404
  * Returns the logged user passed by the Product
341
405
  */
342
406
  getCurrentUser(): OptionalUser;
407
+ /**
408
+ * Fetches and returns emojiResource
409
+ */
410
+ fetchEmojiProvider(force?: boolean): Promise<EmojiRepository | undefined>;
411
+ /**
412
+ * Returns a constructed URL to fetch emoji media asset if 'optimisticImageApi' config has been provided
413
+ */
414
+ getOptimisticImageURL(emojiId: EmojiId): string | undefined;
343
415
  }
344
416
 
345
417
  export declare class EmojiRepository {
@@ -423,7 +495,10 @@ export declare class EmojiResource
423
495
  protected allowUpload: boolean;
424
496
  constructor(config: EmojiResourceConfig);
425
497
  isUploadSupported(): Promise<boolean>;
426
- uploadCustomEmoji(upload: EmojiUpload): Promise<EmojiDescription>;
498
+ uploadCustomEmoji(
499
+ upload: EmojiUpload,
500
+ retry?: boolean,
501
+ ): Promise<EmojiDescription>;
427
502
  prepareForUpload(): Promise<void>;
428
503
  }
429
504
 
@@ -444,7 +519,14 @@ declare class EmojiResource_2
444
519
  protected siteEmojiResource?: SiteEmojiResource;
445
520
  protected selectedTone: ToneSelection;
446
521
  protected currentUser?: User;
522
+ protected isInitialised: boolean;
523
+ emojiProviderConfig: EmojiResourceConfig;
447
524
  constructor(config: EmojiResourceConfig);
525
+ fetchEmojiProvider(force?: boolean): Promise<EmojiRepository | undefined>;
526
+ fetchByEmojiId(
527
+ emojiId: EmojiId,
528
+ optimistic: boolean,
529
+ ): Promise<OptionalEmojiDescriptionWithVariations>;
448
530
  private getProviderType;
449
531
  protected initEmojiRepository(emojiResponses: EmojiResponse[]): void;
450
532
  protected initSiteEmojiResource(
@@ -452,6 +534,7 @@ declare class EmojiResource_2
452
534
  provider: ServiceConfig,
453
535
  ): Promise<void>;
454
536
  private performRetries;
537
+ getOptimisticImageURL: (emojiId: EmojiId) => string | undefined;
455
538
  private loadStoredTone;
456
539
  protected refreshLastFilter(): void;
457
540
  protected isLoaded: () => false | EmojiRepository | undefined;
@@ -521,6 +604,17 @@ export declare interface EmojiResourceConfig {
521
604
  * Logged user in the Product.
522
605
  */
523
606
  currentUser?: User;
607
+ /**
608
+ * This is specifically used for fetching a meta information of a single emoji.
609
+ * Useful for when rendering a single or a subset of emojis on a page that does not require the
610
+ * whole provider list to be downloaded.
611
+ */
612
+ singleEmojiApi?: SingleEmojiApiLoaderConfig;
613
+ /**
614
+ * Renders an image while the provider is being downloaded to reduce the time
615
+ * the user is being presented with a placeholder
616
+ */
617
+ optimisticImageApi?: OptimisticImageApiLoaderConfig;
524
618
  }
525
619
 
526
620
  export declare interface EmojiResponse {
@@ -589,10 +683,25 @@ export declare class EmojiTypeAhead extends LoadingEmojiComponent<
589
683
  }
590
684
 
591
685
  declare interface EmojiTypeAheadBaseProps {
686
+ /**
687
+ * Callback to be executed when user selects an emoji.
688
+ */
592
689
  onSelection?: OnEmojiEvent;
690
+ /**
691
+ * Search query.
692
+ */
593
693
  query?: string;
694
+ /**
695
+ * Number of results to be displayed in the search results list
696
+ */
594
697
  listLimit?: number;
698
+ /**
699
+ * Callback to be executed when typeahead component is being shown
700
+ */
595
701
  onOpen?: OnLifecycle;
702
+ /**
703
+ * Callback to be executed when typeahead component disappears
704
+ */
596
705
  onClose?: OnLifecycle;
597
706
  createAnalyticsEvent?: CreateUIAnalyticsEvent;
598
707
  }
@@ -622,15 +731,15 @@ declare class EmojiUploaderInternal extends LoadingEmojiComponent<
622
731
  Props_5,
623
732
  State
624
733
  > {
625
- static AsyncLoadedComponent?: ComponentClass<Props_6>;
734
+ static AsyncLoadedComponent?: FC<Props_6>;
626
735
  state: {
627
- asyncLoadedComponent: React_2.ComponentClass<Props_6, any> | undefined;
736
+ asyncLoadedComponent: React_2.FC<Props_6> | undefined;
628
737
  };
629
738
  constructor(props: Props_5);
630
739
  asyncLoadComponent(): void;
631
740
  renderLoaded(
632
741
  loadedEmojiProvider: EmojiProvider,
633
- EmojiUploadComponent: ComponentClass<Props_6>,
742
+ EmojiUploadComponent: FC<Props_6>,
634
743
  ): JSX.Element;
635
744
  }
636
745
 
@@ -670,11 +779,11 @@ declare abstract class LoadingEmojiComponent<
670
779
  private loadEmojiProvider;
671
780
  private loaded;
672
781
  abstract asyncLoadComponent(): void;
673
- protected setAsyncState(asyncLoadedComponent: ComponentClass<any>): void;
782
+ protected setAsyncState(asyncLoadedComponent: ComponentType<any>): void;
674
783
  renderLoading(): JSX.Element | null;
675
784
  abstract renderLoaded(
676
785
  loadedEmojiProvider: EmojiProvider,
677
- asyncLoadedComponent: ComponentClass<any>,
786
+ asyncLoadedComponent: ComponentType<any>,
678
787
  ): JSX.Element | null;
679
788
  render(): JSX.Element | null;
680
789
  }
@@ -888,13 +997,17 @@ declare interface OnLifecycle {
888
997
  }
889
998
 
890
999
  export declare interface OnToneSelected {
891
- (variation: number): void;
1000
+ (variation: ToneValueType): void;
892
1001
  }
893
1002
 
894
1003
  export declare interface OnToneSelectorCancelled {
895
1004
  (): void;
896
1005
  }
897
1006
 
1007
+ declare interface OptimisticImageApiLoaderConfig extends ServiceConfig {
1008
+ getUrl: (emojiId: EmojiId) => string;
1009
+ }
1010
+
898
1011
  export declare type OptionalEmojiDescription = EmojiDescription | undefined;
899
1012
 
900
1013
  export declare type OptionalEmojiDescriptionWithVariations =
@@ -918,7 +1031,6 @@ declare interface Props {
918
1031
  selected?: boolean;
919
1032
  /**
920
1033
  * Automatically show the emoji as selected based on mouse hover.
921
- *
922
1034
  * CSS, fast, does not require a re-render, but selected state not
923
1035
  * externally controlled via props.
924
1036
  */
@@ -928,7 +1040,7 @@ declare interface Props {
928
1040
  */
929
1041
  onSelected?: OnEmojiEvent;
930
1042
  /**
931
- * Called when the mouse moved over the emoji.
1043
+ * Called when the mouse moves over the emoji.
932
1044
  */
933
1045
  onMouseMove?: OnEmojiEvent;
934
1046
  /**
@@ -960,7 +1072,10 @@ declare interface Props {
960
1072
  }
961
1073
 
962
1074
  declare interface Props_10 extends BaseResourcedEmojiProps {
963
- emojiProvider: EmojiResource;
1075
+ /**
1076
+ * EmojiResource instance that handles fetching of emoji data.
1077
+ */
1078
+ emojiProvider: EmojiResource_2;
964
1079
  }
965
1080
 
966
1081
  declare interface Props_11 {
@@ -975,20 +1090,32 @@ declare interface Props_2 {
975
1090
  size?: number;
976
1091
  showTooltip?: boolean;
977
1092
  representation?: EmojiImageRepresentation;
1093
+ loading?: boolean;
978
1094
  }
979
1095
 
980
1096
  declare interface Props_3 extends Props_4 {
1097
+ /**
1098
+ * Callback to be executed on emoji selection.
1099
+ */
981
1100
  onSelection?: OnEmojiEvent;
1101
+ /**
1102
+ * Callback to handle picker reference.
1103
+ */
982
1104
  onPickerRef?: PickerRefHandler;
1105
+ /**
1106
+ * Flag to disable tone selector.
1107
+ */
983
1108
  hideToneSelector?: boolean;
984
1109
  }
985
1110
 
986
1111
  declare interface Props_4 {
1112
+ /**
1113
+ * Emoji Resource instance
1114
+ */
987
1115
  emojiProvider: Promise<EmojiProvider>;
988
1116
  }
989
1117
 
990
1118
  declare interface Props_5 extends Props_4 {
991
- onUploaderRef?: UploadRefHandler;
992
1119
  createAnalyticsEvent?: CreateUIAnalyticsEvent;
993
1120
  }
994
1121
 
@@ -1008,6 +1135,9 @@ declare interface Props_7 extends EmojiTypeAheadBaseProps, Props_4 {
1008
1135
  }
1009
1136
 
1010
1137
  declare interface Props_8 extends EmojiTypeAheadBaseProps {
1138
+ /**
1139
+ * EmojiResource instance that handles fetching of emoji data.
1140
+ */
1011
1141
  emojiProvider: EmojiProvider;
1012
1142
  }
1013
1143
 
@@ -1056,9 +1186,9 @@ export declare class ResourcedEmoji extends LoadingEmojiComponent<
1056
1186
  Props_9,
1057
1187
  State
1058
1188
  > {
1059
- static AsyncLoadedComponent: ComponentClass<Props_10>;
1189
+ static AsyncLoadedComponent: FC<Props_10>;
1060
1190
  state: {
1061
- asyncLoadedComponent: React_2.ComponentClass<Props_10, any>;
1191
+ asyncLoadedComponent: React_2.FC<Props_10>;
1062
1192
  };
1063
1193
  constructor(props: Props_9);
1064
1194
  componentWillUnmount(): void;
@@ -1074,6 +1204,8 @@ declare interface Retry<T> {
1074
1204
  (): Promise<T> | T;
1075
1205
  }
1076
1206
 
1207
+ declare type SamplingFunc = (rate: number) => boolean;
1208
+
1077
1209
  export declare interface SearchOptions {
1078
1210
  skinTone?: number;
1079
1211
  limit?: number;
@@ -1090,6 +1222,10 @@ export declare const selected = 'emoji-common-selected';
1090
1222
 
1091
1223
  export declare const selectOnHover = 'emoji-common-select-on-hover';
1092
1224
 
1225
+ declare interface SingleEmojiApiLoaderConfig extends ServiceConfig {
1226
+ getUrl: (emojiId: EmojiId) => string;
1227
+ }
1228
+
1093
1229
  declare class SiteEmojiResource {
1094
1230
  private siteServiceConfig;
1095
1231
  private mediaApiToken;
@@ -1114,6 +1250,7 @@ declare class SiteEmojiResource {
1114
1250
  ): boolean | Promise<boolean>;
1115
1251
  uploadEmoji(
1116
1252
  upload: EmojiUpload,
1253
+ retry?: boolean,
1117
1254
  progressCallback?: EmojiProgessCallback,
1118
1255
  ): Promise<EmojiDescription>;
1119
1256
  /**
@@ -1172,7 +1309,7 @@ export declare interface SpriteSheets {
1172
1309
 
1173
1310
  declare interface State {
1174
1311
  loadedEmojiProvider?: EmojiProvider;
1175
- asyncLoadedComponent?: ComponentClass<any>;
1312
+ asyncLoadedComponent?: ComponentType<any>;
1176
1313
  }
1177
1314
 
1178
1315
  export declare interface Styles {
@@ -1186,6 +1323,7 @@ declare class TokenManager {
1186
1323
  private tokens;
1187
1324
  constructor(siteServiceConfig: ServiceConfig);
1188
1325
  isValidToken(mediaApiToken: MediaApiToken): boolean;
1326
+ fetchNewToken(type: TokenType): Promise<MediaApiToken>;
1189
1327
  addToken(type: TokenType, mediaApiToken: MediaApiToken): void;
1190
1328
  getToken(type: TokenType, forceRefresh?: boolean): Promise<MediaApiToken>;
1191
1329
  }
@@ -1194,6 +1332,8 @@ declare type TokenType = 'read' | 'upload';
1194
1332
 
1195
1333
  export declare type ToneSelection = number | undefined;
1196
1334
 
1335
+ declare type ToneValueType = number;
1336
+
1197
1337
  export declare const toOptionalEmojiId: (
1198
1338
  emoji: OptionalEmojiDescription,
1199
1339
  ) => EmojiId | undefined;
@@ -1236,7 +1376,10 @@ export declare interface UploadingEmojiProvider extends EmojiProvider {
1236
1376
  *
1237
1377
  * The last search will be re-run to ensure the new emoji is considered in the search.
1238
1378
  */
1239
- uploadCustomEmoji(upload: EmojiUpload): Promise<EmojiDescription>;
1379
+ uploadCustomEmoji(
1380
+ upload: EmojiUpload,
1381
+ retry?: boolean,
1382
+ ): Promise<EmojiDescription>;
1240
1383
  /**
1241
1384
  * Allows the preloading of data (e.g. authentication tokens) to speed the uploading of emoji.
1242
1385
  */
@@ -1279,9 +1422,31 @@ export declare class UsageFrequencyTracker {
1279
1422
  clear(): void;
1280
1423
  }
1281
1424
 
1425
+ export declare const useEmojiContext: () => EmojiContextType;
1426
+
1282
1427
  export declare interface User {
1283
1428
  id: string;
1284
1429
  }
1285
1430
 
1431
+ /**
1432
+ * This function is a temp solution to reduce the event traffic, as UFO package does not support it.
1433
+ *
1434
+ * e.g. Emoji Picker contains thousands of emojis, which means will trigger a large number of renderred events without sampling
1435
+ * @param ufoExperience
1436
+ * @returns
1437
+ */
1438
+ export declare const withSampling: (
1439
+ ufoExperience: UFOExperience,
1440
+ ) => WithSamplingUFOExperience;
1441
+
1442
+ export declare interface WithSamplingUFOExperience
1443
+ extends Omit<UFOExperience, 'start'> {
1444
+ start: (options: {
1445
+ samplingRate: number;
1446
+ samplingFunc?: SamplingFunc;
1447
+ startTime?: number;
1448
+ }) => Promise<void>;
1449
+ }
1450
+
1286
1451
  export {};
1287
1452
  ```