diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -528,7 +528,7 @@ 'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9', 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8', 'rsrc/js/phuix/PHUIXActionView.js' => '442efd08', - 'rsrc/js/phuix/PHUIXAutocomplete.js' => 'e0731603', + 'rsrc/js/phuix/PHUIXAutocomplete.js' => 'f40c72af', 'rsrc/js/phuix/PHUIXButtonView.js' => '8a91e1ac', 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '04b2ae03', 'rsrc/js/phuix/PHUIXExample.js' => '68af71ca', @@ -881,7 +881,7 @@ 'phui-workpanel-view-css' => 'a3a63478', 'phuix-action-list-view' => 'b5c256b8', 'phuix-action-view' => '442efd08', - 'phuix-autocomplete' => 'e0731603', + 'phuix-autocomplete' => 'f40c72af', 'phuix-button-view' => '8a91e1ac', 'phuix-dropdown-menu' => '04b2ae03', 'phuix-form-control-view' => '16ad6224', @@ -2037,12 +2037,6 @@ 'javelin-typeahead-ondemand-source', 'javelin-dom', ), - 'e0731603' => array( - 'javelin-install', - 'javelin-dom', - 'phuix-icon-view', - 'phabricator-prefab', - ), 'e1d25dfb' => array( 'javelin-behavior', 'javelin-stratcom', @@ -2143,6 +2137,12 @@ 'phui-button-css', 'phui-button-simple-css', ), + 'f40c72af' => array( + 'javelin-install', + 'javelin-dom', + 'phuix-icon-view', + 'phabricator-prefab', + ), 'f50152ad' => array( 'phui-timeline-view-css', ), diff --git a/resources/emoji/manifest.json b/resources/emoji/manifest.json --- a/resources/emoji/manifest.json +++ b/resources/emoji/manifest.json @@ -16,12 +16,10 @@ "ambulance": "\ud83d\ude91", "amphora": "\ud83c\udffa", "anchor": "\u2693", - "angel": "\ud83d\udc7c", - "angel_tone1": "\ud83d\udc7c\ud83c\udffb", - "angel_tone2": "\ud83d\udc7c\ud83c\udffc", - "angel_tone3": "\ud83d\udc7c\ud83c\udffd", - "angel_tone4": "\ud83d\udc7c\ud83c\udffe", - "angel_tone5": "\ud83d\udc7c\ud83c\udfff", + "angel": { + "emoji": "\ud83d\udc7c", + "tones": true + }, "anger": "\ud83d\udca2", "anger_right": "\ud83d\uddef", "angry": "\ud83d\ude20", @@ -58,15 +56,13 @@ "atm": "\ud83c\udfe7", "atom": "\u269b", "b": "\ud83c\udd71", - "baby": "\ud83d\udc76", + "baby": { + "emoji": "\ud83d\udc76", + "tones": true + }, "baby_bottle": "\ud83c\udf7c", "baby_chick": "\ud83d\udc24", "baby_symbol": "\ud83d\udebc", - "baby_tone1": "\ud83d\udc76\ud83c\udffb", - "baby_tone2": "\ud83d\udc76\ud83c\udffc", - "baby_tone3": "\ud83d\udc76\ud83c\udffd", - "baby_tone4": "\ud83d\udc76\ud83c\udffe", - "baby_tone5": "\ud83d\udc76\ud83c\udfff", "back": "\ud83d\udd19", "badminton": "\ud83c\udff8", "baggage_claim": "\ud83d\udec4", @@ -81,18 +77,14 @@ "barber": "\ud83d\udc88", "baseball": "\u26be", "basketball": "\ud83c\udfc0", - "basketball_player": "\u26f9", - "basketball_player_tone1": "\u26f9\ud83c\udffb", - "basketball_player_tone2": "\u26f9\ud83c\udffc", - "basketball_player_tone3": "\u26f9\ud83c\udffd", - "basketball_player_tone4": "\u26f9\ud83c\udffe", - "basketball_player_tone5": "\u26f9\ud83c\udfff", - "bath": "\ud83d\udec0", - "bath_tone1": "\ud83d\udec0\ud83c\udffb", - "bath_tone2": "\ud83d\udec0\ud83c\udffc", - "bath_tone3": "\ud83d\udec0\ud83c\udffd", - "bath_tone4": "\ud83d\udec0\ud83c\udffe", - "bath_tone5": "\ud83d\udec0\ud83c\udfff", + "basketball_player": { + "emoji": "\u26f9", + "tones": true + }, + "bath": { + "emoji": "\ud83d\udec0", + "tones": true + }, "bathtub": "\ud83d\udec1", "battery": "\ud83d\udd0b", "beach": "\ud83c\udfd6", @@ -107,12 +99,10 @@ "bell": "\ud83d\udd14", "bellhop": "\ud83d\udece", "bento": "\ud83c\udf71", - "bicyclist": "\ud83d\udeb4", - "bicyclist_tone1": "\ud83d\udeb4\ud83c\udffb", - "bicyclist_tone2": "\ud83d\udeb4\ud83c\udffc", - "bicyclist_tone3": "\ud83d\udeb4\ud83c\udffd", - "bicyclist_tone4": "\ud83d\udeb4\ud83c\udffe", - "bicyclist_tone5": "\ud83d\udeb4\ud83c\udfff", + "bicyclist": { + "emoji": "\ud83d\udeb4", + "tones": true + }, "bike": "\ud83d\udeb2", "bikini": "\ud83d\udc59", "biohazard": "\u2623", @@ -141,27 +131,21 @@ "boom": "\ud83d\udca5", "boot": "\ud83d\udc62", "bouquet": "\ud83d\udc90", - "bow": "\ud83d\ude47", + "bow": { + "emoji": "\ud83d\ude47", + "tones": true + }, "bow_and_arrow": "\ud83c\udff9", - "bow_tone1": "\ud83d\ude47\ud83c\udffb", - "bow_tone2": "\ud83d\ude47\ud83c\udffc", - "bow_tone3": "\ud83d\ude47\ud83c\udffd", - "bow_tone4": "\ud83d\ude47\ud83c\udffe", - "bow_tone5": "\ud83d\ude47\ud83c\udfff", "bowling": "\ud83c\udfb3", - "boy": "\ud83d\udc66", - "boy_tone1": "\ud83d\udc66\ud83c\udffb", - "boy_tone2": "\ud83d\udc66\ud83c\udffc", - "boy_tone3": "\ud83d\udc66\ud83c\udffd", - "boy_tone4": "\ud83d\udc66\ud83c\udffe", - "boy_tone5": "\ud83d\udc66\ud83c\udfff", + "boy": { + "emoji": "\ud83d\udc66", + "tones": true + }, "bread": "\ud83c\udf5e", - "bride_with_veil": "\ud83d\udc70", - "bride_with_veil_tone1": "\ud83d\udc70\ud83c\udffb", - "bride_with_veil_tone2": "\ud83d\udc70\ud83c\udffc", - "bride_with_veil_tone3": "\ud83d\udc70\ud83c\udffd", - "bride_with_veil_tone4": "\ud83d\udc70\ud83c\udffe", - "bride_with_veil_tone5": "\ud83d\udc70\ud83c\udfff", + "bride_with_veil": { + "emoji": "\ud83d\udc70", + "tones": true + }, "bridge_at_night": "\ud83c\udf09", "briefcase": "\ud83d\udcbc", "broken_heart": "\ud83d\udc94", @@ -216,12 +200,10 @@ "city_sunset": "\ud83c\udf07", "cityscape": "\ud83c\udfd9", "cl": "\ud83c\udd91", - "clap": "\ud83d\udc4f", - "clap_tone1": "\ud83d\udc4f\ud83c\udffb", - "clap_tone2": "\ud83d\udc4f\ud83c\udffc", - "clap_tone3": "\ud83d\udc4f\ud83c\udffd", - "clap_tone4": "\ud83d\udc4f\ud83c\udffe", - "clap_tone5": "\ud83d\udc4f\ud83c\udfff", + "clap": { + "emoji": "\ud83d\udc4f", + "tones": true + }, "clapper": "\ud83c\udfac", "classical_building": "\ud83c\udfdb", "clipboard": "\ud83d\udccb", @@ -272,22 +254,18 @@ "congratulations": "\u3297", "construction": "\ud83d\udea7", "construction_site": "\ud83c\udfd7", - "construction_worker": "\ud83d\udc77", - "construction_worker_tone1": "\ud83d\udc77\ud83c\udffb", - "construction_worker_tone2": "\ud83d\udc77\ud83c\udffc", - "construction_worker_tone3": "\ud83d\udc77\ud83c\udffd", - "construction_worker_tone4": "\ud83d\udc77\ud83c\udffe", - "construction_worker_tone5": "\ud83d\udc77\ud83c\udfff", + "construction_worker": { + "emoji": "\ud83d\udc77", + "tones": true + }, "control_knobs": "\ud83c\udf9b", "convenience_store": "\ud83c\udfea", "cookie": "\ud83c\udf6a", "cool": "\ud83c\udd92", - "cop": "\ud83d\udc6e", - "cop_tone1": "\ud83d\udc6e\ud83c\udffb", - "cop_tone2": "\ud83d\udc6e\ud83c\udffc", - "cop_tone3": "\ud83d\udc6e\ud83c\udffd", - "cop_tone4": "\ud83d\udc6e\ud83c\udffe", - "cop_tone5": "\ud83d\udc6e\ud83c\udfff", + "cop": { + "emoji": "\ud83d\udc6e", + "tones": true + }, "copyright": "\u00a9", "corn": "\ud83c\udf3d", "couch": "\ud83d\udecb", @@ -320,12 +298,10 @@ "customs": "\ud83d\udec3", "cyclone": "\ud83c\udf00", "dagger": "\ud83d\udde1", - "dancer": "\ud83d\udc83", - "dancer_tone1": "\ud83d\udc83\ud83c\udffb", - "dancer_tone2": "\ud83d\udc83\ud83c\udffc", - "dancer_tone3": "\ud83d\udc83\ud83c\udffd", - "dancer_tone4": "\ud83d\udc83\ud83c\udffe", - "dancer_tone5": "\ud83d\udc83\ud83c\udfff", + "dancer": { + "emoji": "\ud83d\udc83", + "tones": true + }, "dancers": "\ud83d\udc6f", "dango": "\ud83c\udf61", "dark_sunglasses": "\ud83d\udd76", @@ -359,13 +335,11 @@ "droplet": "\ud83d\udca7", "dvd": "\ud83d\udcc0", "e-mail": "\ud83d\udce7", - "ear": "\ud83d\udc42", + "ear": { + "emoji": "\ud83d\udc42", + "tones": true + }, "ear_of_rice": "\ud83c\udf3e", - "ear_tone1": "\ud83d\udc42\ud83c\udffb", - "ear_tone2": "\ud83d\udc42\ud83c\udffc", - "ear_tone3": "\ud83d\udc42\ud83c\udffd", - "ear_tone4": "\ud83d\udc42\ud83c\udffe", - "ear_tone5": "\ud83d\udc42\ud83c\udfff", "earth_africa": "\ud83c\udf0d", "earth_americas": "\ud83c\udf0e", "earth_asia": "\ud83c\udf0f", @@ -424,12 +398,10 @@ "fish": "\ud83d\udc1f", "fish_cake": "\ud83c\udf65", "fishing_pole_and_fish": "\ud83c\udfa3", - "fist": "\u270a", - "fist_tone1": "\u270a\ud83c\udffb", - "fist_tone2": "\u270a\ud83c\udffc", - "fist_tone3": "\u270a\ud83c\udffd", - "fist_tone4": "\u270a\ud83c\udffe", - "fist_tone5": "\u270a\ud83c\udfff", + "fist": { + "emoji": "\u270a", + "tones": true + }, "five": "5\u20e3", "flag_ac": "\ud83c\udde6\ud83c\udde8", "flag_ad": "\ud83c\udde6\ud83c\udde9", @@ -722,12 +694,10 @@ "ghost": "\ud83d\udc7b", "gift": "\ud83c\udf81", "gift_heart": "\ud83d\udc9d", - "girl": "\ud83d\udc67", - "girl_tone1": "\ud83d\udc67\ud83c\udffb", - "girl_tone2": "\ud83d\udc67\ud83c\udffc", - "girl_tone3": "\ud83d\udc67\ud83c\udffd", - "girl_tone4": "\ud83d\udc67\ud83c\udffe", - "girl_tone5": "\ud83d\udc67\ud83c\udfff", + "girl": { + "emoji": "\ud83d\udc67", + "tones": true + }, "globe_with_meridians": "\ud83c\udf10", "goat": "\ud83d\udc10", "golf": "\u26f3", @@ -741,30 +711,24 @@ "grimacing": "\ud83d\ude2c", "grin": "\ud83d\ude01", "grinning": "\ud83d\ude00", - "guardsman": "\ud83d\udc82", - "guardsman_tone1": "\ud83d\udc82\ud83c\udffb", - "guardsman_tone2": "\ud83d\udc82\ud83c\udffc", - "guardsman_tone3": "\ud83d\udc82\ud83c\udffd", - "guardsman_tone4": "\ud83d\udc82\ud83c\udffe", - "guardsman_tone5": "\ud83d\udc82\ud83c\udfff", + "guardsman": { + "emoji": "\ud83d\udc82", + "tones": true + }, "guitar": "\ud83c\udfb8", "gun": "\ud83d\udd2b", - "haircut": "\ud83d\udc87", - "haircut_tone1": "\ud83d\udc87\ud83c\udffb", - "haircut_tone2": "\ud83d\udc87\ud83c\udffc", - "haircut_tone3": "\ud83d\udc87\ud83c\udffd", - "haircut_tone4": "\ud83d\udc87\ud83c\udffe", - "haircut_tone5": "\ud83d\udc87\ud83c\udfff", + "haircut": { + "emoji": "\ud83d\udc87", + "tones": true + }, "hamburger": "\ud83c\udf54", "hammer": "\ud83d\udd28", "hammer_pick": "\u2692", "hamster": "\ud83d\udc39", - "hand_splayed": "\ud83d\udd90", - "hand_splayed_tone1": "\ud83d\udd90\ud83c\udffb", - "hand_splayed_tone2": "\ud83d\udd90\ud83c\udffc", - "hand_splayed_tone3": "\ud83d\udd90\ud83c\udffd", - "hand_splayed_tone4": "\ud83d\udd90\ud83c\udffe", - "hand_splayed_tone5": "\ud83d\udd90\ud83c\udfff", + "hand_splayed": { + "emoji": "\ud83d\udd90", + "tones": true + }, "handbag": "\ud83d\udc5c", "hash": "#\u20e3", "hatched_chick": "\ud83d\udc25", @@ -797,12 +761,10 @@ "homes": "\ud83c\udfd8", "honey_pot": "\ud83c\udf6f", "horse": "\ud83d\udc34", - "horse_racing": "\ud83c\udfc7", - "horse_racing_tone1": "\ud83c\udfc7\ud83c\udffb", - "horse_racing_tone2": "\ud83c\udfc7\ud83c\udffc", - "horse_racing_tone3": "\ud83c\udfc7\ud83c\udffd", - "horse_racing_tone4": "\ud83c\udfc7\ud83c\udffe", - "horse_racing_tone5": "\ud83c\udfc7\ud83c\udfff", + "horse_racing": { + "emoji": "\ud83c\udfc7", + "tones": true + }, "hospital": "\ud83c\udfe5", "hot_pepper": "\ud83c\udf36", "hotdog": "\ud83c\udf2d", @@ -823,12 +785,10 @@ "imp": "\ud83d\udc7f", "inbox_tray": "\ud83d\udce5", "incoming_envelope": "\ud83d\udce8", - "information_desk_person": "\ud83d\udc81", - "information_desk_person_tone1": "\ud83d\udc81\ud83c\udffb", - "information_desk_person_tone2": "\ud83d\udc81\ud83c\udffc", - "information_desk_person_tone3": "\ud83d\udc81\ud83c\udffd", - "information_desk_person_tone4": "\ud83d\udc81\ud83c\udffe", - "information_desk_person_tone5": "\ud83d\udc81\ud83c\udfff", + "information_desk_person": { + "emoji": "\ud83d\udc81", + "tones": true + }, "information_source": "\u2139", "innocent": "\ud83d\ude07", "interrobang": "\u2049", @@ -878,12 +838,10 @@ "level_slider": "\ud83c\udf9a", "levitate": "\ud83d\udd74", "libra": "\u264e", - "lifter": "\ud83c\udfcb", - "lifter_tone1": "\ud83c\udfcb\ud83c\udffb", - "lifter_tone2": "\ud83c\udfcb\ud83c\udffc", - "lifter_tone3": "\ud83c\udfcb\ud83c\udffd", - "lifter_tone4": "\ud83c\udfcb\ud83c\udffe", - "lifter_tone5": "\ud83c\udfcb\ud83c\udfff", + "lifter": { + "emoji": "\ud83c\udfcb", + "tones": true + }, "light_rail": "\ud83d\ude88", "link": "\ud83d\udd17", "lion_face": "\ud83e\udd81", @@ -906,56 +864,44 @@ "mailbox_closed": "\ud83d\udcea", "mailbox_with_mail": "\ud83d\udcec", "mailbox_with_no_mail": "\ud83d\udced", - "man": "\ud83d\udc68", - "man_tone1": "\ud83d\udc68\ud83c\udffb", - "man_tone2": "\ud83d\udc68\ud83c\udffc", - "man_tone3": "\ud83d\udc68\ud83c\udffd", - "man_tone4": "\ud83d\udc68\ud83c\udffe", - "man_tone5": "\ud83d\udc68\ud83c\udfff", - "man_with_gua_pi_mao": "\ud83d\udc72", - "man_with_gua_pi_mao_tone1": "\ud83d\udc72\ud83c\udffb", - "man_with_gua_pi_mao_tone2": "\ud83d\udc72\ud83c\udffc", - "man_with_gua_pi_mao_tone3": "\ud83d\udc72\ud83c\udffd", - "man_with_gua_pi_mao_tone4": "\ud83d\udc72\ud83c\udffe", - "man_with_gua_pi_mao_tone5": "\ud83d\udc72\ud83c\udfff", - "man_with_turban": "\ud83d\udc73", - "man_with_turban_tone1": "\ud83d\udc73\ud83c\udffb", - "man_with_turban_tone2": "\ud83d\udc73\ud83c\udffc", - "man_with_turban_tone3": "\ud83d\udc73\ud83c\udffd", - "man_with_turban_tone4": "\ud83d\udc73\ud83c\udffe", - "man_with_turban_tone5": "\ud83d\udc73\ud83c\udfff", + "man": { + "emoji": "\ud83d\udc68", + "tones": true + }, + "man_with_gua_pi_mao": { + "emoji": "\ud83d\udc72", + "tones": true + }, + "man_with_turban": { + "emoji": "\ud83d\udc73", + "tones": true + }, "mans_shoe": "\ud83d\udc5e", "map": "\ud83d\uddfa", "maple_leaf": "\ud83c\udf41", "mask": "\ud83d\ude37", - "massage": "\ud83d\udc86", - "massage_tone1": "\ud83d\udc86\ud83c\udffb", - "massage_tone2": "\ud83d\udc86\ud83c\udffc", - "massage_tone3": "\ud83d\udc86\ud83c\udffd", - "massage_tone4": "\ud83d\udc86\ud83c\udffe", - "massage_tone5": "\ud83d\udc86\ud83c\udfff", + "massage": { + "emoji": "\ud83d\udc86", + "tones": true + }, "meat_on_bone": "\ud83c\udf56", "medal": "\ud83c\udfc5", "mega": "\ud83d\udce3", "melon": "\ud83c\udf48", "menorah": "\ud83d\udd4e", "mens": "\ud83d\udeb9", - "metal": "\ud83e\udd18", - "metal_tone1": "\ud83e\udd18\ud83c\udffb", - "metal_tone2": "\ud83e\udd18\ud83c\udffc", - "metal_tone3": "\ud83e\udd18\ud83c\udffd", - "metal_tone4": "\ud83e\udd18\ud83c\udffe", - "metal_tone5": "\ud83e\udd18\ud83c\udfff", + "metal": { + "emoji": "\ud83e\udd18", + "tones": true + }, "metro": "\ud83d\ude87", "microphone": "\ud83c\udfa4", "microphone2": "\ud83c\udf99", "microscope": "\ud83d\udd2c", - "middle_finger": "\ud83d\udd95", - "middle_finger_tone1": "\ud83d\udd95\ud83c\udffb", - "middle_finger_tone2": "\ud83d\udd95\ud83c\udffc", - "middle_finger_tone3": "\ud83d\udd95\ud83c\udffd", - "middle_finger_tone4": "\ud83d\udd95\ud83c\udffe", - "middle_finger_tone5": "\ud83d\udd95\ud83c\udfff", + "middle_finger": { + "emoji": "\ud83d\udd95", + "tones": true + }, "military_medal": "\ud83c\udf96", "milky_way": "\ud83c\udf0c", "minibus": "\ud83d\ude90", @@ -974,12 +920,10 @@ "motorway": "\ud83d\udee3", "mount_fuji": "\ud83d\uddfb", "mountain": "\u26f0", - "mountain_bicyclist": "\ud83d\udeb5", - "mountain_bicyclist_tone1": "\ud83d\udeb5\ud83c\udffb", - "mountain_bicyclist_tone2": "\ud83d\udeb5\ud83c\udffc", - "mountain_bicyclist_tone3": "\ud83d\udeb5\ud83c\udffd", - "mountain_bicyclist_tone4": "\ud83d\udeb5\ud83c\udffe", - "mountain_bicyclist_tone5": "\ud83d\udeb5\ud83c\udfff", + "mountain_bicyclist": { + "emoji": "\ud83d\udeb5", + "tones": true + }, "mountain_cableway": "\ud83d\udea0", "mountain_railway": "\ud83d\ude9e", "mountain_snow": "\ud83c\udfd4", @@ -988,23 +932,19 @@ "mouse_three_button": "\ud83d\uddb1", "movie_camera": "\ud83c\udfa5", "moyai": "\ud83d\uddff", - "muscle": "\ud83d\udcaa", - "muscle_tone1": "\ud83d\udcaa\ud83c\udffb", - "muscle_tone2": "\ud83d\udcaa\ud83c\udffc", - "muscle_tone3": "\ud83d\udcaa\ud83c\udffd", - "muscle_tone4": "\ud83d\udcaa\ud83c\udffe", - "muscle_tone5": "\ud83d\udcaa\ud83c\udfff", + "muscle": { + "emoji": "\ud83d\udcaa", + "tones": true + }, "mushroom": "\ud83c\udf44", "musical_keyboard": "\ud83c\udfb9", "musical_note": "\ud83c\udfb5", "musical_score": "\ud83c\udfbc", "mute": "\ud83d\udd07", - "nail_care": "\ud83d\udc85", - "nail_care_tone1": "\ud83d\udc85\ud83c\udffb", - "nail_care_tone2": "\ud83d\udc85\ud83c\udffc", - "nail_care_tone3": "\ud83d\udc85\ud83c\udffd", - "nail_care_tone4": "\ud83d\udc85\ud83c\udffe", - "nail_care_tone5": "\ud83d\udc85\ud83c\udfff", + "nail_care": { + "emoji": "\ud83d\udc85", + "tones": true + }, "name_badge": "\ud83d\udcdb", "necktie": "\ud83d\udc54", "negative_squared_cross_mark": "\u274e", @@ -1022,23 +962,19 @@ "no_bicycles": "\ud83d\udeb3", "no_entry": "\u26d4", "no_entry_sign": "\ud83d\udeab", - "no_good": "\ud83d\ude45", - "no_good_tone1": "\ud83d\ude45\ud83c\udffb", - "no_good_tone2": "\ud83d\ude45\ud83c\udffc", - "no_good_tone3": "\ud83d\ude45\ud83c\udffd", - "no_good_tone4": "\ud83d\ude45\ud83c\udffe", - "no_good_tone5": "\ud83d\ude45\ud83c\udfff", + "no_good": { + "emoji": "\ud83d\ude45", + "tones": true + }, "no_mobile_phones": "\ud83d\udcf5", "no_mouth": "\ud83d\ude36", "no_pedestrians": "\ud83d\udeb7", "no_smoking": "\ud83d\udead", "non-potable_water": "\ud83d\udeb1", - "nose": "\ud83d\udc43", - "nose_tone1": "\ud83d\udc43\ud83c\udffb", - "nose_tone2": "\ud83d\udc43\ud83c\udffc", - "nose_tone3": "\ud83d\udc43\ud83c\udffd", - "nose_tone4": "\ud83d\udc43\ud83c\udffe", - "nose_tone5": "\ud83d\udc43\ud83c\udfff", + "nose": { + "emoji": "\ud83d\udc43", + "tones": true + }, "notebook": "\ud83d\udcd3", "notebook_with_decorative_cover": "\ud83d\udcd4", "notepad_spiral": "\ud83d\uddd2", @@ -1052,30 +988,22 @@ "office": "\ud83c\udfe2", "oil": "\ud83d\udee2", "ok": "\ud83c\udd97", - "ok_hand": "\ud83d\udc4c", - "ok_hand_tone1": "\ud83d\udc4c\ud83c\udffb", - "ok_hand_tone2": "\ud83d\udc4c\ud83c\udffc", - "ok_hand_tone3": "\ud83d\udc4c\ud83c\udffd", - "ok_hand_tone4": "\ud83d\udc4c\ud83c\udffe", - "ok_hand_tone5": "\ud83d\udc4c\ud83c\udfff", - "ok_woman": "\ud83d\ude46", - "ok_woman_tone1": "\ud83d\ude46\ud83c\udffb", - "ok_woman_tone2": "\ud83d\ude46\ud83c\udffc", - "ok_woman_tone3": "\ud83d\ude46\ud83c\udffd", - "ok_woman_tone4": "\ud83d\ude46\ud83c\udffe", - "ok_woman_tone5": "\ud83d\ude46\ud83c\udfff", - "older_man": "\ud83d\udc74", - "older_man_tone1": "\ud83d\udc74\ud83c\udffb", - "older_man_tone2": "\ud83d\udc74\ud83c\udffc", - "older_man_tone3": "\ud83d\udc74\ud83c\udffd", - "older_man_tone4": "\ud83d\udc74\ud83c\udffe", - "older_man_tone5": "\ud83d\udc74\ud83c\udfff", - "older_woman": "\ud83d\udc75", - "older_woman_tone1": "\ud83d\udc75\ud83c\udffb", - "older_woman_tone2": "\ud83d\udc75\ud83c\udffc", - "older_woman_tone3": "\ud83d\udc75\ud83c\udffd", - "older_woman_tone4": "\ud83d\udc75\ud83c\udffe", - "older_woman_tone5": "\ud83d\udc75\ud83c\udfff", + "ok_hand": { + "emoji": "\ud83d\udc4c", + "tones": true + }, + "ok_woman": { + "emoji": "\ud83d\ude46", + "tones": true + }, + "older_man": { + "emoji": "\ud83d\udc74", + "tones": true + }, + "older_woman": { + "emoji": "\ud83d\udc75", + "tones": true + }, "om_symbol": "\ud83d\udd49", "on": "\ud83d\udd1b", "oncoming_automobile": "\ud83d\ude98", @@ -1084,12 +1012,10 @@ "oncoming_taxi": "\ud83d\ude96", "one": "1\u20e3", "open_file_folder": "\ud83d\udcc2", - "open_hands": "\ud83d\udc50", - "open_hands_tone1": "\ud83d\udc50\ud83c\udffb", - "open_hands_tone2": "\ud83d\udc50\ud83c\udffc", - "open_hands_tone3": "\ud83d\udc50\ud83c\udffd", - "open_hands_tone4": "\ud83d\udc50\ud83c\udffe", - "open_hands_tone5": "\ud83d\udc50\ud83c\udfff", + "open_hands": { + "emoji": "\ud83d\udc50", + "tones": true + }, "open_mouth": "\ud83d\ude2e", "ophiuchus": "\u26ce", "orange_book": "\ud83d\udcd9", @@ -1122,24 +1048,18 @@ "pensive": "\ud83d\ude14", "performing_arts": "\ud83c\udfad", "persevere": "\ud83d\ude23", - "person_frowning": "\ud83d\ude4d", - "person_frowning_tone1": "\ud83d\ude4d\ud83c\udffb", - "person_frowning_tone2": "\ud83d\ude4d\ud83c\udffc", - "person_frowning_tone3": "\ud83d\ude4d\ud83c\udffd", - "person_frowning_tone4": "\ud83d\ude4d\ud83c\udffe", - "person_frowning_tone5": "\ud83d\ude4d\ud83c\udfff", - "person_with_blond_hair": "\ud83d\udc71", - "person_with_blond_hair_tone1": "\ud83d\udc71\ud83c\udffb", - "person_with_blond_hair_tone2": "\ud83d\udc71\ud83c\udffc", - "person_with_blond_hair_tone3": "\ud83d\udc71\ud83c\udffd", - "person_with_blond_hair_tone4": "\ud83d\udc71\ud83c\udffe", - "person_with_blond_hair_tone5": "\ud83d\udc71\ud83c\udfff", - "person_with_pouting_face": "\ud83d\ude4e", - "person_with_pouting_face_tone1": "\ud83d\ude4e\ud83c\udffb", - "person_with_pouting_face_tone2": "\ud83d\ude4e\ud83c\udffc", - "person_with_pouting_face_tone3": "\ud83d\ude4e\ud83c\udffd", - "person_with_pouting_face_tone4": "\ud83d\ude4e\ud83c\udffe", - "person_with_pouting_face_tone5": "\ud83d\ude4e\ud83c\udfff", + "person_frowning": { + "emoji": "\ud83d\ude4d", + "tones": true + }, + "person_with_blond_hair": { + "emoji": "\ud83d\udc71", + "tones": true + }, + "person_with_pouting_face": { + "emoji": "\ud83d\ude4e", + "tones": true + }, "pick": "\u26cf", "pig": "\ud83d\udc37", "pig2": "\ud83d\udc16", @@ -1151,36 +1071,26 @@ "pizza": "\ud83c\udf55", "place_of_worship": "\ud83d\uded0", "play_pause": "\u23ef", - "point_down": "\ud83d\udc47", - "point_down_tone1": "\ud83d\udc47\ud83c\udffb", - "point_down_tone2": "\ud83d\udc47\ud83c\udffc", - "point_down_tone3": "\ud83d\udc47\ud83c\udffd", - "point_down_tone4": "\ud83d\udc47\ud83c\udffe", - "point_down_tone5": "\ud83d\udc47\ud83c\udfff", - "point_left": "\ud83d\udc48", - "point_left_tone1": "\ud83d\udc48\ud83c\udffb", - "point_left_tone2": "\ud83d\udc48\ud83c\udffc", - "point_left_tone3": "\ud83d\udc48\ud83c\udffd", - "point_left_tone4": "\ud83d\udc48\ud83c\udffe", - "point_left_tone5": "\ud83d\udc48\ud83c\udfff", - "point_right": "\ud83d\udc49", - "point_right_tone1": "\ud83d\udc49\ud83c\udffb", - "point_right_tone2": "\ud83d\udc49\ud83c\udffc", - "point_right_tone3": "\ud83d\udc49\ud83c\udffd", - "point_right_tone4": "\ud83d\udc49\ud83c\udffe", - "point_right_tone5": "\ud83d\udc49\ud83c\udfff", - "point_up": "\u261d", - "point_up_2": "\ud83d\udc46", - "point_up_2_tone1": "\ud83d\udc46\ud83c\udffb", - "point_up_2_tone2": "\ud83d\udc46\ud83c\udffc", - "point_up_2_tone3": "\ud83d\udc46\ud83c\udffd", - "point_up_2_tone4": "\ud83d\udc46\ud83c\udffe", - "point_up_2_tone5": "\ud83d\udc46\ud83c\udfff", - "point_up_tone1": "\u261d\ud83c\udffb", - "point_up_tone2": "\u261d\ud83c\udffc", - "point_up_tone3": "\u261d\ud83c\udffd", - "point_up_tone4": "\u261d\ud83c\udffe", - "point_up_tone5": "\u261d\ud83c\udfff", + "point_down": { + "emoji": "\ud83d\udc47", + "tones": true + }, + "point_left": { + "emoji": "\ud83d\udc48", + "tones": true + }, + "point_right": { + "emoji": "\ud83d\udc49", + "tones": true + }, + "point_up": { + "emoji": "\u261d", + "tones": true + }, + "point_up_2": { + "emoji": "\ud83d\udc46", + "tones": true + }, "police_car": "\ud83d\ude93", "poodle": "\ud83d\udc29", "poop": "\ud83d\udca9", @@ -1193,27 +1103,21 @@ "poultry_leg": "\ud83c\udf57", "pound": "\ud83d\udcb7", "pouting_cat": "\ud83d\ude3e", - "pray": "\ud83d\ude4f", - "pray_tone1": "\ud83d\ude4f\ud83c\udffb", - "pray_tone2": "\ud83d\ude4f\ud83c\udffc", - "pray_tone3": "\ud83d\ude4f\ud83c\udffd", - "pray_tone4": "\ud83d\ude4f\ud83c\udffe", - "pray_tone5": "\ud83d\ude4f\ud83c\udfff", + "pray": { + "emoji": "\ud83d\ude4f", + "tones": true + }, "prayer_beads": "\ud83d\udcff", - "princess": "\ud83d\udc78", - "princess_tone1": "\ud83d\udc78\ud83c\udffb", - "princess_tone2": "\ud83d\udc78\ud83c\udffc", - "princess_tone3": "\ud83d\udc78\ud83c\udffd", - "princess_tone4": "\ud83d\udc78\ud83c\udffe", - "princess_tone5": "\ud83d\udc78\ud83c\udfff", + "princess": { + "emoji": "\ud83d\udc78", + "tones": true + }, "printer": "\ud83d\udda8", "projector": "\ud83d\udcfd", - "punch": "\ud83d\udc4a", - "punch_tone1": "\ud83d\udc4a\ud83c\udffb", - "punch_tone2": "\ud83d\udc4a\ud83c\udffc", - "punch_tone3": "\ud83d\udc4a\ud83c\udffd", - "punch_tone4": "\ud83d\udc4a\ud83c\udffe", - "punch_tone5": "\ud83d\udc4a\ud83c\udfff", + "punch": { + "emoji": "\ud83d\udc4a", + "tones": true + }, "purple_heart": "\ud83d\udc9c", "purse": "\ud83d\udc5b", "pushpin": "\ud83d\udccc", @@ -1230,24 +1134,18 @@ "railway_car": "\ud83d\ude83", "railway_track": "\ud83d\udee4", "rainbow": "\ud83c\udf08", - "raised_hand": "\u270b", - "raised_hand_tone1": "\u270b\ud83c\udffb", - "raised_hand_tone2": "\u270b\ud83c\udffc", - "raised_hand_tone3": "\u270b\ud83c\udffd", - "raised_hand_tone4": "\u270b\ud83c\udffe", - "raised_hand_tone5": "\u270b\ud83c\udfff", - "raised_hands": "\ud83d\ude4c", - "raised_hands_tone1": "\ud83d\ude4c\ud83c\udffb", - "raised_hands_tone2": "\ud83d\ude4c\ud83c\udffc", - "raised_hands_tone3": "\ud83d\ude4c\ud83c\udffd", - "raised_hands_tone4": "\ud83d\ude4c\ud83c\udffe", - "raised_hands_tone5": "\ud83d\ude4c\ud83c\udfff", - "raising_hand": "\ud83d\ude4b", - "raising_hand_tone1": "\ud83d\ude4b\ud83c\udffb", - "raising_hand_tone2": "\ud83d\ude4b\ud83c\udffc", - "raising_hand_tone3": "\ud83d\ude4b\ud83c\udffd", - "raising_hand_tone4": "\ud83d\ude4b\ud83c\udffe", - "raising_hand_tone5": "\ud83d\ude4b\ud83c\udfff", + "raised_hand": { + "emoji": "\u270b", + "tones": true + }, + "raised_hands": { + "emoji": "\ud83d\ude4c", + "tones": true + }, + "raising_hand": { + "emoji": "\ud83d\ude4b", + "tones": true + }, "ram": "\ud83d\udc0f", "ramen": "\ud83c\udf5c", "rat": "\ud83d\udc00", @@ -1279,31 +1177,25 @@ "rosette": "\ud83c\udff5", "rotating_light": "\ud83d\udea8", "round_pushpin": "\ud83d\udccd", - "rowboat": "\ud83d\udea3", - "rowboat_tone1": "\ud83d\udea3\ud83c\udffb", - "rowboat_tone2": "\ud83d\udea3\ud83c\udffc", - "rowboat_tone3": "\ud83d\udea3\ud83c\udffd", - "rowboat_tone4": "\ud83d\udea3\ud83c\udffe", - "rowboat_tone5": "\ud83d\udea3\ud83c\udfff", + "rowboat": { + "emoji": "\ud83d\udea3", + "tones": true + }, "rugby_football": "\ud83c\udfc9", - "runner": "\ud83c\udfc3", - "runner_tone1": "\ud83c\udfc3\ud83c\udffb", - "runner_tone2": "\ud83c\udfc3\ud83c\udffc", - "runner_tone3": "\ud83c\udfc3\ud83c\udffd", - "runner_tone4": "\ud83c\udfc3\ud83c\udffe", - "runner_tone5": "\ud83c\udfc3\ud83c\udfff", + "runner": { + "emoji": "\ud83c\udfc3", + "tones": true + }, "running_shirt_with_sash": "\ud83c\udfbd", "sa": "\ud83c\ude02", "sagittarius": "\u2650", "sailboat": "\u26f5", "sake": "\ud83c\udf76", "sandal": "\ud83d\udc61", - "santa": "\ud83c\udf85", - "santa_tone1": "\ud83c\udf85\ud83c\udffb", - "santa_tone2": "\ud83c\udf85\ud83c\udffc", - "santa_tone3": "\ud83c\udf85\ud83c\udffd", - "santa_tone4": "\ud83c\udf85\ud83c\udffe", - "santa_tone5": "\ud83c\udf85\ud83c\udfff", + "santa": { + "emoji": "\ud83c\udf85", + "tones": true + }, "satellite": "\ud83d\udce1", "satellite_orbital": "\ud83d\udef0", "saxophone": "\ud83c\udfb7", @@ -1381,12 +1273,10 @@ "speedboat": "\ud83d\udea4", "spider": "\ud83d\udd77", "spider_web": "\ud83d\udd78", - "spy": "\ud83d\udd75", - "spy_tone1": "\ud83d\udd75\ud83c\udffb", - "spy_tone2": "\ud83d\udd75\ud83c\udffc", - "spy_tone3": "\ud83d\udd75\ud83c\udffd", - "spy_tone4": "\ud83d\udd75\ud83c\udffe", - "spy_tone5": "\ud83d\udd75\ud83c\udfff", + "spy": { + "emoji": "\ud83d\udd75", + "tones": true + }, "stadium": "\ud83c\udfdf", "star": "\u2b50", "star2": "\ud83c\udf1f", @@ -1410,29 +1300,32 @@ "sunny": "\u2600", "sunrise": "\ud83c\udf05", "sunrise_over_mountains": "\ud83c\udf04", - "surfer": "\ud83c\udfc4", - "surfer_tone1": "\ud83c\udfc4\ud83c\udffb", - "surfer_tone2": "\ud83c\udfc4\ud83c\udffc", - "surfer_tone3": "\ud83c\udfc4\ud83c\udffd", - "surfer_tone4": "\ud83c\udfc4\ud83c\udffe", - "surfer_tone5": "\ud83c\udfc4\ud83c\udfff", + "surfer": { + "emoji": "\ud83c\udfc4", + "tones": true + }, "sushi": "\ud83c\udf63", "suspension_railway": "\ud83d\ude9f", "sweat": "\ud83d\ude13", "sweat_drops": "\ud83d\udca6", "sweat_smile": "\ud83d\ude05", "sweet_potato": "\ud83c\udf60", - "swimmer": "\ud83c\udfca", - "swimmer_tone1": "\ud83c\udfca\ud83c\udffb", - "swimmer_tone2": "\ud83c\udfca\ud83c\udffc", - "swimmer_tone3": "\ud83c\udfca\ud83c\udffd", - "swimmer_tone4": "\ud83c\udfca\ud83c\udffe", - "swimmer_tone5": "\ud83c\udfca\ud83c\udfff", + "swimmer": { + "emoji": "\ud83c\udfca", + "tones": true + }, "symbols": "\ud83d\udd23", "synagogue": "\ud83d\udd4d", "syringe": "\ud83d\udc89", "taco": "\ud83c\udf2e", - "tada": "\ud83c\udf89", + "tada": { + "emoji": "\ud83c\udf89", + "aliases": [ + "party", + "celebration", + "confetti" + ] + }, "tanabata_tree": "\ud83c\udf8b", "tangerine": "\ud83c\udf4a", "taurus": "\u2649", @@ -1449,18 +1342,16 @@ "thinking": "\ud83e\udd14", "thought_balloon": "\ud83d\udcad", "three": "3\u20e3", - "thumbsdown": "\ud83d\udc4e", - "thumbsdown_tone1": "\ud83d\udc4e\ud83c\udffb", - "thumbsdown_tone2": "\ud83d\udc4e\ud83c\udffc", - "thumbsdown_tone3": "\ud83d\udc4e\ud83c\udffd", - "thumbsdown_tone4": "\ud83d\udc4e\ud83c\udffe", - "thumbsdown_tone5": "\ud83d\udc4e\ud83c\udfff", - "thumbsup": "\ud83d\udc4d", - "thumbsup_tone1": "\ud83d\udc4d\ud83c\udffb", - "thumbsup_tone2": "\ud83d\udc4d\ud83c\udffc", - "thumbsup_tone3": "\ud83d\udc4d\ud83c\udffd", - "thumbsup_tone4": "\ud83d\udc4d\ud83c\udffe", - "thumbsup_tone5": "\ud83d\udc4d\ud83c\udfff", + "thumbsdown": { + "emoji": "\ud83d\udc4e", + "tones": true, + "order": "thumbsB" + }, + "thumbsup": { + "emoji": "\ud83d\udc4d", + "tones": true, + "order": "thumbsA" + }, "thunder_cloud_rain": "\u26c8", "ticket": "\ud83c\udfab", "tickets": "\ud83c\udf9f", @@ -1528,12 +1419,10 @@ "up": "\ud83c\udd99", "upside_down": "\ud83d\ude43", "urn": "\u26b1", - "v": "\u270c", - "v_tone1": "\u270c\ud83c\udffb", - "v_tone2": "\u270c\ud83c\udffc", - "v_tone3": "\u270c\ud83c\udffd", - "v_tone4": "\u270c\ud83c\udffe", - "v_tone5": "\u270c\ud83c\udfff", + "v": { + "emoji": "\u270c", + "tones": true + }, "vertical_traffic_light": "\ud83d\udea6", "vhs": "\ud83d\udcfc", "vibration_mode": "\ud83d\udcf3", @@ -1544,18 +1433,14 @@ "volcano": "\ud83c\udf0b", "volleyball": "\ud83c\udfd0", "vs": "\ud83c\udd9a", - "vulcan": "\ud83d\udd96", - "vulcan_tone1": "\ud83d\udd96\ud83c\udffb", - "vulcan_tone2": "\ud83d\udd96\ud83c\udffc", - "vulcan_tone3": "\ud83d\udd96\ud83c\udffd", - "vulcan_tone4": "\ud83d\udd96\ud83c\udffe", - "vulcan_tone5": "\ud83d\udd96\ud83c\udfff", - "walking": "\ud83d\udeb6", - "walking_tone1": "\ud83d\udeb6\ud83c\udffb", - "walking_tone2": "\ud83d\udeb6\ud83c\udffc", - "walking_tone3": "\ud83d\udeb6\ud83c\udffd", - "walking_tone4": "\ud83d\udeb6\ud83c\udffe", - "walking_tone5": "\ud83d\udeb6\ud83c\udfff", + "vulcan": { + "emoji": "\ud83d\udd96", + "tones": true + }, + "walking": { + "emoji": "\ud83d\udeb6", + "tones": true + }, "waning_crescent_moon": "\ud83c\udf18", "waning_gibbous_moon": "\ud83c\udf16", "warning": "\u26a0", @@ -1563,12 +1448,10 @@ "watch": "\u231a", "water_buffalo": "\ud83d\udc03", "watermelon": "\ud83c\udf49", - "wave": "\ud83d\udc4b", - "wave_tone1": "\ud83d\udc4b\ud83c\udffb", - "wave_tone2": "\ud83d\udc4b\ud83c\udffc", - "wave_tone3": "\ud83d\udc4b\ud83c\udffd", - "wave_tone4": "\ud83d\udc4b\ud83c\udffe", - "wave_tone5": "\ud83d\udc4b\ud83c\udfff", + "wave": { + "emoji": "\ud83d\udc4b", + "tones": true + }, "wavy_dash": "\u3030", "waxing_crescent_moon": "\ud83c\udf12", "waxing_gibbous_moon": "\ud83c\udf14", @@ -1595,23 +1478,19 @@ "wine_glass": "\ud83c\udf77", "wink": "\ud83d\ude09", "wolf": "\ud83d\udc3a", - "woman": "\ud83d\udc69", - "woman_tone1": "\ud83d\udc69\ud83c\udffb", - "woman_tone2": "\ud83d\udc69\ud83c\udffc", - "woman_tone3": "\ud83d\udc69\ud83c\udffd", - "woman_tone4": "\ud83d\udc69\ud83c\udffe", - "woman_tone5": "\ud83d\udc69\ud83c\udfff", + "woman": { + "emoji": "\ud83d\udc69", + "tones": true + }, "womans_clothes": "\ud83d\udc5a", "womans_hat": "\ud83d\udc52", "womens": "\ud83d\udeba", "worried": "\ud83d\ude1f", "wrench": "\ud83d\udd27", - "writing_hand": "\u270d", - "writing_hand_tone1": "\u270d\ud83c\udffb", - "writing_hand_tone2": "\u270d\ud83c\udffc", - "writing_hand_tone3": "\u270d\ud83c\udffd", - "writing_hand_tone4": "\u270d\ud83c\udffe", - "writing_hand_tone5": "\u270d\ud83c\udfff", + "writing_hand": { + "emoji": "\u270d", + "tones": true + }, "x": "\u274c", "yellow_heart": "\ud83d\udc9b", "yen": "\ud83d\udcb4", @@ -1622,9 +1501,5 @@ "zipper_mouth": "\ud83e\udd10", "zzz": "\ud83d\udca4", "100": "\ud83d\udcaf", - "1234": "\ud83d\udd22", - - "party": "\ud83c\udf89", - "celebration": "\ud83c\udf89", - "confetti": "\ud83c\udf89" + "1234": "\ud83d\udd22" } diff --git a/scripts/celerity/generate_emoji.php b/scripts/celerity/generate_emoji.php deleted file mode 100755 --- a/scripts/celerity/generate_emoji.php +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env php -setTagline(pht('regenerate Emoji data sheets')); -$args->setSynopsis(<<parseStandardArguments(); -$args->parse( - array( - array( - 'name' => 'force', - 'help' => pht('Force regeneration even if sources have not changed.'), - ), - )); - -$root = dirname(phutil_get_library_root('phabricator')); -// move this to an argument? -$path = $root.'/emoji_strategy.json'; -$export_path = $root.'/resources/emoji/manifest.json'; - -if (Filesystem::pathExists($path)) { - $json = Filesystem::readFile($path); - - $emojis = phutil_json_decode($json); - $data = array(); - foreach ($emojis as $shortname => $emoji) { - $unicode = $emoji['unicode']; - $codes = explode('-', $unicode); - $hex = ''; - foreach ($codes as $code) { - $hex .= phutil_utf8_encode_codepoint(hexdec($code)); - } - $data[$shortname] = $hex; - } - - ksort($data); - $json = new PhutilJSON(); - $data = $json->encodeFormatted($data); - Filesystem::writeFile($export_path, $data); - echo pht('Done.')."\n"; -} else { - echo pht('Path %s not exist.', $path)."\n"; -} diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -4104,6 +4104,7 @@ 'PhabricatorShowFiletreeSetting' => 'applications/settings/setting/PhabricatorShowFiletreeSetting.php', 'PhabricatorSimpleEditType' => 'applications/transactions/edittype/PhabricatorSimpleEditType.php', 'PhabricatorSite' => 'aphront/site/PhabricatorSite.php', + 'PhabricatorSkinToneSetting' => 'applications/settings/setting/PhabricatorSkinToneSetting.php', 'PhabricatorSlackAuthProvider' => 'applications/auth/provider/PhabricatorSlackAuthProvider.php', 'PhabricatorSlowvoteApplication' => 'applications/slowvote/application/PhabricatorSlowvoteApplication.php', 'PhabricatorSlowvoteChoice' => 'applications/slowvote/storage/PhabricatorSlowvoteChoice.php', @@ -9803,6 +9804,7 @@ 'PhabricatorShowFiletreeSetting' => 'PhabricatorSelectSetting', 'PhabricatorSimpleEditType' => 'PhabricatorEditType', 'PhabricatorSite' => 'AphrontSite', + 'PhabricatorSkinToneSetting' => 'PhabricatorSelectSetting', 'PhabricatorSlackAuthProvider' => 'PhabricatorOAuth2AuthProvider', 'PhabricatorSlowvoteApplication' => 'PhabricatorApplication', 'PhabricatorSlowvoteChoice' => 'PhabricatorSlowvoteDAO', diff --git a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php --- a/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php +++ b/src/applications/macro/markup/PhabricatorEmojiRemarkupRule.php @@ -13,11 +13,22 @@ $text); } - public function markupEmojiJSON() { + public function getEmojiManifest() { $root = dirname(phutil_get_library_root('phabricator')); - $json = Filesystem::readFile( - $root.'/resources/emoji/manifest.json'); - return $json; + $json = Filesystem::readFile($root.'/resources/emoji/manifest.json'); + $manifest = phutil_json_decode($json); + + foreach ($manifest as $key => $emoji) { + if (is_array($emoji)) { + continue; + } + + $manifest[$key] = array( + 'emoji' => $emoji, + ); + } + + return $manifest; } public function markupEmoji(array $matches) { diff --git a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php --- a/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php +++ b/src/applications/macro/typeahead/PhabricatorEmojiDatasource.php @@ -26,20 +26,94 @@ private function buildResults() { $raw_query = $this->getRawQuery(); - $data = id(new PhabricatorEmojiRemarkupRule())->markupEmojiJSON(); - $emojis = phutil_json_decode($data); + $manifest = id(new PhabricatorEmojiRemarkupRule()) + ->getEmojiManifest(); + + $aliases = array(); + foreach ($manifest as $key => $spec) { + $aliases[$key] = $key; + foreach (idx($spec, 'aliases', array()) as $alias) { + $aliases[$alias] = $key; + } + } + + $viewer = $this->getViewer(); + $setting = $viewer->getUserSetting(PhabricatorSkinToneSetting::SETTINGKEY); + switch ($setting) { + case PhabricatorSkinToneSetting::TONE_NONE: + $tone_modifier = ''; + $tones = array($tone_modifier); + break; + case PhabricatorSkinToneSetting::TONE_1: + $tone_modifier = "\xF0\x9F\x8F\xBB"; + $tones = array($tone_modifier); + break; + case PhabricatorSkinToneSetting::TONE_2: + $tone_modifier = "\xF0\x9F\x8F\xBC"; + $tones = array($tone_modifier); + break; + case PhabricatorSkinToneSetting::TONE_3: + $tone_modifier = "\xF0\x9F\x8F\xBD"; + $tones = array($tone_modifier); + break; + case PhabricatorSkinToneSetting::TONE_4: + $tone_modifier = "\xF0\x9F\x8F\xBE"; + $tones = array($tone_modifier); + break; + case PhabricatorSkinToneSetting::TONE_5: + $tone_modifier = "\xF0\x9F\x8F\xBF"; + $tones = array($tone_modifier); + break; + default: + // By default, select a random human skin tone. + $tone_modifier = ''; + $tones = array( + "\xF0\x9F\x8F\xBB", + "\xF0\x9F\x8F\xBC", + "\xF0\x9F\x8F\xBD", + "\xF0\x9F\x8F\xBE", + "\xF0\x9F\x8F\xBF", + ); + break; + } $results = array(); - foreach ($emojis as $shortname => $emoji) { - $display_name = $emoji.' '.$shortname; - $name = str_replace('_', ' ', $shortname); + foreach ($aliases as $alias => $key) { + $spec = $manifest[$key]; + $emoji = $spec['emoji']; + + if (!empty($spec['name'])) { + $readable_name = $spec['name']; + } else { + $readable_name = $alias; + } + + if (!empty($spec['tones'])) { + $autocomplete = array(); + foreach ($tones as $suffix) { + $autocomplete[] = $emoji.$suffix; + } + $autocomplete = implode(' ', $autocomplete); + $display_emoji = $emoji.$tone_modifier; + } else { + $autocomplete = $emoji; + $display_emoji = $emoji; + } + + $display_name = $display_emoji.' '.$readable_name; + $name = str_replace('_', ' ', $alias); + + if (!empty($spec['order'])) { + $name = $spec['order'].' '.$name; + } + $result = id(new PhabricatorTypeaheadResult()) - ->setPHID($shortname) + ->setPHID($alias) ->setName($name) - ->setDisplayname($display_name) - ->setAutocomplete($emoji); + ->setDisplayName($display_name) + ->setAutocomplete($autocomplete); - $results[$shortname] = $result; + $results[$alias] = $result; } return $results; } diff --git a/src/applications/settings/setting/PhabricatorSelectSetting.php b/src/applications/settings/setting/PhabricatorSelectSetting.php --- a/src/applications/settings/setting/PhabricatorSelectSetting.php +++ b/src/applications/settings/setting/PhabricatorSelectSetting.php @@ -10,17 +10,18 @@ $default_value = $object->getDefaultValue($setting_key); $options = $this->getSelectOptions(); - - if (isset($options[$default_value])) { - $default_label = pht('Default (%s)', $options[$default_value]); - } else { - $default_label = pht('Default (Unknown, "%s")', $default_value); - } - - if (empty($options[''])) { - $options = array( - '' => $default_label, - ) + $options; + if ($this->canSetServerDefault()) { + if (isset($options[$default_value])) { + $default_label = pht('Default (%s)', $options[$default_value]); + } else { + $default_label = pht('Default (Unknown, "%s")', $default_value); + } + + if (empty($options[''])) { + $options = array( + '' => $default_label, + ) + $options; + } } return $this->newEditField($object, new PhabricatorSelectEditField()) @@ -73,4 +74,8 @@ return (string)$value; } + protected function canSetServerDefault() { + return true; + } + } diff --git a/src/applications/settings/setting/PhabricatorSkinToneSetting.php b/src/applications/settings/setting/PhabricatorSkinToneSetting.php new file mode 100644 --- /dev/null +++ b/src/applications/settings/setting/PhabricatorSkinToneSetting.php @@ -0,0 +1,57 @@ + pht('Random Skin Tone'), + self::TONE_NONE => pht("\xF0\x9F\x91\x8D Unspecified Skin Tone"), + self::TONE_1 => + pht("\xF0\x9F\x91\x8D\xF0\x9F\x8F\xBB Light Skin Tone"), + self::TONE_2 => + pht("\xF0\x9F\x91\x8D\xF0\x9F\x8F\xBC Medium-Light Skin Tone"), + self::TONE_3 => + pht("\xF0\x9F\x91\x8D\xF0\x9F\x8F\xBD Medium Skin Tone"), + self::TONE_4 => + pht("\xF0\x9F\x91\x8D\xF0\x9F\x8F\xBE Medium-Dark Skin Tone"), + self::TONE_5 => + pht("\xF0\x9F\x91\x8D\xF0\x9F\x8F\xBF Dark Skin Tone"), + ); + } + + protected function canSetServerDefault() { + return false; + } + +} diff --git a/src/applications/uiexample/examples/MacroEmojiExample.php b/src/applications/uiexample/examples/MacroEmojiExample.php --- a/src/applications/uiexample/examples/MacroEmojiExample.php +++ b/src/applications/uiexample/examples/MacroEmojiExample.php @@ -16,15 +16,12 @@ public function renderExample() { - $raw = id(new PhabricatorEmojiRemarkupRule()) - ->markupEmojiJSON(); - - $json = phutil_json_decode($raw); + $manifest = id(new PhabricatorEmojiRemarkupRule()) + ->getEmojiManifest(); $content = array(); - foreach ($json as $shortname => $hex) { - - $display_name = ' '.$hex.' '.$shortname; + foreach ($manifest as $shortname => $spec) { + $display_name = ' '.$spec['emoji'].' '.$shortname; $content[] = phutil_tag( 'div', @@ -33,7 +30,6 @@ 'style' => 'width: 240px; height: 24px; float: left;', ), $display_name); - } $wrap = id(new PHUIObjectBoxView()) diff --git a/src/view/form/control/PhabricatorRemarkupControl.php b/src/view/form/control/PhabricatorRemarkupControl.php --- a/src/view/form/control/PhabricatorRemarkupControl.php +++ b/src/view/form/control/PhabricatorRemarkupControl.php @@ -108,6 +108,7 @@ 'headerIcon' => 'fa-smile-o', 'headerText' => pht('Find Emoji:'), 'hintText' => $emoji_datasource->getPlaceholderText(), + 'emoji' => true, // Cancel on emoticons like ":3". 'ignore' => array( diff --git a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js --- a/webroot/rsrc/js/phuix/PHUIXAutocomplete.js +++ b/webroot/rsrc/js/phuix/PHUIXAutocomplete.js @@ -635,6 +635,12 @@ return false; } + // If this is an emoji with variants, pick a random variant. + if (this._getSpec().emoji) { + var variants = ref.split(' '); + ref = variants[Math.floor(Math.random() * variants.length)]; + } + // If the user types a string like "@username:" (with a trailing colon), // then presses tab or return to pick the completion, don't destroy the // trailing character.