Fix emoji bundle size (#34677)
This commit is contained in:
		@@ -12,14 +12,10 @@ import Overlay from 'react-overlays/Overlay';
 | 
			
		||||
 | 
			
		||||
import MoodIcon from '@/material-icons/400-20px/mood.svg?react';
 | 
			
		||||
import { IconButton } from 'mastodon/components/icon_button';
 | 
			
		||||
import emojiCompressed from 'mastodon/features/emoji/emoji_compressed';
 | 
			
		||||
import { assetHost } from 'mastodon/utils/config';
 | 
			
		||||
 | 
			
		||||
import { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji';
 | 
			
		||||
import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components';
 | 
			
		||||
 | 
			
		||||
const nimblePickerData = emojiCompressed[5];
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
  emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },
 | 
			
		||||
  emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' },
 | 
			
		||||
@@ -40,19 +36,11 @@ let EmojiPicker, Emoji; // load asynchronously
 | 
			
		||||
 | 
			
		||||
const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true;
 | 
			
		||||
 | 
			
		||||
const backgroundImageFn = () => `${assetHost}/emoji/sheet_15_1.png`;
 | 
			
		||||
 | 
			
		||||
const notFoundFn = () => (
 | 
			
		||||
  <div className='emoji-mart-no-results'>
 | 
			
		||||
    <Emoji
 | 
			
		||||
      data={nimblePickerData}
 | 
			
		||||
      emoji='sleuth_or_spy'
 | 
			
		||||
      set='twitter'
 | 
			
		||||
      size={32}
 | 
			
		||||
      sheetSize={32}
 | 
			
		||||
      sheetColumns={62}
 | 
			
		||||
      sheetRows={62}
 | 
			
		||||
      backgroundImageFn={backgroundImageFn}
 | 
			
		||||
    />
 | 
			
		||||
 | 
			
		||||
    <div className='emoji-mart-no-results-label'>
 | 
			
		||||
@@ -110,12 +98,12 @@ class ModifierPickerMenu extends PureComponent {
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div className='emoji-picker-dropdown__modifiers__menu' style={{ display: active ? 'block' : 'none' }} ref={this.setRef}>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={1}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={1} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={2}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={3}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={4}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={5}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={6}><Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={1}><Emoji emoji='fist' size={22} skin={1} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={2}><Emoji emoji='fist' size={22} skin={2} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={3}><Emoji emoji='fist' size={22} skin={3} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={4}><Emoji emoji='fist' size={22} skin={4} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={5}><Emoji emoji='fist' size={22} skin={5} /></button>
 | 
			
		||||
        <button type='button' onClick={this.handleClick} data-index={6}><Emoji emoji='fist' size={22} skin={6} /></button>
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
@@ -150,7 +138,7 @@ class ModifierPicker extends PureComponent {
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div className='emoji-picker-dropdown__modifiers'>
 | 
			
		||||
        <Emoji data={nimblePickerData} sheetColumns={62} sheetRows={62} emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} />
 | 
			
		||||
        <Emoji emoji='fist' size={22} skin={modifier} onClick={this.handleClick} />
 | 
			
		||||
        <ModifierPickerMenu active={active} onSelect={this.handleSelect} onClose={this.props.onClose} />
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
@@ -286,16 +274,11 @@ class EmojiPickerMenuImpl extends PureComponent {
 | 
			
		||||
    return (
 | 
			
		||||
      <div className={classNames('emoji-picker-dropdown__menu', { selecting: modifierOpen })} style={style} ref={this.setRef}>
 | 
			
		||||
        <EmojiPicker
 | 
			
		||||
          data={nimblePickerData}
 | 
			
		||||
          sheetColumns={62}
 | 
			
		||||
          sheetRows={62}
 | 
			
		||||
          perLine={8}
 | 
			
		||||
          emojiSize={22}
 | 
			
		||||
          sheetSize={32}
 | 
			
		||||
          custom={buildCustomEmojis(custom_emojis)}
 | 
			
		||||
          color=''
 | 
			
		||||
          emoji=''
 | 
			
		||||
          set='twitter'
 | 
			
		||||
          title={title}
 | 
			
		||||
          i18n={this.getI18n()}
 | 
			
		||||
          onClick={this.handleClick}
 | 
			
		||||
@@ -304,7 +287,6 @@ class EmojiPickerMenuImpl extends PureComponent {
 | 
			
		||||
          skin={skinTone}
 | 
			
		||||
          showPreview={false}
 | 
			
		||||
          showSkinTones={false}
 | 
			
		||||
          backgroundImageFn={backgroundImageFn}
 | 
			
		||||
          notFound={notFoundFn}
 | 
			
		||||
          autoFocus={this.state.readyToFocus}
 | 
			
		||||
          emojiTooltip
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,6 @@ type EmojiCompressed = [
 | 
			
		||||
  Category[],
 | 
			
		||||
  Data['aliases'],
 | 
			
		||||
  EmojisWithoutShortCodes,
 | 
			
		||||
  Data,
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -132,6 +132,5 @@ module.exports = JSON.parse(JSON.stringify([
 | 
			
		||||
  emojiMartData.skins,
 | 
			
		||||
  emojiMartData.categories,
 | 
			
		||||
  emojiMartData.aliases,
 | 
			
		||||
  emojisWithoutShortCodes,
 | 
			
		||||
  emojiMartData
 | 
			
		||||
  emojisWithoutShortCodes
 | 
			
		||||
]));
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
import Emoji from 'emoji-mart/dist-es/components/emoji/nimble-emoji';
 | 
			
		||||
import Picker from 'emoji-mart/dist-es/components/picker/nimble-picker';
 | 
			
		||||
 | 
			
		||||
export {
 | 
			
		||||
  Picker,
 | 
			
		||||
  Emoji,
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										53
									
								
								app/javascript/mastodon/features/emoji/emoji_picker.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								app/javascript/mastodon/features/emoji/emoji_picker.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
import type { EmojiProps, PickerProps } from 'emoji-mart';
 | 
			
		||||
import EmojiRaw from 'emoji-mart/dist-es/components/emoji/nimble-emoji';
 | 
			
		||||
import PickerRaw from 'emoji-mart/dist-es/components/picker/nimble-picker';
 | 
			
		||||
 | 
			
		||||
import { assetHost } from 'mastodon/utils/config';
 | 
			
		||||
 | 
			
		||||
import EmojiData from './emoji_data.json';
 | 
			
		||||
 | 
			
		||||
const backgroundImageFnDefault = () => `${assetHost}/emoji/sheet_15_1.png`;
 | 
			
		||||
 | 
			
		||||
const Emoji = ({
 | 
			
		||||
  set = 'twitter',
 | 
			
		||||
  sheetSize = 32,
 | 
			
		||||
  sheetColumns = 62,
 | 
			
		||||
  sheetRows = 62,
 | 
			
		||||
  backgroundImageFn = backgroundImageFnDefault,
 | 
			
		||||
  ...props
 | 
			
		||||
}: EmojiProps) => {
 | 
			
		||||
  return (
 | 
			
		||||
    <EmojiRaw
 | 
			
		||||
      data={EmojiData}
 | 
			
		||||
      set={set}
 | 
			
		||||
      sheetSize={sheetSize}
 | 
			
		||||
      sheetColumns={sheetColumns}
 | 
			
		||||
      sheetRows={sheetRows}
 | 
			
		||||
      backgroundImageFn={backgroundImageFn}
 | 
			
		||||
      {...props}
 | 
			
		||||
    />
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const Picker = ({
 | 
			
		||||
  set = 'twitter',
 | 
			
		||||
  sheetSize = 32,
 | 
			
		||||
  sheetColumns = 62,
 | 
			
		||||
  sheetRows = 62,
 | 
			
		||||
  backgroundImageFn = backgroundImageFnDefault,
 | 
			
		||||
  ...props
 | 
			
		||||
}: PickerProps) => {
 | 
			
		||||
  return (
 | 
			
		||||
    <PickerRaw
 | 
			
		||||
      data={EmojiData}
 | 
			
		||||
      set={set}
 | 
			
		||||
      sheetSize={sheetSize}
 | 
			
		||||
      sheetColumns={sheetColumns}
 | 
			
		||||
      sheetRows={sheetRows}
 | 
			
		||||
      backgroundImageFn={backgroundImageFn}
 | 
			
		||||
      {...props}
 | 
			
		||||
    />
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export { Picker, Emoji };
 | 
			
		||||
							
								
								
									
										8
									
								
								app/javascript/types/emoji_picker.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								app/javascript/types/emoji_picker.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
declare module 'emoji-mart' {
 | 
			
		||||
  interface PickerProps {
 | 
			
		||||
    sheetColumns?: number;
 | 
			
		||||
    sheetRows?: number;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export {};
 | 
			
		||||
@@ -5,6 +5,7 @@
 | 
			
		||||
    "module": "CommonJS",
 | 
			
		||||
    "moduleResolution": "node",
 | 
			
		||||
    "allowJs": true,
 | 
			
		||||
    "resolveJsonModule": true,
 | 
			
		||||
    "noEmit": true,
 | 
			
		||||
    "strict": true,
 | 
			
		||||
    "noImplicitReturns": true,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user