diff --git a/frontend/components/Editor/Editor.js b/frontend/components/Editor/Editor.js
index 922dc5f0..4c41118d 100644
--- a/frontend/components/Editor/Editor.js
+++ b/frontend/components/Editor/Editor.js
@@ -22,7 +22,7 @@ type Props = {
onCancel: Function,
onImageUploadStart: Function,
onImageUploadStop: Function,
- emoji: string,
+ emoji?: string,
readOnly: boolean,
};
diff --git a/frontend/scenes/Flatpage/Flatpage.js b/frontend/scenes/Flatpage/Flatpage.js
index b2353808..c1431055 100644
--- a/frontend/scenes/Flatpage/Flatpage.js
+++ b/frontend/scenes/Flatpage/Flatpage.js
@@ -2,30 +2,32 @@
import React from 'react';
import { observer } from 'mobx-react';
import CenteredContent from 'components/CenteredContent';
-import HtmlContent from 'components/HtmlContent';
+import Editor from 'components/Editor';
import PageTitle from 'components/PageTitle';
-import { convertToMarkdown } from 'utils/markdown';
-
type Props = {
title: string,
content: string,
};
-@observer class Flatpage extends React.Component {
- props: Props;
+const Flatpage = observer((props: Props) => {
+ const { title, content } = props;
- render() {
- const { title, content } = this.props;
- const htmlContent = convertToMarkdown(content);
-
- return (
-
-
-
-
- );
- }
-}
+ return (
+
+
+ {}}
+ onSave={() => {}}
+ onCancel={() => {}}
+ onImageUploadStart={() => {}}
+ onImageUploadStop={() => {}}
+ emoji=""
+ readOnly
+ />
+
+ );
+});
export default Flatpage;
diff --git a/frontend/utils/emoji-mapping.json b/frontend/utils/emoji-mapping.json
deleted file mode 100644
index b965bfac..00000000
--- a/frontend/utils/emoji-mapping.json
+++ /dev/null
@@ -1 +0,0 @@
-{"100":"๐ฏ","1234":"๐ข","grinning":"๐","grimacing":"๐ฌ","grin":"๐","joy":"๐","smiley":"๐","smile":"๐","sweat_smile":"๐
","laughing":"๐","innocent":"๐","wink":"๐","blush":"๐","slightly_smiling":"๐","upside_down":"๐","relaxed":"โบ๏ธ","yum":"๐","relieved":"๐","heart_eyes":"๐","kissing_heart":"๐","kissing":"๐","kissing_smiling_eyes":"๐","kissing_closed_eyes":"๐","stuck_out_tongue_winking_eye":"๐","stuck_out_tongue_closed_eyes":"๐","stuck_out_tongue":"๐","money_mouth":"๐ค","nerd":"๐ค","sunglasses":"๐","hugging":"๐ค","smirk":"๐","no_mouth":"๐ถ","neutral_face":"๐","expressionless":"๐","unamused":"๐","rolling_eyes":"๐","thinking":"๐ค","flushed":"๐ณ","disappointed":"๐","worried":"๐","angry":"๐ ","rage":"๐ก","pensive":"๐","confused":"๐","slightly_sad":"๐","white_frowning":"โน","persevere":"๐ฃ","confounded":"๐","tired_face":"๐ซ","weary":"๐ฉ","triumph":"๐ค","open_mouth":"๐ฎ","scream":"๐ฑ","fearful":"๐จ","cold_sweat":"๐ฐ","hushed":"๐ฏ","frowning":"๐ฆ","anguished":"๐ง","cry":"๐ข","disappointed_relieved":"๐ฅ","sleepy":"๐ช","sweat":"๐","sob":"๐ญ","dizzy_face":"๐ต","astonished":"๐ฒ","zipper_mouth":"๐ค","mask":"๐ท","thermometer_face":"๐ค","bandage_face":"๐ค","sleeping":"๐ด","zzz":"๐ค","hankey":"๐ฉ","smiling_imp":"๐","imp":"๐ฟ","japanese_ogre":"๐น","japanese_goblin":"๐บ","skull":"๐","ghost":"๐ป","alien":"๐ฝ","robot":"๐ค","smiley_cat":"๐บ","smile_cat":"๐ธ","joy_cat":"๐น","heart_eyes_cat":"๐ป","smirk_cat":"๐ผ","kissing_cat":"๐ฝ","scream_cat":"๐","crying_cat_face":"๐ฟ","pouting_cat":"๐พ","raised_hands":"๐","clap":"๐","wave":"๐","+1":"๐","-1":"๐","facepunch":"๐","fist":"โ","v":"โ๏ธ","ok_hand":"๐","hand":"โ","open_hands":"๐","muscle":"๐ช","pray":"๐","point_up":"โ๏ธ","point_up_2":"๐","point_down":"๐","point_left":"๐","point_right":"๐","middle_finger":"๐","splayed_fingers":"๐","sign_of_horns":"๐ค","vulcan_salute":"๐","writing_hand":"โ","nail_care":"๐
","lips":"๐","tongue":"๐
","ear":"๐","nose":"๐","eye":"๐","eyes":"๐","bust_in_silhouette":"๐ค","busts_in_silhouette":"๐ฅ","speaking_head":"๐ฃ","baby":"๐ถ","boy":"๐ฆ","girl":"๐ง","man":"๐จ","woman":"๐ฉ","person_with_blond_hair":"๐ฑ","older_man":"๐ด","older_woman":"๐ต","man_with_gua_pi_mao":"๐ฒ","man_with_turban":"๐ณ","cop":"๐ฎ","construction_worker":"๐ท","guardsman":"๐","sleuth":"๐ต","santa":"๐
","angel":"๐ผ","princess":"๐ธ","bride_with_veil":"๐ฐ","runner":"๐","walking":"๐ถ","dancer":"๐","dancers":"๐ฏ","couple":"๐ซ","two_men_holding_hands":"๐ฌ","two_women_holding_hands":"๐ญ","bow":"๐","information_desk_person":"๐","no_good":"๐
","ok_woman":"๐","raising_hand":"๐","person_with_pouting_face":"๐","person_frowning":"๐","haircut":"๐","massage":"๐","couple_with_heart":"๐","female_couple_with_heart":"๐ฉโโค๏ธโ๐ฉ","male_couple_with_heart":"๐จโโค๏ธโ๐จ","couplekiss":"๐","female_couplekiss":"๐ฉโโค๏ธโ๐โ๐ฉ","male_couplekiss":"๐จโโค๏ธโ๐โ๐จ","family":"๐ช","family_man_woman_girl":"๐จโ๐ฉโ๐ง","family_man_woman_girl_boy":"๐จโ๐ฉโ๐งโ๐ฆ","family_man_woman_boys":"๐จโ๐ฉโ๐ฆโ๐ฆ","family_man_woman_girls":"๐จโ๐ฉโ๐งโ๐ง","family_women_boy":"๐ฉโ๐ฉโ๐ฆ","family_women_girl":"๐ฉโ๐ฉโ๐ง","family_women_girl_boy":"๐ฉโ๐ฉโ๐งโ๐ฆ","family_women_boys":"๐ฉโ๐ฉโ๐ฆโ๐ฆ","family_women_girls":"๐ฉโ๐ฉโ๐งโ๐ง","family_men_boy":"๐จโ๐จโ๐ฆ","family_men_girl":"๐จโ๐จโ๐ง","family_men_girl_boy":"๐จโ๐จโ๐งโ๐ฆ","family_men_boys":"๐จโ๐จโ๐ฆโ๐ฆ","family_men_girls":"๐จโ๐จโ๐งโ๐ง","womans_clothes":"๐","shirt":"๐","jeans":"๐","necktie":"๐","dress":"๐","bikini":"๐","kimono":"๐","lipstick":"๐","kiss":"๐","footprints":"๐ฃ","high_heel":"๐ ","sandal":"๐ก","boot":"๐ข","mans_shoe":"๐","athletic_shoe":"๐","womans_hat":"๐","tophat":"๐ฉ","helmet":"โ","mortar_board":"๐","crown":"๐","school_satchel":"๐","pouch":"๐","purse":"๐","handbag":"๐","briefcase":"๐ผ","eyeglasses":"๐","dark_sunglasses":"๐ถ","ring":"๐","closed_umbrella":"๐","dog":"๐ถ","cat":"๐ฑ","mouse":"๐ญ","hamster":"๐น","rabbit":"๐ฐ","bear":"๐ป","panda_face":"๐ผ","koala":"๐จ","tiger":"๐ฏ","lion_face":"๐ฆ","cow":"๐ฎ","pig":"๐ท","pig_nose":"๐ฝ","frog":"๐ธ","octopus":"๐","monkey_face":"๐ต","see_no_evil":"๐","hear_no_evil":"๐","speak_no_evil":"๐","monkey":"๐","chicken":"๐","penguin":"๐ง","bird":"๐ฆ","baby_chick":"๐ค","hatching_chick":"๐ฃ","hatched_chick":"๐ฅ","wolf":"๐บ","boar":"๐","horse":"๐ด","unicorn_face":"๐ฆ","bee":"๐","bug":"๐","snail":"๐","beetle":"๐","ant":"๐","spider":"๐ท","scorpion":"๐ฆ","crab":"๐ฆ","snake":"๐","turtle":"๐ข","tropical_fish":"๐ ","fish":"๐","blowfish":"๐ก","dolphin":"๐ฌ","whale":"๐ณ","whale2":"๐","crocodile":"๐","leopard":"๐","tiger2":"๐
","water_buffalo":"๐","ox":"๐","cow2":"๐","dromedary_camel":"๐ช","camel":"๐ซ","elephant":"๐","goat":"๐","ram":"๐","sheep":"๐","racehorse":"๐","pig2":"๐","rat":"๐","mouse2":"๐","rooster":"๐","turkey":"๐ฆ","dove_of_peace":"๐","dog2":"๐","poodle":"๐ฉ","cat2":"๐","rabbit2":"๐","chipmunk":"๐ฟ","feet":"๐พ","dragon":"๐","dragon_face":"๐ฒ","cactus":"๐ต","christmas_tree":"๐","evergreen_tree":"๐ฒ","deciduous_tree":"๐ณ","palm_tree":"๐ด","seedling":"๐ฑ","herb":"๐ฟ","shamrock":"โ","four_leaf_clover":"๐","bamboo":"๐","tanabata_tree":"๐","leaves":"๐","fallen_leaf":"๐","maple_leaf":"๐","ear_of_rice":"๐พ","hibiscus":"๐บ","sunflower":"๐ป","rose":"๐น","tulip":"๐ท","blossom":"๐ผ","cherry_blossom":"๐ธ","bouquet":"๐","mushroom":"๐","chestnut":"๐ฐ","jack_o_lantern":"๐","shell":"๐","spider_web":"๐ธ","earth_americas":"๐","earth_africa":"๐","earth_asia":"๐","full_moon":"๐","waning_gibbous_moon":"๐","last_quarter_moon":"๐","waning_crescent_moon":"๐","new_moon":"๐","waxing_crescent_moon":"๐","first_quarter_moon":"๐","moon":"๐","new_moon_with_face":"๐","full_moon_with_face":"๐","first_quarter_moon_with_face":"๐","last_quarter_moon_with_face":"๐","sun_with_face":"๐","crescent_moon":"๐","star":"โญ","star2":"๐","dizzy":"๐ซ","sparkles":"โจ","comet":"โ","sunny":"โ๏ธ","white_sun_with_small_cloud":"๐ค","partly_sunny":"โ
","white_sun_behind_cloud":"๐ฅ","white_sun_behind_cloud_with_rain":"๐ฆ","cloud":"โ๏ธ","cloud_with_rain":"๐ง","thunder_cloud_and_rain":"โ","cloud_with_lightning":"๐ฉ","zap":"โก","fire":"๐ฅ","boom":"๐ฅ","snowflake":"โ๏ธ","cloud_with_snow":"๐จ","snowman":"โ","snowman_with_snow":"โ","wind_blowing_face":"๐ฌ","dash":"๐จ","cloud_with_tornado":"๐ช","fog":"๐ซ","umbrella_without_rain":"โ","umbrella":"โ","droplet":"๐ง","sweat_drops":"๐ฆ","ocean":"๐","green_apple":"๐","apple":"๐","pear":"๐","tangerine":"๐","lemon":"๐","banana":"๐","watermelon":"๐","grapes":"๐","strawberry":"๐","melon":"๐","cherries":"๐","peach":"๐","pineapple":"๐","tomato":"๐
","eggplant":"๐","hot_pepper":"๐ถ","corn":"๐ฝ","sweet_potato":"๐ ","honey_pot":"๐ฏ","bread":"๐","cheese_wedge":"๐ง","poultry_leg":"๐","meat_on_bone":"๐","fried_shrimp":"๐ค","egg":"๐ณ","hamburger":"๐","fries":"๐","hot_dog":"๐ญ","pizza":"๐","spaghetti":"๐","taco":"๐ฎ","burrito":"๐ฏ","ramen":"๐","stew":"๐ฒ","fish_cake":"๐ฅ","sushi":"๐ฃ","bento":"๐ฑ","curry":"๐","rice_ball":"๐","rice":"๐","rice_cracker":"๐","oden":"๐ข","dango":"๐ก","shaved_ice":"๐ง","ice_cream":"๐จ","icecream":"๐ฆ","cake":"๐ฐ","birthday":"๐","custard":"๐ฎ","candy":"๐ฌ","lollipop":"๐ญ","chocolate_bar":"๐ซ","popcorn":"๐ฟ","doughnut":"๐ฉ","cookie":"๐ช","beer":"๐บ","beers":"๐ป","wine_glass":"๐ท","cocktail":"๐ธ","tropical_drink":"๐น","bottle":"๐พ","sake":"๐ถ","tea":"๐ต","coffee":"โ","baby_bottle":"๐ผ","fork_and_knife":"๐ด","fork_and_knife_with_plate":"๐ฝ","soccer":"โฝ","basketball":"๐","football":"๐","baseball":"โพ","tennis":"๐พ","volleyball":"๐","rugby_football":"๐","8ball":"๐ฑ","golf":"โณ","golfer":"๐","table_tennis":"๐","badminton":"๐ธ","ice_hockey":"๐","field_hockey":"๐","cricket":"๐","ski":"๐ฟ","skier":"โท","snowboarder":"๐","ice_skate":"โธ","bow_and_arrow":"๐น","fishing_pole_and_fish":"๐ฃ","rowboat":"๐ฃ","swimmer":"๐","surfer":"๐","bath":"๐","person_with_ball":"โน","weight_lifter":"๐","bicyclist":"๐ด","mountain_bicyclist":"๐ต","horse_racing":"๐","man_levitating":"๐ด","trophy":"๐","running_shirt_with_sash":"๐ฝ","sports_medal":"๐
","military_medal":"๐","reminder_ribbon":"๐","rosette":"๐ต","ticket":"๐ซ","admission_ticket":"๐","performing_arts":"๐ญ","art":"๐จ","circus_tent":"๐ช","microphone":"๐ค","headphones":"๐ง","musical_score":"๐ผ","musical_keyboard":"๐น","saxophone":"๐ท","trumpet":"๐บ","guitar":"๐ธ","violin":"๐ป","clapper":"๐ฌ","video_game":"๐ฎ","space_invader":"๐พ","dart":"๐ฏ","game_die":"๐ฒ","slot_machine":"๐ฐ","bowling":"๐ณ","car":"๐","taxi":"๐","blue_car":"๐","bus":"๐","trolleybus":"๐","racing_car":"๐","police_car":"๐","ambulance":"๐","fire_engine":"๐","minibus":"๐","truck":"๐","articulated_lorry":"๐","tractor":"๐","racing_motorcycle":"๐","bike":"๐ฒ","rotating_light":"๐จ","oncoming_police_car":"๐","oncoming_bus":"๐","oncoming_automobile":"๐","oncoming_taxi":"๐","aerial_tramway":"๐ก","mountain_cableway":"๐ ","suspension_railway":"๐","railway_car":"๐","train":"๐","monorail":"๐","bullettrain_side":"๐","bullettrain_front":"๐
","light_rail":"๐","mountain_railway":"๐","steam_locomotive":"๐","train2":"๐","metro":"๐","tram":"๐","station":"๐","helicopter":"๐","small_airplane":"๐ฉ","airplane":"โ๏ธ","airplane_departure":"๐ซ","airplane_arrival":"๐ฌ","boat":"โต","motor_boat":"๐ฅ","speedboat":"๐ค","ferry":"โด","passenger_ship":"๐ณ","rocket":"๐","artificial_satellite":"๐ฐ","seat":"๐บ","anchor":"โ","construction":"๐ง","fuelpump":"โฝ","busstop":"๐","vertical_traffic_light":"๐ฆ","traffic_light":"๐ฅ","checkered_flag":"๐","ship":"๐ข","ferris_wheel":"๐ก","roller_coaster":"๐ข","carousel_horse":"๐ ","building_construction":"๐","foggy":"๐","tokyo_tower":"๐ผ","factory":"๐ญ","fountain":"โฒ","rice_scene":"๐","mountain":"โฐ","snow_capped_mountain":"๐","mount_fuji":"๐ป","volcano":"๐","japan":"๐พ","camping":"๐","tent":"โบ","national_park":"๐","motorway":"๐ฃ","railway_track":"๐ค","sunrise":"๐
","sunrise_over_mountains":"๐","desert":"๐","beach_with_umbrella":"๐","desert_island":"๐","city_sunrise":"๐","city_sunset":"๐","cityscape":"๐","night_with_stars":"๐","bridge_at_night":"๐","milky_way":"๐","stars":"๐ ","sparkler":"๐","fireworks":"๐","rainbow":"๐","buildings":"๐","european_castle":"๐ฐ","japanese_castle":"๐ฏ","stadium":"๐","statue_of_liberty":"๐ฝ","house":"๐ ","house_with_garden":"๐ก","derelict_house":"๐","office":"๐ข","department_store":"๐ฌ","post_office":"๐ฃ","european_post_office":"๐ค","hospital":"๐ฅ","bank":"๐ฆ","hotel":"๐จ","convenience_store":"๐ช","school":"๐ซ","love_hotel":"๐ฉ","wedding":"๐","museum":"๐","church":"โช","mosque":"๐","synagogue":"๐","kaaba":"๐","shinto_shrine":"โฉ","watch":"โ","iphone":"๐ฑ","calling":"๐ฒ","computer":"๐ป","keyboard":"โจ","desktop_computer":"๐ฅ","printer":"๐จ","three_button_mouse":"๐ฑ","trackball":"๐ฒ","joystick":"๐น","compression":"๐","minidisc":"๐ฝ","floppy_disk":"๐พ","cd":"๐ฟ","dvd":"๐","vhs":"๐ผ","camera":"๐ท","camera_with_flash":"๐ธ","video_camera":"๐น","movie_camera":"๐ฅ","film_projector":"๐ฝ","film_frames":"๐","telephone_receiver":"๐","phone":"โ๏ธ","pager":"๐","fax":"๐ ","tv":"๐บ","radio":"๐ป","studio_microphone":"๐","level_slider":"๐","control_knobs":"๐","stopwatch":"โฑ","timer_clock":"โฒ","alarm_clock":"โฐ","mantelpiece_clock":"๐ฐ","hourglass_flowing_sand":"โณ","hourglass":"โ","satellite":"๐ก","battery":"๐","electric_plug":"๐","bulb":"๐ก","flashlight":"๐ฆ","candle":"๐ฏ","wastebasket":"๐","oil_drum":"๐ข","money_with_wings":"๐ธ","dollar":"๐ต","yen":"๐ด","euro":"๐ถ","pound":"๐ท","moneybag":"๐ฐ","credit_card":"๐ณ","gem":"๐","scales":"โ","wrench":"๐ง","hammer":"๐จ","hammer_and_pick":"โ","hammer_and_wrench":"๐ ","pick":"โ","nut_and_bolt":"๐ฉ","gear":"โ","chains":"โ","gun":"๐ซ","bomb":"๐ฃ","hocho":"๐ช","dagger_knife":"๐ก","crossed_swords":"โ","shield":"๐ก","smoking":"๐ฌ","skull_and_crossbones":"โ ","coffin":"โฐ","funeral_urn":"โฑ","amphora":"๐บ","crystal_ball":"๐ฎ","prayer_beads":"๐ฟ","barber":"๐","alembic":"โ","telescope":"๐ญ","microscope":"๐ฌ","hole":"๐ณ","pill":"๐","syringe":"๐","thermometer":"๐ก","label":"๐ท","bookmark":"๐","toilet":"๐ฝ","shower":"๐ฟ","bathtub":"๐","key":"๐","old_key":"๐","couch_and_lamp":"๐","sleeping_accommodation":"๐","bed":"๐","door":"๐ช","bellhop_bell":"๐","frame_with_picture":"๐ผ","world_map":"๐บ","umbrella_on_ground":"โฑ","moyai":"๐ฟ","shopping_bags":"๐","balloon":"๐","flags":"๐","ribbon":"๐","gift":"๐","confetti_ball":"๐","tada":"๐","dolls":"๐","wind_chime":"๐","crossed_flags":"๐","izakaya_lantern":"๐ฎ","envelope":"โ๏ธ","envelope_with_arrow":"๐ฉ","incoming_envelope":"๐จ","email":"๐ง","love_letter":"๐","postbox":"๐ฎ","mailbox_closed":"๐ช","mailbox":"๐ซ","mailbox_with_mail":"๐ฌ","mailbox_with_no_mail":"๐ญ","package":"๐ฆ","postal_horn":"๐ฏ","inbox_tray":"๐ฅ","outbox_tray":"๐ค","scroll":"๐","page_with_curl":"๐","bookmark_tabs":"๐","bar_chart":"๐","chart_with_upwards_trend":"๐","chart_with_downwards_trend":"๐","page_facing_up":"๐","date":"๐
","calendar":"๐","spiral_calendar_pad":"๐","card_index":"๐","card_file_box":"๐","ballot_box_with_ballot":"๐ณ","file_cabinet":"๐","clipboard":"๐","spiral_note_pad":"๐","file_folder":"๐","open_file_folder":"๐","card_index_dividers":"๐","rolled_up_newspaper":"๐","newspaper":"๐ฐ","notebook":"๐","closed_book":"๐","green_book":"๐","blue_book":"๐","orange_book":"๐","notebook_with_decorative_cover":"๐","ledger":"๐","books":"๐","book":"๐","link":"๐","paperclip":"๐","linked_paperclips":"๐","scissors":"โ๏ธ","triangular_ruler":"๐","straight_ruler":"๐","pushpin":"๐","round_pushpin":"๐","triangular_flag_on_post":"๐ฉ","waving_white_flag":"๐ณ","waving_black_flag":"๐ด","closed_lock_with_key":"๐","lock":"๐","unlock":"๐","lock_with_ink_pen":"๐","lower_left_ballpoint_pen":"๐","lower_left_fountain_pen":"๐","black_nib":"โ๏ธ","memo":"๐","pencil2":"โ๏ธ","lower_left_crayon":"๐","lower_left_paintbrush":"๐","mag":"๐","mag_right":"๐","heart":"โค๏ธ","yellow_heart":"๐","green_heart":"๐","blue_heart":"๐","purple_heart":"๐","broken_heart":"๐","heavy_heart_exclamation_mark_ornament":"โฃ","two_hearts":"๐","revolving_hearts":"๐","heartbeat":"๐","heartpulse":"๐","sparkling_heart":"๐","cupid":"๐","gift_heart":"๐","heart_decoration":"๐","peace_symbol":"โฎ","latin_cross":"โ","star_and_crescent":"โช","om_symbol":"๐","wheel_of_dharma":"โธ","star_of_david":"โก","six_pointed_star":"๐ฏ","menorah_with_nine_branches":"๐","yin_yang":"โฏ","orthodox_cross":"โฆ","place_of_worship":"๐","ophiuchus":"โ","aries":"โ","taurus":"โ","gemini":"โ","cancer":"โ","leo":"โ","virgo":"โ","libra":"โ","scorpius":"โ","sagittarius":"โ","capricorn":"โ","aquarius":"โ","pisces":"โ","id":"๐","atom_symbol":"โ","u7a7a":"๐ณ","u5272":"๐น","radioactive_sign":"โข","biohazard_sign":"โฃ","mobile_phone_off":"๐ด","vibration_mode":"๐ณ","u6709":"๐ถ","u7121":"๐","u7533":"๐ธ","u55b6":"๐บ","u6708":"๐ท๏ธ","eight_pointed_black_star":"โด๏ธ","vs":"๐","accept":"๐","white_flower":"๐ฎ","ideograph_advantage":"๐","secret":"ใ๏ธ","congratulations":"ใ๏ธ","u5408":"๐ด","u6e80":"๐ต","u7981":"๐ฒ","a":"๐
ฐ๏ธ","b":"๐
ฑ๏ธ","ab":"๐","cl":"๐","o2":"๐
พ๏ธ","sos":"๐","no_entry":"โ","name_badge":"๐","no_entry_sign":"๐ซ","x":"โ","o":"โญ","anger":"๐ข","hotsprings":"โจ๏ธ","no_pedestrians":"๐ท","do_not_litter":"๐ฏ","no_bicycles":"๐ณ","non-potable_water":"๐ฑ","underage":"๐","no_mobile_phones":"๐ต","exclamation":"โ","grey_exclamation":"โ","question":"โ","grey_question":"โ","bangbang":"โผ๏ธ","interrobang":"โ๏ธ","low_brightness":"๐
","high_brightness":"๐","trident":"๐ฑ","fleur_de_lis":"โ","part_alternation_mark":"ใฝ๏ธ","warning":"โ ๏ธ","children_crossing":"๐ธ","beginner":"๐ฐ","recycle":"โป๏ธ","u6307":"๐ฏ","chart":"๐น","sparkle":"โ๏ธ","eight_spoked_asterisk":"โณ๏ธ","negative_squared_cross_mark":"โ","white_check_mark":"โ
","diamond_shape_with_a_dot_inside":"๐ ","cyclone":"๐","loop":"โฟ","globe_with_meridians":"๐","m":"โ๏ธ","atm":"๐ง","sa":"๐๏ธ","passport_control":"๐","customs":"๐","baggage_claim":"๐","left_luggage":"๐
","wheelchair":"โฟ","no_smoking":"๐ญ","wc":"๐พ","parking":"๐
ฟ๏ธ","potable_water":"๐ฐ","mens":"๐น","womens":"๐บ","baby_symbol":"๐ผ","restroom":"๐ป","put_litter_in_its_place":"๐ฎ","cinema":"๐ฆ","signal_strength":"๐ถ","koko":"๐","ng":"๐","ok":"๐","up":"๐","cool":"๐","new":"๐","free":"๐","zero":"0๏ธโฃ","one":"1๏ธโฃ","two":"2๏ธโฃ","three":"3๏ธโฃ","four":"4๏ธโฃ","five":"5๏ธโฃ","six":"6๏ธโฃ","seven":"7๏ธโฃ","eight":"8๏ธโฃ","nine":"9๏ธโฃ","keycap_ten":"๐","keycap_star":"*โฃ","arrow_forward":"โถ๏ธ","double_vertical_bar":"โธ","black_right_pointing_triangle_with_double_vertical_bar":"โญ","black_square_for_stop":"โน","black_circle_for_record":"โบ","black_right_pointing_double_triangle_with_vertical_bar":"โฏ","black_left_pointing_double_triangle_with_vertical_bar":"โฎ","fast_forward":"โฉ","rewind":"โช","twisted_rightwards_arrows":"๐","repeat":"๐","repeat_one":"๐","arrow_backward":"โ๏ธ","arrow_up_small":"๐ผ","arrow_down_small":"๐ฝ","arrow_double_up":"โซ","arrow_double_down":"โฌ","arrow_right":"โก๏ธ","arrow_left":"โฌ
๏ธ","arrow_up":"โฌ๏ธ","arrow_down":"โฌ๏ธ","arrow_upper_right":"โ๏ธ","arrow_lower_right":"โ๏ธ","arrow_lower_left":"โ๏ธ","arrow_upper_left":"โ๏ธ","arrow_up_down":"โ๏ธ","left_right_arrow":"โ๏ธ","arrows_counterclockwise":"๐","arrow_right_hook":"โช๏ธ","leftwards_arrow_with_hook":"โฉ๏ธ","arrow_heading_up":"โคด๏ธ","arrow_heading_down":"โคต๏ธ","hash":"#๏ธโฃ","information_source":"โน๏ธ","abc":"๐ค","abcd":"๐ก","capital_abcd":"๐ ","symbols":"๐ฃ","musical_note":"๐ต","notes":"๐ถ","wavy_dash":"ใฐ๏ธ","curly_loop":"โฐ","heavy_check_mark":"โ๏ธ","arrows_clockwise":"๐","heavy_plus_sign":"โ","heavy_minus_sign":"โ","heavy_division_sign":"โ","heavy_multiplication_x":"โ๏ธ","heavy_dollar_sign":"๐ฒ","currency_exchange":"๐ฑ","copyright":"ยฉ๏ธ","registered":"ยฎ๏ธ","tm":"โข๏ธ","end":"๐","back":"๐","on":"๐","top":"๐","soon":"๐","ballot_box_with_check":"โ๏ธ","radio_button":"๐","white_circle":"โช","black_circle":"โซ","red_circle":"๐ด","large_blue_circle":"๐ต","small_orange_diamond":"๐ธ","small_blue_diamond":"๐น","large_orange_diamond":"๐ถ","large_blue_diamond":"๐ท","small_red_triangle":"๐บ","black_small_square":"โช๏ธ","white_small_square":"โซ๏ธ","black_large_square":"โฌ","white_large_square":"โฌ","small_red_triangle_down":"๐ป","black_medium_square":"โผ๏ธ","white_medium_square":"โป๏ธ","black_medium_small_square":"โพ","white_medium_small_square":"โฝ","black_square_button":"๐ฒ","white_square_button":"๐ณ","speaker":"๐","sound":"๐","loud_sound":"๐","mute":"๐","mega":"๐ฃ","loudspeaker":"๐ข","bell":"๐","no_bell":"๐","black_joker":"๐","mahjong":"๐","spades":"โ ๏ธ","clubs":"โฃ๏ธ","hearts":"โฅ๏ธ","diamonds":"โฆ๏ธ","flower_playing_cards":"๐ด","thought_balloon":"๐ญ","right_anger_bubble":"๐ฏ","speech_balloon":"๐ฌ","left_speech_bubble":"๐จ","clock1":"๐","clock2":"๐","clock3":"๐","clock4":"๐","clock5":"๐","clock6":"๐","clock7":"๐","clock8":"๐","clock9":"๐","clock10":"๐","clock11":"๐","clock12":"๐","clock130":"๐","clock230":"๐","clock330":"๐","clock430":"๐","clock530":"๐ ","clock630":"๐ก","clock730":"๐ข","clock830":"๐ฃ","clock930":"๐ค","clock1030":"๐ฅ","clock1130":"๐ฆ","clock1230":"๐ง","af":"๐ฆ๐ซ","ax":"๐ฆ๐ฝ","al":"๐ฆ๐ฑ","dz":"๐ฉ๐ฟ","as":"๐ฆ๐ธ","ad":"๐ฆ๐ฉ","ao":"๐ฆ๐ด","ai":"๐ฆ๐ฎ","aq":"๐ฆ๐ถ","ag":"๐ฆ๐ฌ","ar":"๐ฆ๐ท","am":"๐ฆ๐ฒ","aw":"๐ฆ๐ผ","au":"๐ฆ๐บ","at":"๐ฆ๐น","az":"๐ฆ๐ฟ","bs":"๐ง๐ธ","bh":"๐ง๐ญ","bd":"๐ง๐ฉ","bb":"๐ง๐ง","by":"๐ง๐พ","be":"๐ง๐ช","bz":"๐ง๐ฟ","bj":"๐ง๐ฏ","bm":"๐ง๐ฒ","bt":"๐ง๐น","bo":"๐ง๐ด","bq":"๐ง๐ถ","ba":"๐ง๐ฆ","bw":"๐ง๐ผ","br":"๐ง๐ท","io":"๐ฎ๐ด","vg":"๐ป๐ฌ","bn":"๐ง๐ณ","bg":"๐ง๐ฌ","bf":"๐ง๐ซ","bi":"๐ง๐ฎ","cv":"๐จ๐ป","kh":"๐ฐ๐ญ","cm":"๐จ๐ฒ","ca":"๐จ๐ฆ","ic":"๐ฎ๐จ","ky":"๐ฐ๐พ","cf":"๐จ๐ซ","td":"๐น๐ฉ","chile":"๐จ๐ฑ","cn":"๐จ๐ณ","cx":"๐จ๐ฝ","cc":"๐จ๐จ","co":"๐จ๐ด","km":"๐ฐ๐ฒ","cg":"๐จ๐ฌ","drc":"๐จ๐ฉ","ck":"๐จ๐ฐ","cr":"๐จ๐ท","hr":"๐ญ๐ท","cu":"๐จ๐บ","cw":"๐จ๐ผ","cy":"๐จ๐พ","cz":"๐จ๐ฟ","dk":"๐ฉ๐ฐ","dj":"๐ฉ๐ฏ","dm":"๐ฉ๐ฒ","do":"๐ฉ๐ด","ec":"๐ช๐จ","eg":"๐ช๐ฌ","sv":"๐ธ๐ป","gq":"๐ฌ๐ถ","er":"๐ช๐ท","ee":"๐ช๐ช","et":"๐ช๐น","eu":"๐ช๐บ","fk":"๐ซ๐ฐ","fo":"๐ซ๐ด","fj":"๐ซ๐ฏ","fi":"๐ซ๐ฎ","fr":"๐ซ๐ท","gf":"๐ฌ๐ซ","pf":"๐ต๐ซ","tf":"๐น๐ซ","ga":"๐ฌ๐ฆ","gm":"๐ฌ๐ฒ","ge":"๐ฌ๐ช","de":"๐ฉ๐ช","gh":"๐ฌ๐ญ","gi":"๐ฌ๐ฎ","gr":"๐ฌ๐ท","gl":"๐ฌ๐ฑ","gd":"๐ฌ๐ฉ","gp":"๐ฌ๐ต","gu":"๐ฌ๐บ","gt":"๐ฌ๐น","gg":"๐ฌ๐ฌ","gn":"๐ฌ๐ณ","gw":"๐ฌ๐ผ","gy":"๐ฌ๐พ","ht":"๐ญ๐น","hn":"๐ญ๐ณ","hk":"๐ญ๐ฐ","hu":"๐ญ๐บ","is":"๐ฎ๐ธ","in":"๐ฎ๐ณ","indonesia":"๐ฎ๐ฉ","ir":"๐ฎ๐ท","iq":"๐ฎ๐ถ","ie":"๐ฎ๐ช","im":"๐ฎ๐ฒ","il":"๐ฎ๐ฑ","it":"๐ฎ๐น","ci":"๐จ๐ฎ","jm":"๐ฏ๐ฒ","jp":"๐ฏ๐ต","je":"๐ฏ๐ช","jo":"๐ฏ๐ด","kz":"๐ฐ๐ฟ","ke":"๐ฐ๐ช","ki":"๐ฐ๐ฎ","xk":"๐ฝ๐ฐ","kw":"๐ฐ๐ผ","kg":"๐ฐ๐ฌ","la":"๐ฑ๐ฆ","lv":"๐ฑ๐ป","lb":"๐ฑ๐ง","ls":"๐ฑ๐ธ","lr":"๐ฑ๐ท","ly":"๐ฑ๐พ","li":"๐ฑ๐ฎ","lt":"๐ฑ๐น","lu":"๐ฑ๐บ","mo":"๐ฒ๐ด","mk":"๐ฒ๐ฐ","mg":"๐ฒ๐ฌ","mw":"๐ฒ๐ผ","my":"๐ฒ๐พ","mv":"๐ฒ๐ป","ml":"๐ฒ๐ฑ","mt":"๐ฒ๐น","mh":"๐ฒ๐ญ","mq":"๐ฒ๐ถ","mr":"๐ฒ๐ท","mu":"๐ฒ๐บ","yt":"๐พ๐น","mx":"๐ฒ๐ฝ","fm":"๐ซ๐ฒ","md":"๐ฒ๐ฉ","mc":"๐ฒ๐จ","mn":"๐ฒ๐ณ","me":"๐ฒ๐ช","ms":"๐ฒ๐ธ","ma":"๐ฒ๐ฆ","mz":"๐ฒ๐ฟ","mm":"๐ฒ๐ฒ","na":"๐ณ๐ฆ","nr":"๐ณ๐ท","np":"๐ณ๐ต","nl":"๐ณ๐ฑ","nc":"๐ณ๐จ","nz":"๐ณ๐ฟ","ni":"๐ณ๐ฎ","ne":"๐ณ๐ช","nigeria":"๐ณ๐ฌ","nu":"๐ณ๐บ","nf":"๐ณ๐ซ","mp":"๐ฒ๐ต","kp":"๐ฐ๐ต","no":"๐ณ๐ด","om":"๐ด๐ฒ","pk":"๐ต๐ฐ","pw":"๐ต๐ผ","ps":"๐ต๐ธ","pa":"๐ต๐ฆ","pg":"๐ต๐ฌ","py":"๐ต๐พ","pe":"๐ต๐ช","ph":"๐ต๐ญ","pn":"๐ต๐ณ","pl":"๐ต๐ฑ","pt":"๐ต๐น","pr":"๐ต๐ท","qa":"๐ถ๐ฆ","re":"๐ท๐ช","ro":"๐ท๐ด","ru":"๐ท๐บ","rw":"๐ท๐ผ","bl":"๐ง๐ฑ","sh":"๐ธ๐ญ","kn":"๐ฐ๐ณ","lc":"๐ฑ๐จ","pm":"๐ต๐ฒ","vc":"๐ป๐จ","ws":"๐ผ๐ธ","sm":"๐ธ๐ฒ","st":"๐ธ๐น","saudi_arabia":"๐ธ๐ฆ","sn":"๐ธ๐ณ","rs":"๐ท๐ธ","sc":"๐ธ๐จ","sl":"๐ธ๐ฑ","sg":"๐ธ๐ฌ","sx":"๐ธ๐ฝ","sk":"๐ธ๐ฐ","si":"๐ธ๐ฎ","sb":"๐ธ๐ง","so":"๐ธ๐ด","za":"๐ฟ๐ฆ","gs":"๐ฌ๐ธ","kr":"๐ฐ๐ท","ss":"๐ธ๐ธ","es":"๐ช๐ธ","lk":"๐ฑ๐ฐ","sd":"๐ธ๐ฉ","sr":"๐ธ๐ท","sz":"๐ธ๐ฟ","se":"๐ธ๐ช","ch":"๐จ๐ญ","sy":"๐ธ๐พ","tw":"๐น๐ผ","tj":"๐น๐ฏ","tz":"๐น๐ฟ","th":"๐น๐ญ","tl":"๐น๐ฑ","tg":"๐น๐ฌ","tk":"๐น๐ฐ","to":"๐น๐ด","tt":"๐น๐น","tn":"๐น๐ณ","tr":"๐น๐ท","turkmenistan":"๐น๐ฒ","tc":"๐น๐จ","tuvalu":"๐น๐ป","ug":"๐บ๐ฌ","ua":"๐บ๐ฆ","ae":"๐ฆ๐ช","gb":"๐ฌ๐ง","us":"๐บ๐ธ","vi":"๐ป๐ฎ","uy":"๐บ๐พ","uz":"๐บ๐ฟ","vu":"๐ป๐บ","va":"๐ป๐ฆ","ve":"๐ป๐ช","vn":"๐ป๐ณ","wf":"๐ผ๐ซ","eh":"๐ช๐ญ","ye":"๐พ๐ช","zm":"๐ฟ๐ฒ","zw":"๐ฟ๐ผ"}
\ No newline at end of file
diff --git a/frontend/utils/emojify.js b/frontend/utils/emojify.js
deleted file mode 100644
index eeee3e1f..00000000
--- a/frontend/utils/emojify.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// @flow
-import emojiMapping from './emoji-mapping.json';
-
-const EMOJI_REGEX = /:([A-Za-z0-9_\-+]+?):/gm;
-
-const emojify = (text: string = '') => {
- let emojifiedText = text;
-
- emojifiedText = text.replace(EMOJI_REGEX, (match, p1, offset, string) => {
- return emojiMapping[p1] || match;
- });
-
- return emojifiedText;
-};
-
-export default emojify;
diff --git a/frontend/utils/markdown.js b/frontend/utils/markdown.js
deleted file mode 100644
index e5511c66..00000000
--- a/frontend/utils/markdown.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// @flow
-import slug from 'slug';
-import marked from 'marked';
-import sanitizedRenderer from 'marked-sanitized';
-import highlight from 'highlight.js';
-import _ from 'lodash';
-import emojify from './emojify';
-import toc from './toc';
-
-// $FlowIssue invalid flow-typed
-slug.defaults.mode = 'rfc3986';
-
-const Renderer = sanitizedRenderer(marked.Renderer);
-const renderer = new Renderer();
-renderer.code = (code, language) => {
- const validLang = !!(language && highlight.getLanguage(language));
- const highlighted = validLang
- ? highlight.highlight(language, code).value
- : _.escape(code);
- return `
${highlighted}
`;
-};
-renderer.heading = (text, level) => {
- const headingSlug = _.escape(slug(text));
- return `
-
- ${text}
- #
-
- `;
-};
-
-const convertToMarkdown = (text: string) => {
- // Add TOC
- text = toc.insert(text || '', {
- slugify: heading => {
- // FIXME: E.g. `&` gets messed up
- const headingSlug = _.escape(slug(heading));
- return headingSlug;
- },
- });
-
- return marked.parse(emojify(text), {
- renderer,
- gfm: true,
- tables: true,
- breaks: false,
- pedantic: false,
- smartLists: true,
- smartypants: true,
- });
-};
-
-export { convertToMarkdown };
diff --git a/frontend/utils/toc/index.js b/frontend/utils/toc/index.js
deleted file mode 100644
index 8eaa5499..00000000
--- a/frontend/utils/toc/index.js
+++ /dev/null
@@ -1,148 +0,0 @@
-// @flow
-/* eslint-disable */
-
-/**
- * marked-toc
- *
- * Copyright (c) 2014 Jon Schlinkert, contributors.
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-var marked = require('marked');
-var _ = require('lodash');
-var utils = require('./utils');
-
-/**
- * Expose `toc`
- */
-
-module.exports = toc;
-
-/**
- * Default template to use for generating
- * a table of contents.
- */
-
-var defaultTemplate =
- '<%= depth %><%= bullet %>[<%= heading %>](#<%= url %>)\n';
-
-/**
- * Create the table of contents object that
- * will be used as context for the template.
- *
- * @param {String} `str`
- * @param {Object} `options`
- * @return {Object}
- */
-
-function generate(str, options) {
- var opts = _.extend(
- {
- firsth1: false,
- blacklist: true,
- omit: [],
- maxDepth: 3,
- slugify: function(text) {
- return text; // Override this!
- },
- },
- options
- );
-
- var toc = '';
- // $FlowIssue invalid flow-typed
- var tokens = marked.lexer(str);
- var tocArray = [];
-
- // Remove the very first h1, true by default
- if (opts.firsth1 === false) {
- tokens.shift();
- }
-
- // Do any h1's still exist?
- var h1 = _.some(tokens, { depth: 1 });
-
- tokens
- .filter(function(token) {
- // Filter out everything but headings
- if (token.type !== 'heading' || token.type === 'code') {
- return false;
- }
-
- // Since we removed the first h1, we'll check to see if other h1's
- // exist. If none exist, then we unindent the rest of the TOC
- if (!h1) {
- token.depth = token.depth - 1;
- }
-
- // Store original text and create an id for linking
- token.heading = opts.strip ? utils.strip(token.text, opts) : token.text;
-
- // Create a "slugified" id for linking
- token.id = opts.slugify(token.text);
-
- // Omit headings with these strings
- var omissions = ['Table of Contents', 'TOC', 'TABLE OF CONTENTS'];
- var omit = _.union([], opts.omit, omissions);
-
- if (utils.isMatch(omit, token.heading)) {
- return;
- }
-
- return true;
- })
- .forEach(function(h) {
- if (h.depth > opts.maxDepth) {
- return;
- }
-
- var bullet = Array.isArray(opts.bullet)
- ? opts.bullet[(h.depth - 1) % opts.bullet.length]
- : opts.bullet;
-
- var data = _.extend({}, opts.data, {
- depth: new Array((h.depth - 1) * 2 + 1).join(' '),
- bullet: bullet ? bullet : '* ',
- heading: h.heading,
- url: h.id,
- });
-
- tocArray.push(data);
- toc += _.template(opts.template || defaultTemplate)(data);
- });
-
- return {
- data: tocArray,
- toc: opts.strip ? utils.strip(toc, opts) : toc,
- };
-}
-
-/**
- * toc
- */
-
-function toc(str: string, options: Object) {
- return generate(str, options).toc;
-}
-
-toc.raw = function(str, options) {
- return generate(str, options);
-};
-
-toc.insert = function(content, options) {
- var start = '';
- var stop = '';
- var re = /([\s\S]+?)/;
-
- // remove the existing TOC
- content = content.replace(re, start);
-
- // generate new TOC
- var newtoc =
- '\n\n' + start + '\n\n' + toc(content, options) + '\n' + stop + '\n';
-
- // If front-matter existed, put it back
- return content.replace(start, newtoc);
-};
diff --git a/frontend/utils/toc/utils.js b/frontend/utils/toc/utils.js
deleted file mode 100644
index e1cd9177..00000000
--- a/frontend/utils/toc/utils.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/* eslint-disable */
-
-/*!
- * marked-toc
- *
- * Copyright (c) 2014 Jon Schlinkert, contributors.
- * Licensed under the MIT license.
- */
-
-'use strict';
-
-var _ = require('lodash');
-var utils = (module.exports = {});
-
-utils.arrayify = function(arr) {
- return !Array.isArray(arr) ? [arr] : arr;
-};
-
-utils.escapeRegex = function(re) {
- return re.replace(/(\[|\]|\(|\)|\/|\.|\^|\$|\*|\+|\?)/g, '\\$1');
-};
-
-utils.isDest = function(dest) {
- return !dest || dest === 'undefined' || typeof dest === 'object';
-};
-
-utils.isMatch = function(keys, str) {
- keys = utils.arrayify(keys);
- keys = keys.length > 0 ? keys.join('|') : '.*';
-
- // Escape certain characters, like '[', '('
- var k = utils.escapeRegex(String(keys));
-
- // Build up the regex to use for replacement patterns
- var re = new RegExp('(?:' + k + ')', 'g');
- if (String(str).match(re)) {
- return true;
- } else {
- return false;
- }
-};
-
-utils.sanitize = function(src) {
- src = src.replace(/(\s*\[!|(?:\[.+ โ\]\()).+/g, '');
- src = src.replace(/\s*\*\s*\[\].+/g, '');
- return src;
-};
-
-utils.slugify = function(str) {
- str = str.replace(/\/\//g, '-');
- str = str.replace(/\//g, '-');
- str = str.replace(/\./g, '-');
- str = _.str.slugify(str);
- str = str.replace(/^-/, '');
- str = str.replace(/-$/, '');
- return str;
-};
-
-/**
- * Strip certain words from headings. These can be
- * overridden. Might seem strange but it makes
- * sense in context.
- */
-
-var omit = [
- 'grunt',
- 'helper',
- 'handlebars-helper',
- 'mixin',
- 'filter',
- 'assemble-contrib',
- 'assemble',
-];
-
-utils.strip = function(name, options) {
- var opts = _.extend({}, options);
- if (opts.omit === false) {
- omit = [];
- }
- var exclusions = _.union(omit, utils.arrayify(opts.strip || []));
- var re = new RegExp('^(?:' + exclusions.join('|') + ')[-_]?', 'g');
- return name.replace(re, '');
-};
diff --git a/package.json b/package.json
index 11e75b1e..ba097038 100644
--- a/package.json
+++ b/package.json
@@ -85,7 +85,6 @@
"css-loader": "^0.28.7",
"debug": "2.2.0",
"dotenv": "^4.0.0",
- "emoji-name-map": "1.1.2",
"emoji-regex": "^6.5.1",
"eslint": "^3.19.0",
"eslint-config-react-app": "^0.6.2",
@@ -100,7 +99,6 @@
"fbemitter": "^2.1.1",
"file-loader": "0.9.0",
"flow-typed": "^2.1.2",
- "highlight.js": "9.4.0",
"history": "3.0.0",
"html-webpack-plugin": "2.17.0",
"http-errors": "1.4.0",
@@ -108,7 +106,6 @@
"invariant": "^2.2.2",
"isomorphic-fetch": "2.2.1",
"js-search": "^1.4.2",
- "js-tree": "1.1.0",
"json-loader": "0.5.4",
"jsonwebtoken": "7.0.1",
"koa": "^2.2.0",
@@ -125,8 +122,6 @@
"localforage": "^1.5.0",
"lodash": "^4.17.4",
"lodash.orderby": "4.4.0",
- "marked": "0.3.6",
- "marked-sanitized": "^0.1.1",
"mobx": "^3.1.9",
"mobx-react": "^4.1.8",
"mobx-react-devtools": "^4.2.11",
@@ -170,7 +165,6 @@
"string-hash": "^1.1.0",
"style-loader": "^0.18.2",
"styled-components": "^2.0.0",
- "truncate-html": "https://github.com/jorilallo/truncate-html/tarball/master",
"url-loader": "0.5.7",
"uuid": "2.0.2",
"validator": "5.2.0",
diff --git a/scripts/update_emoji_mapping.js b/scripts/update_emoji_mapping.js
deleted file mode 100644
index 958763e4..00000000
--- a/scripts/update_emoji_mapping.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var fs = require('fs');
-var path = require('path');
-var mapping = require('emoji-name-map');
-
-fs.writeFile(
- path.join(__dirname, '../frontend/utils/emoji-mapping.json'),
- JSON.stringify(mapping.emoji)
-);
diff --git a/server/migrations/20171017055026-remove-document-html.js b/server/migrations/20171017055026-remove-document-html.js
new file mode 100644
index 00000000..b9cdd821
--- /dev/null
+++ b/server/migrations/20171017055026-remove-document-html.js
@@ -0,0 +1,23 @@
+module.exports = {
+ up: function(queryInterface, Sequelize) {
+ queryInterface.removeColumn('documents', 'html');
+ queryInterface.removeColumn('documents', 'preview');
+ queryInterface.removeColumn('revisions', 'html');
+ queryInterface.removeColumn('revisions', 'preview');
+ },
+
+ down: function(queryInterface, Sequelize) {
+ queryInterface.addColumn('documents', 'html', {
+ type: Sequelize.TEXT,
+ });
+ queryInterface.addColumn('documents', 'preview', {
+ type: Sequelize.TEXT,
+ });
+ queryInterface.addColumn('revisions', 'html', {
+ type: Sequelize.TEXT,
+ });
+ queryInterface.addColumn('revisions', 'preview', {
+ type: Sequelize.TEXT,
+ });
+ },
+};
diff --git a/server/models/Document.js b/server/models/Document.js
index 7ee9e425..95e3b146 100644
--- a/server/models/Document.js
+++ b/server/models/Document.js
@@ -2,12 +2,9 @@
import slug from 'slug';
import _ from 'lodash';
import randomstring from 'randomstring';
-import emojiRegex from 'emoji-regex';
import isUUID from 'validator/lib/isUUID';
import { DataTypes, sequelize } from '../sequelize';
-import { convertToMarkdown } from '../../frontend/utils/markdown';
-import { truncateMarkdown } from '../utils/truncate';
import parseTitle from '../../shared/parseTitle';
import Revision from './Revision';
@@ -25,8 +22,6 @@ const createRevision = doc => {
return Revision.create({
title: doc.title,
text: doc.text,
- html: doc.html,
- preview: doc.preview,
userId: doc.lastModifiedById,
documentId: doc.id,
});
@@ -40,8 +35,6 @@ const beforeSave = async doc => {
const { emoji } = parseTitle(doc.text);
doc.emoji = emoji;
- doc.html = convertToMarkdown(doc.text);
- doc.preview = truncateMarkdown(doc.text, 160);
doc.revisionCount += 1;
// Collaborators
@@ -74,8 +67,6 @@ const Document = sequelize.define(
private: { type: DataTypes.BOOLEAN, defaultValue: true },
title: DataTypes.STRING,
text: DataTypes.TEXT,
- html: DataTypes.TEXT,
- preview: DataTypes.TEXT,
revisionCount: { type: DataTypes.INTEGER, defaultValue: 0 },
parentDocumentId: DataTypes.UUID,
createdById: {
diff --git a/server/models/Revision.js b/server/models/Revision.js
index d69892ea..f5dcc846 100644
--- a/server/models/Revision.js
+++ b/server/models/Revision.js
@@ -9,8 +9,6 @@ const Revision = sequelize.define('revision', {
},
title: DataTypes.STRING,
text: DataTypes.TEXT,
- html: DataTypes.TEXT,
- preview: DataTypes.TEXT,
userId: {
type: 'UUID',
diff --git a/server/presenters/document.js b/server/presenters/document.js
index 5927a83d..bf483cd1 100644
--- a/server/presenters/document.js
+++ b/server/presenters/document.js
@@ -21,8 +21,6 @@ async function present(ctx: Object, document: Document, options: ?Options) {
private: document.private,
title: document.title,
text: document.text,
- html: document.html,
- preview: document.preview,
emoji: document.emoji,
createdAt: document.createdAt,
createdBy: presentUser(ctx, document.createdBy),
diff --git a/server/utils/truncate.js b/server/utils/truncate.js
deleted file mode 100644
index 85664daa..00000000
--- a/server/utils/truncate.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import truncate from 'truncate-html';
-import { convertToMarkdown } from '../../frontend/utils/markdown';
-
-truncate.defaultOptions = {
- stripTags: false,
- ellipsis: '...',
- decodeEntities: false,
- excludes: ['h1', 'pre'],
-};
-
-const truncateMarkdown = (text, length) => {
- const html = convertToMarkdown(text);
- return truncate(html, length);
-};
-
-export { truncateMarkdown };
diff --git a/yarn.lock b/yarn.lock
index a3c005d5..10b24544 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1454,7 +1454,7 @@ charenc@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
-cheerio@0.22.0, cheerio@^0.22.0:
+cheerio@^0.22.0:
version "0.22.0"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
dependencies:
@@ -2496,22 +2496,10 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
-emoji-name-map@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/emoji-name-map/-/emoji-name-map-1.1.2.tgz#662f6b5582b0eaf817be6a9ac272fbd8af10ae73"
- dependencies:
- emojilib "^2.0.2"
- iterate-object "^1.3.1"
- map-o "^2.0.1"
-
emoji-regex@^6.1.0, emoji-regex@^6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
-emojilib@^2.0.2:
- version "2.2.9"
- resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.2.9.tgz#ec5722689fc148f56422c14b0dc16a901d446b75"
-
emojis-list@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
@@ -3861,10 +3849,6 @@ hide-powered-by@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/hide-powered-by/-/hide-powered-by-1.0.0.tgz#4a85ad65881f62857fc70af7174a1184dccce32b"
-highlight.js@9.4.0:
- version "9.4.0"
- resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.4.0.tgz#2687d6cf6df0d57bc68585e836bfe3ab3edf9452"
-
history@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/history/-/history-3.0.0.tgz#02cff4e6f69dc62dd81161104a63f5b85ead0c85"
@@ -3965,7 +3949,7 @@ html-webpack-plugin@2.17.0:
pretty-error "^2.0.0"
toposort "^0.2.12"
-htmlparser2@^3.9.0, htmlparser2@^3.9.1:
+htmlparser2@^3.9.1:
version "3.9.2"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
dependencies:
@@ -4611,10 +4595,6 @@ isurl@^1.0.0-alpha5:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
-iterate-object@^1.3.0, iterate-object@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/iterate-object/-/iterate-object-1.3.2.tgz#24ec15affa5d0039e8839695a21c2cae1f45b66b"
-
jest-changed-files@^20.0.3:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
@@ -4870,10 +4850,6 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-js-tree@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/js-tree/-/js-tree-1.1.0.tgz#087ee3ec366a5b74eb14f486016c5e0e631f1670"
-
js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
@@ -5720,12 +5696,6 @@ map-cache@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-map-o@^2.0.1:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/map-o/-/map-o-2.0.7.tgz#7b59395ee87a5200ec2ef881938e9e257f747d61"
- dependencies:
- iterate-object "^1.3.0"
-
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
@@ -5734,12 +5704,6 @@ map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
-marked-sanitized@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/marked-sanitized/-/marked-sanitized-0.1.1.tgz#8a5756887217f64fe92e1a92e71d0cc10e767829"
- dependencies:
- sanitize-html "^1.5.2"
-
marked-terminal@^1.6.2:
version "1.7.0"
resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-1.7.0.tgz#c8c460881c772c7604b64367007ee5f77f125904"
@@ -5750,7 +5714,7 @@ marked-terminal@^1.6.2:
lodash.assign "^4.2.0"
node-emoji "^1.4.1"
-marked@0.3.6, marked@^0.3.6:
+marked@^0.3.6:
version "0.3.6"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7"
@@ -7610,10 +7574,6 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
-regexp-quote@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/regexp-quote/-/regexp-quote-0.0.0.tgz#1e0f4650c862dcbfed54fd42b148e9bb1721fcf2"
-
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -7846,14 +7806,6 @@ sane@~1.6.0:
walker "~1.0.5"
watch "~0.10.0"
-sanitize-html@^1.5.2:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.14.1.tgz#730ffa2249bdf18333effe45b286173c9c5ad0b8"
- dependencies:
- htmlparser2 "^3.9.0"
- regexp-quote "0.0.0"
- xtend "^4.0.0"
-
sax@^1.2.1, sax@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -8711,12 +8663,6 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-"truncate-html@https://github.com/jorilallo/truncate-html/tarball/master":
- version "0.1.1"
- resolved "https://github.com/jorilallo/truncate-html/tarball/master#5856f297610d202045d997965fc8c33be453c2e9"
- dependencies:
- cheerio "0.22.0"
-
tryit@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"