@underverse-ui/underverse 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1376 -265
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1322 -210
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -19445,7 +19445,7 @@ function useSmartLocale() {
|
|
|
19445
19445
|
}
|
|
19446
19446
|
|
|
19447
19447
|
// ../../components/ui/UEditor/UEditor.tsx
|
|
19448
|
-
import { useEffect as
|
|
19448
|
+
import { useEffect as useEffect34, useMemo as useMemo26 } from "react";
|
|
19449
19449
|
import { useTranslations as useTranslations7 } from "next-intl";
|
|
19450
19450
|
import { useEditor, EditorContent } from "@tiptap/react";
|
|
19451
19451
|
|
|
@@ -19818,12 +19818,924 @@ var ClipboardImages = Extension2.create({
|
|
|
19818
19818
|
}
|
|
19819
19819
|
});
|
|
19820
19820
|
|
|
19821
|
+
// ../../components/ui/UEditor/emoji-suggestion.tsx
|
|
19822
|
+
import { Extension as Extension3 } from "@tiptap/core";
|
|
19823
|
+
import Suggestion2 from "@tiptap/suggestion";
|
|
19824
|
+
import { ReactRenderer as ReactRenderer2 } from "@tiptap/react";
|
|
19825
|
+
import { PluginKey } from "@tiptap/pm/state";
|
|
19826
|
+
import { forwardRef as forwardRef14, useEffect as useEffect29, useImperativeHandle as useImperativeHandle2, useState as useState48 } from "react";
|
|
19827
|
+
import { Smile } from "lucide-react";
|
|
19828
|
+
import tippy2 from "tippy.js";
|
|
19829
|
+
|
|
19830
|
+
// ../../components/ui/UEditor/emojis.ts
|
|
19831
|
+
var EMOJI_LIST = [
|
|
19832
|
+
{
|
|
19833
|
+
id: "smileys_people",
|
|
19834
|
+
name: "Smileys & People",
|
|
19835
|
+
emojis: [
|
|
19836
|
+
{ emoji: "\u{1F600}", name: "grinning_face" },
|
|
19837
|
+
{ emoji: "\u{1F603}", name: "big_eyes_grin" },
|
|
19838
|
+
{ emoji: "\u{1F604}", name: "smiling_eyes_grin" },
|
|
19839
|
+
{ emoji: "\u{1F601}", name: "beaming_smile" },
|
|
19840
|
+
{ emoji: "\u{1F606}", name: "squinting_laugh" },
|
|
19841
|
+
{ emoji: "\u{1F605}", name: "sweat_grin" },
|
|
19842
|
+
{ emoji: "\u{1F602}", name: "joy_tears" },
|
|
19843
|
+
{ emoji: "\u{1F923}", name: "rofl_laugh" },
|
|
19844
|
+
{ emoji: "\u{1F972}", name: "tear_smile" },
|
|
19845
|
+
{ emoji: "\u263A\uFE0F", name: "warm_smile" },
|
|
19846
|
+
{ emoji: "\u{1F60A}", name: "blush_smile" },
|
|
19847
|
+
{ emoji: "\u{1F607}", name: "halo_smile" },
|
|
19848
|
+
{ emoji: "\u{1F642}", name: "slight_smile" },
|
|
19849
|
+
{ emoji: "\u{1F643}", name: "upside_down" },
|
|
19850
|
+
{ emoji: "\u{1F609}", name: "wink_face" },
|
|
19851
|
+
{ emoji: "\u{1F60C}", name: "relieved_face" },
|
|
19852
|
+
{ emoji: "\u{1F60D}", name: "heart_eyes" },
|
|
19853
|
+
{ emoji: "\u{1F970}", name: "hearts_face" },
|
|
19854
|
+
{ emoji: "\u{1F618}", name: "blow_kiss" },
|
|
19855
|
+
{ emoji: "\u{1F617}", name: "kissing_face" },
|
|
19856
|
+
{ emoji: "\u{1F619}", name: "smiling_kiss" },
|
|
19857
|
+
{ emoji: "\u{1F61A}", name: "closed_eyes_kiss" },
|
|
19858
|
+
{ emoji: "\u{1F60B}", name: "yummy_face" },
|
|
19859
|
+
{ emoji: "\u{1F61B}", name: "tongue_out" },
|
|
19860
|
+
{ emoji: "\u{1F61D}", name: "squinting_tongue" },
|
|
19861
|
+
{ emoji: "\u{1F61C}", name: "wink_tongue" },
|
|
19862
|
+
{ emoji: "\u{1F92A}", name: "zany_face" },
|
|
19863
|
+
{ emoji: "\u{1F928}", name: "raised_eyebrow" },
|
|
19864
|
+
{ emoji: "\u{1F9D0}", name: "monocle_face" },
|
|
19865
|
+
{ emoji: "\u{1F913}", name: "nerd_face" },
|
|
19866
|
+
{ emoji: "\u{1F60E}", name: "sunglasses_face" },
|
|
19867
|
+
{ emoji: "\u{1F978}", name: "disguised_face" },
|
|
19868
|
+
{ emoji: "\u{1F929}", name: "star_struck" },
|
|
19869
|
+
{ emoji: "\u{1F973}", name: "partying_face" },
|
|
19870
|
+
{ emoji: "\u{1F60F}", name: "smirking_face" },
|
|
19871
|
+
{ emoji: "\u{1F612}", name: "unamused_face" },
|
|
19872
|
+
{ emoji: "\u{1F61E}", name: "disappointed_face" },
|
|
19873
|
+
{ emoji: "\u{1F614}", name: "pensive_face" },
|
|
19874
|
+
{ emoji: "\u{1F61F}", name: "worried_face" },
|
|
19875
|
+
{ emoji: "\u{1F615}", name: "confused_face" },
|
|
19876
|
+
{ emoji: "\u{1F641}", name: "slight_frown" },
|
|
19877
|
+
{ emoji: "\u2639\uFE0F", name: "frowning_face" },
|
|
19878
|
+
{ emoji: "\u{1F623}", name: "persevering_face" },
|
|
19879
|
+
{ emoji: "\u{1F616}", name: "confounded_face" },
|
|
19880
|
+
{ emoji: "\u{1F62B}", name: "tired_face" },
|
|
19881
|
+
{ emoji: "\u{1F629}", name: "weary_face" },
|
|
19882
|
+
{ emoji: "\u{1F97A}", name: "pleading_face" },
|
|
19883
|
+
{ emoji: "\u{1F622}", name: "crying_face" },
|
|
19884
|
+
{ emoji: "\u{1F62D}", name: "loudly_crying" },
|
|
19885
|
+
{ emoji: "\u{1F624}", name: "steam_nose" },
|
|
19886
|
+
{ emoji: "\u{1F621}", name: "pouting_face" },
|
|
19887
|
+
{ emoji: "\u{1F92C}", name: "cursing_face" },
|
|
19888
|
+
{ emoji: "\u{1F92F}", name: "exploding_head" },
|
|
19889
|
+
{ emoji: "\u{1F633}", name: "flushed_face" },
|
|
19890
|
+
{ emoji: "\u{1F975}", name: "hot_face" },
|
|
19891
|
+
{ emoji: "\u{1F976}", name: "cold_face" },
|
|
19892
|
+
{ emoji: "\u{1F631}", name: "screaming_fear" },
|
|
19893
|
+
{ emoji: "\u{1F628}", name: "fearful_face" },
|
|
19894
|
+
{ emoji: "\u{1F630}", name: "anxious_sweat" },
|
|
19895
|
+
{ emoji: "\u{1F625}", name: "relieved_sad" },
|
|
19896
|
+
{ emoji: "\u{1F613}", name: "downcast_sweat" },
|
|
19897
|
+
{ emoji: "\u{1F917}", name: "hugging_face" },
|
|
19898
|
+
{ emoji: "\u{1F914}", name: "thinking_face" },
|
|
19899
|
+
{ emoji: "\u{1F92D}", name: "hand_over_mouth" },
|
|
19900
|
+
{ emoji: "\u{1F92B}", name: "shushing_face" },
|
|
19901
|
+
{ emoji: "\u{1F925}", name: "lying_face" },
|
|
19902
|
+
{ emoji: "\u{1F636}", name: "no_mouth" },
|
|
19903
|
+
{ emoji: "\u{1F610}", name: "neutral_face" },
|
|
19904
|
+
{ emoji: "\u{1F611}", name: "expressionless_face" },
|
|
19905
|
+
{ emoji: "\u{1F62C}", name: "grimacing_face" },
|
|
19906
|
+
{ emoji: "\u{1F644}", name: "rolling_eyes" },
|
|
19907
|
+
{ emoji: "\u{1F62F}", name: "hushed_face" },
|
|
19908
|
+
{ emoji: "\u{1F626}", name: "frowning_open" },
|
|
19909
|
+
{ emoji: "\u{1F627}", name: "anguished_face" },
|
|
19910
|
+
{ emoji: "\u{1F62E}", name: "open_mouth" },
|
|
19911
|
+
{ emoji: "\u{1F632}", name: "astonished_face" },
|
|
19912
|
+
{ emoji: "\u{1F971}", name: "yawning_face" },
|
|
19913
|
+
{ emoji: "\u{1F634}", name: "sleeping_face" },
|
|
19914
|
+
{ emoji: "\u{1F924}", name: "drooling_face" },
|
|
19915
|
+
{ emoji: "\u{1F62A}", name: "sleepy_face" },
|
|
19916
|
+
{ emoji: "\u{1F635}", name: "dizzy_face" },
|
|
19917
|
+
{ emoji: "\u{1F910}", name: "zipper_mouth" },
|
|
19918
|
+
{ emoji: "\u{1F974}", name: "woozy_face" },
|
|
19919
|
+
{ emoji: "\u{1F922}", name: "nauseated_face" },
|
|
19920
|
+
{ emoji: "\u{1F92E}", name: "face_vomiting" },
|
|
19921
|
+
{ emoji: "\u{1F927}", name: "sneezing_face" },
|
|
19922
|
+
{ emoji: "\u{1F637}", name: "medical_mask" },
|
|
19923
|
+
{ emoji: "\u{1F912}", name: "thermometer_face" },
|
|
19924
|
+
{ emoji: "\u{1F915}", name: "bandage_head" },
|
|
19925
|
+
{ emoji: "\u{1F911}", name: "money_mouth" },
|
|
19926
|
+
{ emoji: "\u{1F920}", name: "cowboy_hat" },
|
|
19927
|
+
{ emoji: "\u{1F608}", name: "devil_smile" },
|
|
19928
|
+
{ emoji: "\u{1F47F}", name: "devil_angry" },
|
|
19929
|
+
{ emoji: "\u{1F479}", name: "ogre_mask" },
|
|
19930
|
+
{ emoji: "\u{1F47A}", name: "goblin_mask" },
|
|
19931
|
+
{ emoji: "\u{1F921}", name: "clown_face" },
|
|
19932
|
+
{ emoji: "\u{1F4A9}", name: "poop_pile" },
|
|
19933
|
+
{ emoji: "\u{1F47B}", name: "ghost_spooky" },
|
|
19934
|
+
{ emoji: "\u{1F480}", name: "skull_head" },
|
|
19935
|
+
{ emoji: "\u2620\uFE0F", name: "skull_crossbones" },
|
|
19936
|
+
{ emoji: "\u{1F47D}", name: "alien_face" },
|
|
19937
|
+
{ emoji: "\u{1F47E}", name: "alien_monster" },
|
|
19938
|
+
{ emoji: "\u{1F916}", name: "robot_face" },
|
|
19939
|
+
{ emoji: "\u{1F383}", name: "pumpkin_jack" },
|
|
19940
|
+
{ emoji: "\u{1F63A}", name: "cat_grin" },
|
|
19941
|
+
{ emoji: "\u{1F638}", name: "cat_smile" },
|
|
19942
|
+
{ emoji: "\u{1F639}", name: "cat_joy" },
|
|
19943
|
+
{ emoji: "\u{1F63B}", name: "cat_heart_eyes" },
|
|
19944
|
+
{ emoji: "\u{1F63C}", name: "cat_smirk" },
|
|
19945
|
+
{ emoji: "\u{1F63D}", name: "cat_kiss" },
|
|
19946
|
+
{ emoji: "\u{1F640}", name: "cat_weary" },
|
|
19947
|
+
{ emoji: "\u{1F63F}", name: "cat_crying" },
|
|
19948
|
+
{ emoji: "\u{1F63E}", name: "cat_pouting" },
|
|
19949
|
+
{ emoji: "\u{1F44B}", name: "waving_hand" },
|
|
19950
|
+
{ emoji: "\u{1F91A}", name: "raised_back_hand" },
|
|
19951
|
+
{ emoji: "\u{1F590}\uFE0F", name: "splayed_fingers" },
|
|
19952
|
+
{ emoji: "\u270B", name: "raised_hand" },
|
|
19953
|
+
{ emoji: "\u{1F596}", name: "vulcan_salute" },
|
|
19954
|
+
{ emoji: "\u{1F44C}", name: "ok_hand" },
|
|
19955
|
+
{ emoji: "\u{1F90C}", name: "pinched_fingers" },
|
|
19956
|
+
{ emoji: "\u{1F90F}", name: "pinching_hand" },
|
|
19957
|
+
{ emoji: "\u270C\uFE0F", name: "victory_hand" },
|
|
19958
|
+
{ emoji: "\u{1F91E}", name: "crossed_fingers" },
|
|
19959
|
+
{ emoji: "\u{1F91F}", name: "love_you" },
|
|
19960
|
+
{ emoji: "\u{1F918}", name: "rock_on" },
|
|
19961
|
+
{ emoji: "\u{1F919}", name: "call_me" },
|
|
19962
|
+
{ emoji: "\u{1F448}", name: "point_left" },
|
|
19963
|
+
{ emoji: "\u{1F449}", name: "point_right" },
|
|
19964
|
+
{ emoji: "\u{1F446}", name: "point_up" },
|
|
19965
|
+
{ emoji: "\u{1F595}", name: "middle_finger" },
|
|
19966
|
+
{ emoji: "\u{1F447}", name: "point_down" },
|
|
19967
|
+
{ emoji: "\u261D\uFE0F", name: "index_up" },
|
|
19968
|
+
{ emoji: "\u{1F44D}", name: "thumbs_up" },
|
|
19969
|
+
{ emoji: "\u{1F44E}", name: "thumbs_down" },
|
|
19970
|
+
{ emoji: "\u270A", name: "raised_fist" },
|
|
19971
|
+
{ emoji: "\u{1F44A}", name: "oncoming_fist" },
|
|
19972
|
+
{ emoji: "\u{1F91B}", name: "left_fist" },
|
|
19973
|
+
{ emoji: "\u{1F91C}", name: "right_fist" },
|
|
19974
|
+
{ emoji: "\u{1F44F}", name: "clapping_hands" },
|
|
19975
|
+
{ emoji: "\u{1F64C}", name: "raising_hands" },
|
|
19976
|
+
{ emoji: "\u{1F450}", name: "open_hands" },
|
|
19977
|
+
{ emoji: "\u{1F932}", name: "palms_up" },
|
|
19978
|
+
{ emoji: "\u{1F91D}", name: "handshake" },
|
|
19979
|
+
{ emoji: "\u{1F64F}", name: "folded_hands" },
|
|
19980
|
+
{ emoji: "\u270D\uFE0F", name: "writing_hand" },
|
|
19981
|
+
{ emoji: "\u{1F485}", name: "nail_polish" },
|
|
19982
|
+
{ emoji: "\u{1F933}", name: "selfie_hand" },
|
|
19983
|
+
{ emoji: "\u{1F4AA}", name: "flex_biceps" },
|
|
19984
|
+
{ emoji: "\u{1F9BE}", name: "robot_arm" },
|
|
19985
|
+
{ emoji: "\u{1F9BF}", name: "robot_leg" },
|
|
19986
|
+
{ emoji: "\u{1F9B5}", name: "leg_foot" },
|
|
19987
|
+
{ emoji: "\u{1F9B6}", name: "foot_leg" },
|
|
19988
|
+
{ emoji: "\u{1F442}", name: "ear_listen" },
|
|
19989
|
+
{ emoji: "\u{1F9BB}", name: "ear_hearing_aid" },
|
|
19990
|
+
{ emoji: "\u{1F443}", name: "nose_smell" },
|
|
19991
|
+
{ emoji: "\u{1F9E0}", name: "brain_mind" },
|
|
19992
|
+
{ emoji: "\u{1FAC0}", name: "anatomical_heart" },
|
|
19993
|
+
{ emoji: "\u{1FAC1}", name: "lungs_organ" },
|
|
19994
|
+
{ emoji: "\u{1F9B7}", name: "tooth_dentist" },
|
|
19995
|
+
{ emoji: "\u{1F9B4}", name: "bone_skeleton" },
|
|
19996
|
+
{ emoji: "\u{1F440}", name: "eyes_look" },
|
|
19997
|
+
{ emoji: "\u{1F441}\uFE0F", name: "eye_look" },
|
|
19998
|
+
{ emoji: "\u{1F445}", name: "tongue_lick" },
|
|
19999
|
+
{ emoji: "\u{1F444}", name: "mouth_lips" },
|
|
20000
|
+
{ emoji: "\u{1F48B}", name: "kiss_mark" },
|
|
20001
|
+
{ emoji: "\u{1FA78}", name: "blood_drop" },
|
|
20002
|
+
{ emoji: "\u{1F476}", name: "baby_face" },
|
|
20003
|
+
{ emoji: "\u{1F9D2}", name: "child_face" },
|
|
20004
|
+
{ emoji: "\u{1F466}", name: "boy_face" },
|
|
20005
|
+
{ emoji: "\u{1F467}", name: "girl_face" },
|
|
20006
|
+
{ emoji: "\u{1F9D1}", name: "person_face" },
|
|
20007
|
+
{ emoji: "\u{1F471}", name: "blond_person" },
|
|
20008
|
+
{ emoji: "\u{1F468}", name: "man_face" },
|
|
20009
|
+
{ emoji: "\u{1F9D4}", name: "beard_person" },
|
|
20010
|
+
{ emoji: "\u{1F469}", name: "woman_face" },
|
|
20011
|
+
{ emoji: "\u{1F9D3}", name: "older_person" },
|
|
20012
|
+
{ emoji: "\u{1F474}", name: "old_man" },
|
|
20013
|
+
{ emoji: "\u{1F475}", name: "old_woman" },
|
|
20014
|
+
{ emoji: "\u{1F472}", name: "skullcap_person" },
|
|
20015
|
+
{ emoji: "\u{1F473}", name: "turban_person" },
|
|
20016
|
+
{ emoji: "\u{1F9D5}", name: "headscarf_woman" },
|
|
20017
|
+
{ emoji: "\u{1F46E}", name: "police_officer" },
|
|
20018
|
+
{ emoji: "\u{1F477}", name: "construction_worker" },
|
|
20019
|
+
{ emoji: "\u{1F482}", name: "guard_person" },
|
|
20020
|
+
{ emoji: "\u{1F575}\uFE0F", name: "detective_spy" },
|
|
20021
|
+
{ emoji: "\u{1F469}\u200D\u2695\uFE0F", name: "woman_doctor" },
|
|
20022
|
+
{ emoji: "\u{1F468}\u200D\u2695\uFE0F", name: "man_doctor" },
|
|
20023
|
+
{ emoji: "\u{1F469}\u200D\u{1F33E}", name: "woman_farmer" },
|
|
20024
|
+
{ emoji: "\u{1F468}\u200D\u{1F33E}", name: "man_farmer" },
|
|
20025
|
+
{ emoji: "\u{1F469}\u200D\u{1F373}", name: "woman_cook" },
|
|
20026
|
+
{ emoji: "\u{1F468}\u200D\u{1F373}", name: "man_cook" },
|
|
20027
|
+
{ emoji: "\u{1F469}\u200D\u{1F393}", name: "woman_student" },
|
|
20028
|
+
{ emoji: "\u{1F468}\u200D\u{1F393}", name: "man_student" },
|
|
20029
|
+
{ emoji: "\u{1F469}\u200D\u{1F3A4}", name: "woman_singer" },
|
|
20030
|
+
{ emoji: "\u{1F468}\u200D\u{1F3A4}", name: "man_singer" },
|
|
20031
|
+
{ emoji: "\u{1F469}\u200D\u{1F3EB}", name: "woman_teacher" },
|
|
20032
|
+
{ emoji: "\u{1F468}\u200D\u{1F3EB}", name: "man_teacher" },
|
|
20033
|
+
{ emoji: "\u{1F469}\u200D", name: "woman_factory" },
|
|
20034
|
+
{ emoji: "\u{1F468}\u200D", name: "man_factory" },
|
|
20035
|
+
{ emoji: "\u{1F469}\u200D\u{1F4BB}", name: "woman_tech" },
|
|
20036
|
+
{ emoji: "\u{1F468}\u200D\u{1F4BB}", name: "man_tech" },
|
|
20037
|
+
{ emoji: "\u{1F469}\u200D\u{1F4BC}", name: "woman_office" },
|
|
20038
|
+
{ emoji: "\u{1F468}\u200D\u{1F4BC}", name: "man_office" },
|
|
20039
|
+
{ emoji: "\u{1F469}\u200D\u{1F527}", name: "woman_mechanic" },
|
|
20040
|
+
{ emoji: "\u{1F468}\u200D\u{1F527}", name: "man_mechanic" },
|
|
20041
|
+
{ emoji: "\u{1F469}\u200D\u{1F52C}", name: "woman_scientist" },
|
|
20042
|
+
{ emoji: "\u{1F468}\u200D\u{1F52C}", name: "man_scientist" },
|
|
20043
|
+
{ emoji: "\u{1F469}\u200D\u{1F3A8}", name: "woman_artist" },
|
|
20044
|
+
{ emoji: "\u{1F468}\u200D\u{1F3A8}", name: "man_artist" },
|
|
20045
|
+
{ emoji: "\u{1F469}\u200D\u{1F692}", name: "woman_firefighter" },
|
|
20046
|
+
{ emoji: "\u{1F468}\u200D\u{1F692}", name: "man_firefighter" },
|
|
20047
|
+
{ emoji: "\u{1F469}\u200D\u2708\uFE0F", name: "woman_pilot" },
|
|
20048
|
+
{ emoji: "\u{1F468}\u200D\u2708\uFE0F", name: "man_pilot" },
|
|
20049
|
+
{ emoji: "\u{1F469}\u200D\u{1F680}", name: "woman_astronaut" },
|
|
20050
|
+
{ emoji: "\u{1F468}\u200D\u{1F680}", name: "man_astronaut" },
|
|
20051
|
+
{ emoji: "\u{1F469}\u200D\u2696\uFE0F", name: "woman_judge" },
|
|
20052
|
+
{ emoji: "\u{1F468}\u200D\u2696\uFE0F", name: "man_judge" },
|
|
20053
|
+
{ emoji: "\u{1F470}", name: "bride_wedding" },
|
|
20054
|
+
{ emoji: "\u{1F935}", name: "groom_tuxedo" },
|
|
20055
|
+
{ emoji: "\u{1F478}", name: "princess_crown" },
|
|
20056
|
+
{ emoji: "\u{1F934}", name: "prince_crown" },
|
|
20057
|
+
{ emoji: "\u{1F9B8}", name: "superhero_person" },
|
|
20058
|
+
{ emoji: "\u{1F9B9}", name: "supervillain_person" },
|
|
20059
|
+
{ emoji: "\u{1F936}", name: "mrs_claus" },
|
|
20060
|
+
{ emoji: "\u{1F385}", name: "santa_claus" },
|
|
20061
|
+
{ emoji: "\u{1F9D9}", name: "mage_wizard" },
|
|
20062
|
+
{ emoji: "\u{1F9DD}", name: "elf_fantasy" },
|
|
20063
|
+
{ emoji: "\u{1F9DB}", name: "vampire_dracula" },
|
|
20064
|
+
{ emoji: "\u{1F9DF}", name: "zombie_undead" },
|
|
20065
|
+
{ emoji: "\u{1F9DE}", name: "genie_magic" },
|
|
20066
|
+
{ emoji: "\u{1F9DC}", name: "mermaid_person" },
|
|
20067
|
+
{ emoji: "\u{1F9DA}", name: "fairy_magic" },
|
|
20068
|
+
{ emoji: "\u{1F47C}", name: "angel_baby" },
|
|
20069
|
+
{ emoji: "\u{1F930}", name: "pregnant_woman" },
|
|
20070
|
+
{ emoji: "\u{1F931}", name: "breast_feeding" },
|
|
20071
|
+
{ emoji: "\u{1F647}", name: "bowing_person" },
|
|
20072
|
+
{ emoji: "\u{1F481}", name: "tipping_hand" },
|
|
20073
|
+
{ emoji: "\u{1F645}", name: "gesturing_no" },
|
|
20074
|
+
{ emoji: "\u{1F646}", name: "gesturing_ok" },
|
|
20075
|
+
{ emoji: "\u{1F64B}", name: "raising_hand" },
|
|
20076
|
+
{ emoji: "\u{1F9CF}", name: "deaf_person" },
|
|
20077
|
+
{ emoji: "\u{1F926}", name: "face_palm" },
|
|
20078
|
+
{ emoji: "\u{1F937}", name: "shrugging_person" },
|
|
20079
|
+
{ emoji: "\u{1F64E}", name: "pouting_person" },
|
|
20080
|
+
{ emoji: "\u{1F64D}", name: "frowning_person" },
|
|
20081
|
+
{ emoji: "\u{1F487}", name: "haircut_person" },
|
|
20082
|
+
{ emoji: "\u{1F486}", name: "massage_person" },
|
|
20083
|
+
{ emoji: "\u{1F9D6}", name: "sauna_person" },
|
|
20084
|
+
{ emoji: "\u{1F483}", name: "woman_dancing" },
|
|
20085
|
+
{ emoji: "\u{1F57A}", name: "man_dancing" },
|
|
20086
|
+
{ emoji: "\u{1F46F}", name: "bunny_friends" },
|
|
20087
|
+
{ emoji: "\u{1F574}\uFE0F", name: "levitating_suit" },
|
|
20088
|
+
{ emoji: "\u{1F6B6}", name: "walking_person" },
|
|
20089
|
+
{ emoji: "\u{1F3C3}", name: "running_person" },
|
|
20090
|
+
{ emoji: "\u{1F9CD}", name: "standing_person" },
|
|
20091
|
+
{ emoji: "\u{1F9CE}", name: "kneeling_person" },
|
|
20092
|
+
{ emoji: "\u{1F468}\u200D\u{1F9AF}", name: "blind_cane" },
|
|
20093
|
+
{ emoji: "\u{1F468}\u200D\u{1F9BC}", name: "motor_wheelchair" },
|
|
20094
|
+
{ emoji: "\u{1F468}\u200D\u{1F9BD}", name: "manual_wheelchair" },
|
|
20095
|
+
{ emoji: "\u{1F9D7}", name: "climbing_person" },
|
|
20096
|
+
{ emoji: "\u{1F93A}", name: "fencing_person" },
|
|
20097
|
+
{ emoji: "\u{1F3C7}", name: "horse_racing" },
|
|
20098
|
+
{ emoji: "\u26F7\uFE0F", name: "skier_snow" },
|
|
20099
|
+
{ emoji: "\u{1F3C2}", name: "snowboarder_snow" },
|
|
20100
|
+
{ emoji: "\u{1F3CC}\uFE0F", name: "golfing_person" },
|
|
20101
|
+
{ emoji: "\u{1F3C4}", name: "surfing_person" },
|
|
20102
|
+
{ emoji: "\u{1F6A3}", name: "rowing_person" },
|
|
20103
|
+
{ emoji: "\u{1F3CA}", name: "swimming_person" },
|
|
20104
|
+
{ emoji: "\u26F9\uFE0F", name: "basketball_person" },
|
|
20105
|
+
{ emoji: "\u{1F3CB}\uFE0F", name: "lifting_weights" },
|
|
20106
|
+
{ emoji: "\u{1F6B4}", name: "biking_person" },
|
|
20107
|
+
{ emoji: "\u{1F6B5}", name: "mountain_biking" },
|
|
20108
|
+
{ emoji: "\u{1F938}", name: "cartwheel_person" },
|
|
20109
|
+
{ emoji: "\u{1F93C}", name: "wrestling_people" },
|
|
20110
|
+
{ emoji: "\u{1F93D}", name: "water_polo" },
|
|
20111
|
+
{ emoji: "\u{1F93E}", name: "handball_person" },
|
|
20112
|
+
{ emoji: "\u{1F939}", name: "juggling_person" },
|
|
20113
|
+
{ emoji: "\u{1F9D8}", name: "yoga_lotus" },
|
|
20114
|
+
{ emoji: "\u{1F6C0}", name: "bath_person" },
|
|
20115
|
+
{ emoji: "\u{1F6CC}", name: "bed_person" }
|
|
20116
|
+
]
|
|
20117
|
+
},
|
|
20118
|
+
{
|
|
20119
|
+
id: "animals_nature",
|
|
20120
|
+
name: "Animals & Nature",
|
|
20121
|
+
emojis: [
|
|
20122
|
+
{ emoji: "\u{1F435}", name: "monkey_face" },
|
|
20123
|
+
{ emoji: "\u{1F436}", name: "dog_face" },
|
|
20124
|
+
{ emoji: "\u{1F43A}", name: "wolf_face" },
|
|
20125
|
+
{ emoji: "\u{1F431}", name: "cat_face" },
|
|
20126
|
+
{ emoji: "\u{1F981}", name: "lion_face" },
|
|
20127
|
+
{ emoji: "\u{1F42F}", name: "tiger_face" },
|
|
20128
|
+
{ emoji: "\u{1F434}", name: "horse_face" },
|
|
20129
|
+
{ emoji: "\u{1F984}", name: "unicorn_face" },
|
|
20130
|
+
{ emoji: "\u{1F42E}", name: "cow_face" },
|
|
20131
|
+
{ emoji: "\u{1F437}", name: "pig_face" },
|
|
20132
|
+
{ emoji: "\u{1F42D}", name: "mouse_face" },
|
|
20133
|
+
{ emoji: "\u{1F430}", name: "rabbit_face" },
|
|
20134
|
+
{ emoji: "\u{1F43B}", name: "bear_face" },
|
|
20135
|
+
{ emoji: "\u{1F428}", name: "koala_bear" },
|
|
20136
|
+
{ emoji: "\u{1F43C}", name: "panda_face" },
|
|
20137
|
+
{ emoji: "\u{1F414}", name: "chicken_bird" },
|
|
20138
|
+
{ emoji: "\u{1F427}", name: "penguin_bird" },
|
|
20139
|
+
{ emoji: "\u{1F426}", name: "bird_fly" },
|
|
20140
|
+
{ emoji: "\u{1F986}", name: "duck_bird" },
|
|
20141
|
+
{ emoji: "\u{1F985}", name: "eagle_bird" },
|
|
20142
|
+
{ emoji: "\u{1F989}", name: "owl_bird" },
|
|
20143
|
+
{ emoji: "\u{1F438}", name: "frog_face" },
|
|
20144
|
+
{ emoji: "\u{1F422}", name: "turtle_slow" },
|
|
20145
|
+
{ emoji: "\u{1F40D}", name: "snake_hiss" },
|
|
20146
|
+
{ emoji: "\u{1F433}", name: "whale_sprout" },
|
|
20147
|
+
{ emoji: "\u{1F42C}", name: "dolphin_jump" },
|
|
20148
|
+
{ emoji: "\u{1F41F}", name: "fish_swim" },
|
|
20149
|
+
{ emoji: "\u{1F419}", name: "octopus_legs" },
|
|
20150
|
+
{ emoji: "\u{1F98B}", name: "butterfly_fly" },
|
|
20151
|
+
{ emoji: "\u{1F490}", name: "flower_bouquet" },
|
|
20152
|
+
{ emoji: "\u{1F338}", name: "cherry_blossom" },
|
|
20153
|
+
{ emoji: "\u{1F339}", name: "rose_flower" },
|
|
20154
|
+
{ emoji: "\u{1F33B}", name: "sunflower_yellow" },
|
|
20155
|
+
{ emoji: "\u{1F332}", name: "evergreen_tree" },
|
|
20156
|
+
{ emoji: "\u{1F333}", name: "deciduous_tree" },
|
|
20157
|
+
{ emoji: "\u{1F334}", name: "palm_tree" },
|
|
20158
|
+
{ emoji: "\u{1F335}", name: "cactus_plant" },
|
|
20159
|
+
{ emoji: "\u{1F525}", name: "fire_flame" },
|
|
20160
|
+
{ emoji: "\u{1F4A7}", name: "water_drop" },
|
|
20161
|
+
{ emoji: "\u2B50", name: "star_shine" }
|
|
20162
|
+
]
|
|
20163
|
+
},
|
|
20164
|
+
{
|
|
20165
|
+
id: "food_drink",
|
|
20166
|
+
name: "Food & Drink",
|
|
20167
|
+
emojis: [
|
|
20168
|
+
{ emoji: "\u{1F347}", name: "grapes_fruit" },
|
|
20169
|
+
{ emoji: "\u{1F348}", name: "melon_fruit" },
|
|
20170
|
+
{ emoji: "\u{1F349}", name: "watermelon_slice" },
|
|
20171
|
+
{ emoji: "\u{1F34A}", name: "tangerine_orange" },
|
|
20172
|
+
{ emoji: "\u{1F34B}", name: "lemon_sour" },
|
|
20173
|
+
{ emoji: "\u{1F34C}", name: "banana_fruit" },
|
|
20174
|
+
{ emoji: "\u{1F34D}", name: "pineapple_fruit" },
|
|
20175
|
+
{ emoji: "\u{1F34E}", name: "red_apple" },
|
|
20176
|
+
{ emoji: "\u{1F34F}", name: "green_apple" },
|
|
20177
|
+
{ emoji: "\u{1F350}", name: "pear_fruit" },
|
|
20178
|
+
{ emoji: "\u{1F351}", name: "peach_fruit" },
|
|
20179
|
+
{ emoji: "\u{1F352}", name: "cherries_red" },
|
|
20180
|
+
{ emoji: "\u{1F353}", name: "strawberry_red" },
|
|
20181
|
+
{ emoji: "\u{1F95D}", name: "kiwi_fruit" },
|
|
20182
|
+
{ emoji: "\u{1F345}", name: "tomato_red" },
|
|
20183
|
+
{ emoji: "\u{1F951}", name: "avocado_green" },
|
|
20184
|
+
{ emoji: "\u{1F346}", name: "eggplant_purple" },
|
|
20185
|
+
{ emoji: "\u{1F954}", name: "potato_spud" },
|
|
20186
|
+
{ emoji: "\u{1F955}", name: "carrot_veg" },
|
|
20187
|
+
{ emoji: "\u{1F33D}", name: "corn_cob" },
|
|
20188
|
+
{ emoji: "\u{1F35E}", name: "bread_loaf" },
|
|
20189
|
+
{ emoji: "\u{1F9C0}", name: "cheese_wedge" },
|
|
20190
|
+
{ emoji: "\u{1F356}", name: "meat_bone" },
|
|
20191
|
+
{ emoji: "\u{1F357}", name: "poultry_leg" },
|
|
20192
|
+
{ emoji: "\u{1F969}", name: "meat_cut" },
|
|
20193
|
+
{ emoji: "\u{1F953}", name: "bacon_strips" },
|
|
20194
|
+
{ emoji: "\u{1F354}", name: "hamburger_fast" },
|
|
20195
|
+
{ emoji: "\u{1F35F}", name: "french_fries" },
|
|
20196
|
+
{ emoji: "\u{1F355}", name: "pizza_slice" },
|
|
20197
|
+
{ emoji: "\u{1F32D}", name: "hot_dog" },
|
|
20198
|
+
{ emoji: "\u{1F96A}", name: "sandwich_lunch" },
|
|
20199
|
+
{ emoji: "\u{1F32E}", name: "taco_mexican" },
|
|
20200
|
+
{ emoji: "\u{1F32F}", name: "burrito_wrap" },
|
|
20201
|
+
{ emoji: "\u{1F95A}", name: "egg_white" },
|
|
20202
|
+
{ emoji: "\u{1F373}", name: "cooking_egg" },
|
|
20203
|
+
{ emoji: "\u{1F37F}", name: "popcorn_box" },
|
|
20204
|
+
{ emoji: "\u{1F35A}", name: "rice_bowl" },
|
|
20205
|
+
{ emoji: "\u{1F35D}", name: "spaghetti_pasta" },
|
|
20206
|
+
{ emoji: "\u{1F363}", name: "sushi_roll" },
|
|
20207
|
+
{ emoji: "\u{1F364}", name: "fried_shrimp" },
|
|
20208
|
+
{ emoji: "\u{1F366}", name: "ice_cream" },
|
|
20209
|
+
{ emoji: "\u{1F369}", name: "doughnut_sweet" },
|
|
20210
|
+
{ emoji: "\u{1F36A}", name: "cookie_sweet" },
|
|
20211
|
+
{ emoji: "\u{1F382}", name: "birthday_cake" },
|
|
20212
|
+
{ emoji: "\u{1F370}", name: "shortcake_slice" },
|
|
20213
|
+
{ emoji: "\u{1F36B}", name: "chocolate_bar" },
|
|
20214
|
+
{ emoji: "\u{1F36C}", name: "candy_sweet" },
|
|
20215
|
+
{ emoji: "\u{1F36D}", name: "lollipop_candy" },
|
|
20216
|
+
{ emoji: "\u2615", name: "coffee_hot" },
|
|
20217
|
+
{ emoji: "\u{1F37A}", name: "beer_mug" },
|
|
20218
|
+
{ emoji: "\u{1F37B}", name: "beer_cheers" },
|
|
20219
|
+
{ emoji: "\u{1F942}", name: "champagne_cheers" },
|
|
20220
|
+
{ emoji: "\u{1F377}", name: "wine_glass" },
|
|
20221
|
+
{ emoji: "\u{1F943}", name: "whiskey_glass" },
|
|
20222
|
+
{ emoji: "\u{1F379}", name: "tropical_drink" }
|
|
20223
|
+
]
|
|
20224
|
+
},
|
|
20225
|
+
{
|
|
20226
|
+
id: "activity",
|
|
20227
|
+
name: "Activity",
|
|
20228
|
+
emojis: [
|
|
20229
|
+
{ emoji: "\u26BD", name: "soccer_ball" },
|
|
20230
|
+
{ emoji: "\u{1F3C0}", name: "basketball_hoop" },
|
|
20231
|
+
{ emoji: "\u{1F3C8}", name: "football_american" },
|
|
20232
|
+
{ emoji: "\u26BE", name: "baseball_game" },
|
|
20233
|
+
{ emoji: "\u{1F3BE}", name: "tennis_ball" },
|
|
20234
|
+
{ emoji: "\u{1F3D0}", name: "volleyball_game" },
|
|
20235
|
+
{ emoji: "\u{1F3B1}", name: "pool_8ball" },
|
|
20236
|
+
{ emoji: "\u{1F3D3}", name: "ping_pong" },
|
|
20237
|
+
{ emoji: "\u{1F3F8}", name: "badminton_game" },
|
|
20238
|
+
{ emoji: "\u{1F94A}", name: "boxing_glove" },
|
|
20239
|
+
{ emoji: "\u{1F945}", name: "goal_net" },
|
|
20240
|
+
{ emoji: "\u{1F3A3}", name: "fishing_pole" },
|
|
20241
|
+
{ emoji: "\u{1F3AE}", name: "video_game" },
|
|
20242
|
+
{ emoji: "\u{1F3B2}", name: "game_die" },
|
|
20243
|
+
{ emoji: "\u{1F3AD}", name: "theater_masks" },
|
|
20244
|
+
{ emoji: "\u{1F3A8}", name: "artist_palette" },
|
|
20245
|
+
{ emoji: "\u{1F3AC}", name: "clapper_board" },
|
|
20246
|
+
{ emoji: "\u{1F3A4}", name: "microphone_sing" },
|
|
20247
|
+
{ emoji: "\u{1F3A7}", name: "headphone_music" },
|
|
20248
|
+
{ emoji: "\u{1F3B7}", name: "saxophone_jazz" },
|
|
20249
|
+
{ emoji: "\u{1F3B8}", name: "guitar_rock" },
|
|
20250
|
+
{ emoji: "\u{1F3B9}", name: "piano_keys" },
|
|
20251
|
+
{ emoji: "\u{1F3BA}", name: "trumpet_horn" },
|
|
20252
|
+
{ emoji: "\u{1F3BB}", name: "violin_music" },
|
|
20253
|
+
{ emoji: "\u{1F941}", name: "drum_beat" }
|
|
20254
|
+
]
|
|
20255
|
+
},
|
|
20256
|
+
{
|
|
20257
|
+
id: "objects",
|
|
20258
|
+
name: "Objects",
|
|
20259
|
+
emojis: [
|
|
20260
|
+
{ emoji: "\u{1F4F1}", name: "mobile_phone" },
|
|
20261
|
+
{ emoji: "\u{1F4BB}", name: "laptop_computer" },
|
|
20262
|
+
{ emoji: "\u{1F5A5}\uFE0F", name: "desktop_computer" },
|
|
20263
|
+
{ emoji: "\u231A", name: "watch_wrist" },
|
|
20264
|
+
{ emoji: "\u{1F4F7}", name: "camera_photo" },
|
|
20265
|
+
{ emoji: "\u{1F4A1}", name: "light_bulb" },
|
|
20266
|
+
{ emoji: "\u{1F4DA}", name: "books_pile" },
|
|
20267
|
+
{ emoji: "\u{1F4B0}", name: "money_bag" },
|
|
20268
|
+
{ emoji: "\u{1F381}", name: "gift_box" },
|
|
20269
|
+
{ emoji: "\u{1F388}", name: "balloon_red" },
|
|
20270
|
+
{ emoji: "\u{1F389}", name: "party_popper" },
|
|
20271
|
+
{ emoji: "\u{1F38A}", name: "confetti_ball" },
|
|
20272
|
+
{ emoji: "\u2709\uFE0F", name: "envelope_mail" },
|
|
20273
|
+
{ emoji: "\u{1F4E6}", name: "package_box" },
|
|
20274
|
+
{ emoji: "\u270F\uFE0F", name: "pencil_write" },
|
|
20275
|
+
{ emoji: "\u{1F512}", name: "lock_closed" },
|
|
20276
|
+
{ emoji: "\u{1F511}", name: "key_gold" },
|
|
20277
|
+
{ emoji: "\u{1F528}", name: "hammer_tool" },
|
|
20278
|
+
{ emoji: "\u{1F4A3}", name: "bomb_explode" },
|
|
20279
|
+
{ emoji: "\u{1F52B}", name: "pistol_toy" },
|
|
20280
|
+
{ emoji: "\u{1F48A}", name: "pill_capsule" },
|
|
20281
|
+
{ emoji: "\u{1F6D2}", name: "shopping_cart" }
|
|
20282
|
+
]
|
|
20283
|
+
},
|
|
20284
|
+
{
|
|
20285
|
+
id: "symbols",
|
|
20286
|
+
name: "Symbols",
|
|
20287
|
+
emojis: [
|
|
20288
|
+
{ emoji: "\u2764\uFE0F", name: "red_heart" },
|
|
20289
|
+
{ emoji: "\u{1F9E1}", name: "orange_heart" },
|
|
20290
|
+
{ emoji: "\u{1F49B}", name: "yellow_heart" },
|
|
20291
|
+
{ emoji: "\u{1F49A}", name: "green_heart" },
|
|
20292
|
+
{ emoji: "\u{1F499}", name: "blue_heart" },
|
|
20293
|
+
{ emoji: "\u{1F49C}", name: "purple_heart" },
|
|
20294
|
+
{ emoji: "\u{1F5A4}", name: "black_heart" },
|
|
20295
|
+
{ emoji: "\u{1F90D}", name: "white_heart" },
|
|
20296
|
+
{ emoji: "\u{1F90E}", name: "brown_heart" },
|
|
20297
|
+
{ emoji: "\u{1F494}", name: "broken_heart" },
|
|
20298
|
+
{ emoji: "\u2763\uFE0F", name: "heart_exclamation" },
|
|
20299
|
+
{ emoji: "\u{1F495}", name: "two_hearts" },
|
|
20300
|
+
{ emoji: "\u{1F49E}", name: "revolving_hearts" },
|
|
20301
|
+
{ emoji: "\u{1F493}", name: "beating_heart" },
|
|
20302
|
+
{ emoji: "\u{1F497}", name: "growing_heart" },
|
|
20303
|
+
{ emoji: "\u{1F496}", name: "sparkling_heart" },
|
|
20304
|
+
{ emoji: "\u{1F498}", name: "cupid_heart" },
|
|
20305
|
+
{ emoji: "\u{1F49D}", name: "gift_heart" },
|
|
20306
|
+
{ emoji: "\u{1F4AF}", name: "hundred_points" },
|
|
20307
|
+
{ emoji: "\u{1F4A2}", name: "anger_symbol" },
|
|
20308
|
+
{ emoji: "\u{1F4A5}", name: "collision_boom" },
|
|
20309
|
+
{ emoji: "\u{1F4AB}", name: "dizzy_star" },
|
|
20310
|
+
{ emoji: "\u{1F4A6}", name: "sweat_drops" },
|
|
20311
|
+
{ emoji: "\u{1F4A8}", name: "dash_away" },
|
|
20312
|
+
{ emoji: "\u{1F4A4}", name: "sleeping_zzz" },
|
|
20313
|
+
{ emoji: "\u2705", name: "check_mark" },
|
|
20314
|
+
{ emoji: "\u274C", name: "cross_mark" },
|
|
20315
|
+
{ emoji: "\u26A0\uFE0F", name: "warning_sign" },
|
|
20316
|
+
{ emoji: "\u26D4", name: "no_entry" },
|
|
20317
|
+
{ emoji: "\u{1F6AB}", name: "prohibited_sign" },
|
|
20318
|
+
{ emoji: "\u2B06\uFE0F", name: "arrow_up" },
|
|
20319
|
+
{ emoji: "\u2B07\uFE0F", name: "arrow_down" },
|
|
20320
|
+
{ emoji: "\u2B05\uFE0F", name: "arrow_left" },
|
|
20321
|
+
{ emoji: "\u27A1\uFE0F", name: "arrow_right" },
|
|
20322
|
+
{ emoji: "\u267B\uFE0F", name: "recycling_symbol" }
|
|
20323
|
+
]
|
|
20324
|
+
},
|
|
20325
|
+
{
|
|
20326
|
+
id: "flags",
|
|
20327
|
+
name: "Flags",
|
|
20328
|
+
emojis: [
|
|
20329
|
+
{ emoji: "\u{1F3C1}", name: "checkered_flag" },
|
|
20330
|
+
{ emoji: "\u{1F3F3}\uFE0F", name: "white_flag" },
|
|
20331
|
+
{ emoji: "\u{1F3F3}\uFE0F\u200D\u{1F308}", name: "rainbow_flag" },
|
|
20332
|
+
{ emoji: "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", name: "transgender_flag" },
|
|
20333
|
+
{ emoji: "\u{1F3F4}\u200D\u2620\uFE0F", name: "pirate_flag" },
|
|
20334
|
+
{ emoji: "\u{1F1E6}\u{1F1E8}", name: "flag_ascension" },
|
|
20335
|
+
{ emoji: "\u{1F1E6}\u{1F1E9}", name: "flag_andorra" },
|
|
20336
|
+
{ emoji: "\u{1F1E6}\u{1F1EA}", name: "flag_uae" },
|
|
20337
|
+
{ emoji: "\u{1F1E6}\u{1F1EB}", name: "flag_afghanistan" },
|
|
20338
|
+
{ emoji: "\u{1F1E6}\u{1F1EC}", name: "flag_antigua" },
|
|
20339
|
+
{ emoji: "\u{1F1E6}\u{1F1EE}", name: "flag_anguilla" },
|
|
20340
|
+
{ emoji: "\u{1F1E6}\u{1F1F1}", name: "flag_albania" },
|
|
20341
|
+
{ emoji: "\u{1F1E6}\u{1F1F2}", name: "flag_armenia" },
|
|
20342
|
+
{ emoji: "\u{1F1E6}\u{1F1F4}", name: "flag_angola" },
|
|
20343
|
+
{ emoji: "\u{1F1E6}\u{1F1F6}", name: "flag_antarctica" },
|
|
20344
|
+
{ emoji: "\u{1F1E6}\u{1F1F7}", name: "flag_argentina" },
|
|
20345
|
+
{ emoji: "\u{1F1E6}\u{1F1F8}", name: "flag_american_samoa" },
|
|
20346
|
+
{ emoji: "\u{1F1E6}\u{1F1F9}", name: "flag_austria" },
|
|
20347
|
+
{ emoji: "\u{1F1E6}\u{1F1FA}", name: "flag_australia" },
|
|
20348
|
+
{ emoji: "\u{1F1E6}\u{1F1FC}", name: "flag_aruba" },
|
|
20349
|
+
{ emoji: "\u{1F1E6}\u{1F1FD}", name: "flag_aland" },
|
|
20350
|
+
{ emoji: "\u{1F1E6}\u{1F1FF}", name: "flag_azerbaijan" },
|
|
20351
|
+
{ emoji: "\u{1F1E7}\u{1F1E6}", name: "flag_bosnia" },
|
|
20352
|
+
{ emoji: "\u{1F1E7}\u{1F1E7}", name: "flag_barbados" },
|
|
20353
|
+
{ emoji: "\u{1F1E7}\u{1F1E9}", name: "flag_bangladesh" },
|
|
20354
|
+
{ emoji: "\u{1F1E7}\u{1F1EA}", name: "flag_belgium" },
|
|
20355
|
+
{ emoji: "\u{1F1E7}\u{1F1EB}", name: "flag_burkina" },
|
|
20356
|
+
{ emoji: "\u{1F1E7}\u{1F1EC}", name: "flag_bulgaria" },
|
|
20357
|
+
{ emoji: "\u{1F1E7}\u{1F1ED}", name: "flag_bahrain" },
|
|
20358
|
+
{ emoji: "\u{1F1E7}\u{1F1EE}", name: "flag_burundi" },
|
|
20359
|
+
{ emoji: "\u{1F1E7}\u{1F1EF}", name: "flag_benin" },
|
|
20360
|
+
{ emoji: "\u{1F1E7}\u{1F1F1}", name: "flag_st_barthelemy" },
|
|
20361
|
+
{ emoji: "\u{1F1E7}\u{1F1F2}", name: "flag_bermuda" },
|
|
20362
|
+
{ emoji: "\u{1F1E7}\u{1F1F3}", name: "flag_brunei" },
|
|
20363
|
+
{ emoji: "\u{1F1E7}\u{1F1F4}", name: "flag_bolivia" },
|
|
20364
|
+
{ emoji: "\u{1F1E7}\u{1F1F6}", name: "flag_bonaire" },
|
|
20365
|
+
{ emoji: "\u{1F1E7}\u{1F1F7}", name: "flag_brazil" },
|
|
20366
|
+
{ emoji: "\u{1F1E7}\u{1F1F8}", name: "flag_bahamas" },
|
|
20367
|
+
{ emoji: "\u{1F1E7}\u{1F1F9}", name: "flag_bhutan" },
|
|
20368
|
+
{ emoji: "\u{1F1E7}\u{1F1FB}", name: "flag_bouvet" },
|
|
20369
|
+
{ emoji: "\u{1F1E7}\u{1F1FC}", name: "flag_botswana" },
|
|
20370
|
+
{ emoji: "\u{1F1E7}\u{1F1FE}", name: "flag_belarus" },
|
|
20371
|
+
{ emoji: "\u{1F1E7}\u{1F1FF}", name: "flag_belize" },
|
|
20372
|
+
{ emoji: "\u{1F1E8}\u{1F1E6}", name: "flag_canada" },
|
|
20373
|
+
{ emoji: "\u{1F1E8}\u{1F1E8}", name: "flag_cocos" },
|
|
20374
|
+
{ emoji: "\u{1F1E8}\u{1F1E9}", name: "flag_congo_dr" },
|
|
20375
|
+
{ emoji: "\u{1F1E8}\u{1F1EB}", name: "flag_central_africa" },
|
|
20376
|
+
{ emoji: "\u{1F1E8}\u{1F1EC}", name: "flag_congo" },
|
|
20377
|
+
{ emoji: "\u{1F1E8}\u{1F1ED}", name: "flag_switzerland" },
|
|
20378
|
+
{ emoji: "\u{1F1E8}\u{1F1EE}", name: "flag_cote_divoire" },
|
|
20379
|
+
{ emoji: "\u{1F1E8}\u{1F1F0}", name: "flag_cook_islands" },
|
|
20380
|
+
{ emoji: "\u{1F1E8}\u{1F1F1}", name: "flag_chile" },
|
|
20381
|
+
{ emoji: "\u{1F1E8}\u{1F1F2}", name: "flag_cameroon" },
|
|
20382
|
+
{ emoji: "\u{1F1E8}\u{1F1F3}", name: "flag_china" },
|
|
20383
|
+
{ emoji: "\u{1F1E8}\u{1F1F4}", name: "flag_colombia" },
|
|
20384
|
+
{ emoji: "\u{1F1E8}\u{1F1F5}", name: "flag_clipperton" },
|
|
20385
|
+
{ emoji: "\u{1F1E8}\u{1F1F7}", name: "flag_costa_rica" },
|
|
20386
|
+
{ emoji: "\u{1F1E8}\u{1F1FA}", name: "flag_cuba" },
|
|
20387
|
+
{ emoji: "\u{1F1E8}\u{1F1FB}", name: "flag_cape_verde" },
|
|
20388
|
+
{ emoji: "\u{1F1E8}\u{1F1FC}", name: "flag_curacao" },
|
|
20389
|
+
{ emoji: "\u{1F1E8}\u{1F1FD}", name: "flag_christmas_island" },
|
|
20390
|
+
{ emoji: "\u{1F1E8}\u{1F1FE}", name: "flag_cyprus" },
|
|
20391
|
+
{ emoji: "\u{1F1E8}\u{1F1FF}", name: "flag_czechia" },
|
|
20392
|
+
{ emoji: "\u{1F1E9}\u{1F1EA}", name: "flag_germany" },
|
|
20393
|
+
{ emoji: "\u{1F1E9}\u{1F1EC}", name: "flag_diego_garcia" },
|
|
20394
|
+
{ emoji: "\u{1F1E9}\u{1F1EF}", name: "flag_djibouti" },
|
|
20395
|
+
{ emoji: "\u{1F1E9}\u{1F1F0}", name: "flag_denmark" },
|
|
20396
|
+
{ emoji: "\u{1F1E9}\u{1F1F2}", name: "flag_dominica" },
|
|
20397
|
+
{ emoji: "\u{1F1E9}\u{1F1F4}", name: "flag_dominican_rep" },
|
|
20398
|
+
{ emoji: "\u{1F1E9}\u{1F1FF}", name: "flag_algeria" },
|
|
20399
|
+
{ emoji: "\u{1F1EA}\u{1F1E8}", name: "flag_ecuador" },
|
|
20400
|
+
{ emoji: "\u{1F1EA}\u{1F1EA}", name: "flag_estonia" },
|
|
20401
|
+
{ emoji: "\u{1F1EA}\u{1F1EC}", name: "flag_egypt" },
|
|
20402
|
+
{ emoji: "\u{1F1EA}\u{1F1ED}", name: "flag_western_sahara" },
|
|
20403
|
+
{ emoji: "\u{1F1EA}\u{1F1F7}", name: "flag_eritrea" },
|
|
20404
|
+
{ emoji: "\u{1F1EA}\u{1F1F8}", name: "flag_spain" },
|
|
20405
|
+
{ emoji: "\u{1F1EA}\u{1F1F9}", name: "flag_ethiopia" },
|
|
20406
|
+
{ emoji: "\u{1F1EA}\u{1F1FA}", name: "flag_eu" },
|
|
20407
|
+
{ emoji: "\u{1F1EB}\u{1F1EE}", name: "flag_finland" },
|
|
20408
|
+
{ emoji: "\u{1F1EB}\u{1F1EF}", name: "flag_fiji" },
|
|
20409
|
+
{ emoji: "\u{1F1EB}\u{1F1F0}", name: "flag_falkland" },
|
|
20410
|
+
{ emoji: "\u{1F1EB}\u{1F1F2}", name: "flag_micronesia" },
|
|
20411
|
+
{ emoji: "\u{1F1EB}\u{1F1F4}", name: "flag_faroe" },
|
|
20412
|
+
{ emoji: "\u{1F1EB}\u{1F1F7}", name: "flag_france" },
|
|
20413
|
+
{ emoji: "\u{1F1EC}\u{1F1E6}", name: "flag_gabon" },
|
|
20414
|
+
{ emoji: "\u{1F1EC}\u{1F1E7}", name: "flag_uk" },
|
|
20415
|
+
{ emoji: "\u{1F1EC}\u{1F1E9}", name: "flag_grenada" },
|
|
20416
|
+
{ emoji: "\u{1F1EC}\u{1F1EA}", name: "flag_georgia" },
|
|
20417
|
+
{ emoji: "\u{1F1EC}\u{1F1EB}", name: "flag_french_guiana" },
|
|
20418
|
+
{ emoji: "\u{1F1EC}\u{1F1EC}", name: "flag_guernsey" },
|
|
20419
|
+
{ emoji: "\u{1F1EC}\u{1F1ED}", name: "flag_ghana" },
|
|
20420
|
+
{ emoji: "\u{1F1EC}\u{1F1EE}", name: "flag_gibraltar" },
|
|
20421
|
+
{ emoji: "\u{1F1EC}\u{1F1F1}", name: "flag_greenland" },
|
|
20422
|
+
{ emoji: "\u{1F1EC}\u{1F1F2}", name: "flag_gambia" },
|
|
20423
|
+
{ emoji: "\u{1F1EC}\u{1F1F3}", name: "flag_guinea" },
|
|
20424
|
+
{ emoji: "\u{1F1EC}\u{1F1F5}", name: "flag_guadeloupe" },
|
|
20425
|
+
{ emoji: "\u{1F1EC}\u{1F1F6}", name: "flag_equatorial_guinea" },
|
|
20426
|
+
{ emoji: "\u{1F1EC}\u{1F1F7}", name: "flag_greece" },
|
|
20427
|
+
{ emoji: "\u{1F1EC}\u{1F1F8}", name: "flag_south_georgia" },
|
|
20428
|
+
{ emoji: "\u{1F1EC}\u{1F1F9}", name: "flag_guatemala" },
|
|
20429
|
+
{ emoji: "\u{1F1EC}\u{1F1FA}", name: "flag_guam" },
|
|
20430
|
+
{ emoji: "\u{1F1EC}\u{1F1FC}", name: "flag_guinea_bissau" },
|
|
20431
|
+
{ emoji: "\u{1F1EC}\u{1F1FE}", name: "flag_guyana" },
|
|
20432
|
+
{ emoji: "\u{1F1ED}\u{1F1F0}", name: "flag_hong_kong" },
|
|
20433
|
+
{ emoji: "\u{1F1ED}\u{1F1F2}", name: "flag_heard_island" },
|
|
20434
|
+
{ emoji: "\u{1F1ED}\u{1F1F3}", name: "flag_honduras" },
|
|
20435
|
+
{ emoji: "\u{1F1ED}\u{1F1F7}", name: "flag_croatia" },
|
|
20436
|
+
{ emoji: "\u{1F1ED}\u{1F1F9}", name: "flag_haiti" },
|
|
20437
|
+
{ emoji: "\u{1F1ED}\u{1F1FA}", name: "flag_hungary" },
|
|
20438
|
+
{ emoji: "\u{1F1EE}\u{1F1E8}", name: "flag_canary_islands" },
|
|
20439
|
+
{ emoji: "\u{1F1EE}\u{1F1E9}", name: "flag_indonesia" },
|
|
20440
|
+
{ emoji: "\u{1F1EE}\u{1F1EA}", name: "flag_ireland" },
|
|
20441
|
+
{ emoji: "\u{1F1EE}\u{1F1F1}", name: "flag_israel" },
|
|
20442
|
+
{ emoji: "\u{1F1EE}\u{1F1F2}", name: "flag_isle_of_man" },
|
|
20443
|
+
{ emoji: "\u{1F1EE}\u{1F1F3}", name: "flag_india" },
|
|
20444
|
+
{ emoji: "\u{1F1EE}\u{1F1F4}", name: "flag_british_indian_ocean" },
|
|
20445
|
+
{ emoji: "\u{1F1EE}\u{1F1F6}", name: "flag_iraq" },
|
|
20446
|
+
{ emoji: "\u{1F1EE}\u{1F1F7}", name: "flag_iran" },
|
|
20447
|
+
{ emoji: "\u{1F1EE}\u{1F1F8}", name: "flag_iceland" },
|
|
20448
|
+
{ emoji: "\u{1F1EE}\u{1F1F9}", name: "flag_italy" },
|
|
20449
|
+
{ emoji: "\u{1F1EF}\u{1F1EA}", name: "flag_jersey" },
|
|
20450
|
+
{ emoji: "\u{1F1EF}\u{1F1F2}", name: "flag_jamaica" },
|
|
20451
|
+
{ emoji: "\u{1F1EF}\u{1F1F4}", name: "flag_jordan" },
|
|
20452
|
+
{ emoji: "\u{1F1EF}\u{1F1F5}", name: "flag_japan" },
|
|
20453
|
+
{ emoji: "\u{1F1F0}\u{1F1EA}", name: "flag_kenya" },
|
|
20454
|
+
{ emoji: "\u{1F1F0}\u{1F1EC}", name: "flag_kyrgyzstan" },
|
|
20455
|
+
{ emoji: "\u{1F1F0}\u{1F1ED}", name: "flag_cambodia" },
|
|
20456
|
+
{ emoji: "\u{1F1F0}\u{1F1EE}", name: "flag_kiribati" },
|
|
20457
|
+
{ emoji: "\u{1F1F0}\u{1F1F2}", name: "flag_comoros" },
|
|
20458
|
+
{ emoji: "\u{1F1F0}\u{1F1F3}", name: "flag_st_kitts" },
|
|
20459
|
+
{ emoji: "\u{1F1F0}\u{1F1F5}", name: "flag_north_korea" },
|
|
20460
|
+
{ emoji: "\u{1F1F0}\u{1F1F7}", name: "flag_south_korea" },
|
|
20461
|
+
{ emoji: "\u{1F1F0}\u{1F1FC}", name: "flag_kuwait" },
|
|
20462
|
+
{ emoji: "\u{1F1F0}\u{1F1FE}", name: "flag_cayman" },
|
|
20463
|
+
{ emoji: "\u{1F1F0}\u{1F1FF}", name: "flag_kazakhstan" },
|
|
20464
|
+
{ emoji: "\u{1F1F1}\u{1F1E6}", name: "flag_laos" },
|
|
20465
|
+
{ emoji: "\u{1F1F1}\u{1F1E7}", name: "flag_lebanon" },
|
|
20466
|
+
{ emoji: "\u{1F1F1}\u{1F1E8}", name: "flag_st_lucia" },
|
|
20467
|
+
{ emoji: "\u{1F1F1}\u{1F1EE}", name: "flag_liechtenstein" },
|
|
20468
|
+
{ emoji: "\u{1F1F1}\u{1F1F0}", name: "flag_sri_lanka" },
|
|
20469
|
+
{ emoji: "\u{1F1F1}\u{1F1F7}", name: "flag_liberia" },
|
|
20470
|
+
{ emoji: "\u{1F1F1}\u{1F1F8}", name: "flag_lesotho" },
|
|
20471
|
+
{ emoji: "\u{1F1F1}\u{1F1F9}", name: "flag_lithuania" },
|
|
20472
|
+
{ emoji: "\u{1F1F1}\u{1F1FA}", name: "flag_luxembourg" },
|
|
20473
|
+
{ emoji: "\u{1F1F1}\u{1F1FB}", name: "flag_latvia" },
|
|
20474
|
+
{ emoji: "\u{1F1F1}\u{1F1FE}", name: "flag_libya" },
|
|
20475
|
+
{ emoji: "\u{1F1F2}\u{1F1E6}", name: "flag_morocco" },
|
|
20476
|
+
{ emoji: "\u{1F1F2}\u{1F1E8}", name: "flag_monaco" },
|
|
20477
|
+
{ emoji: "\u{1F1F2}\u{1F1E9}", name: "flag_moldova" },
|
|
20478
|
+
{ emoji: "\u{1F1F2}\u{1F1EA}", name: "flag_montenegro" },
|
|
20479
|
+
{ emoji: "\u{1F1F2}\u{1F1EB}", name: "flag_st_martin" },
|
|
20480
|
+
{ emoji: "\u{1F1F2}\u{1F1EC}", name: "flag_madagascar" },
|
|
20481
|
+
{ emoji: "\u{1F1F2}\u{1F1ED}", name: "flag_marshall_islands" },
|
|
20482
|
+
{ emoji: "\u{1F1F2}\u{1F1F0}", name: "flag_north_macedonia" },
|
|
20483
|
+
{ emoji: "\u{1F1F2}\u{1F1F1}", name: "flag_mali" },
|
|
20484
|
+
{ emoji: "\u{1F1F2}\u{1F1F2}", name: "flag_myanmar" },
|
|
20485
|
+
{ emoji: "\u{1F1F2}\u{1F1F3}", name: "flag_mongolia" },
|
|
20486
|
+
{ emoji: "\u{1F1F2}\u{1F1F4}", name: "flag_macau" },
|
|
20487
|
+
{ emoji: "\u{1F1F2}\u{1F1F5}", name: "flag_northern_mariana" },
|
|
20488
|
+
{ emoji: "\u{1F1F2}\u{1F1F6}", name: "flag_martinique" },
|
|
20489
|
+
{ emoji: "\u{1F1F2}\u{1F1F7}", name: "flag_mauritania" },
|
|
20490
|
+
{ emoji: "\u{1F1F2}\u{1F1F8}", name: "flag_montserrat" },
|
|
20491
|
+
{ emoji: "\u{1F1F2}\u{1F1F9}", name: "flag_malta" },
|
|
20492
|
+
{ emoji: "\u{1F1F2}\u{1F1FA}", name: "flag_mauritius" },
|
|
20493
|
+
{ emoji: "\u{1F1F2}\u{1F1FB}", name: "flag_maldives" },
|
|
20494
|
+
{ emoji: "\u{1F1F2}\u{1F1FC}", name: "flag_malawi" },
|
|
20495
|
+
{ emoji: "\u{1F1F2}\u{1F1FD}", name: "flag_mexico" },
|
|
20496
|
+
{ emoji: "\u{1F1F2}\u{1F1FE}", name: "flag_malaysia" },
|
|
20497
|
+
{ emoji: "\u{1F1F2}\u{1F1FF}", name: "flag_mozambique" },
|
|
20498
|
+
{ emoji: "\u{1F1F3}\u{1F1E6}", name: "flag_namibia" },
|
|
20499
|
+
{ emoji: "\u{1F1F3}\u{1F1E8}", name: "flag_new_caledonia" },
|
|
20500
|
+
{ emoji: "\u{1F1F3}\u{1F1EA}", name: "flag_niger" },
|
|
20501
|
+
{ emoji: "\u{1F1F3}\u{1F1EB}", name: "flag_norfolk" },
|
|
20502
|
+
{ emoji: "\u{1F1F3}\u{1F1EC}", name: "flag_nigeria" },
|
|
20503
|
+
{ emoji: "\u{1F1F3}\u{1F1EE}", name: "flag_nicaragua" },
|
|
20504
|
+
{ emoji: "\u{1F1F3}\u{1F1F1}", name: "flag_netherlands" },
|
|
20505
|
+
{ emoji: "\u{1F1F3}\u{1F1F4}", name: "flag_norway" },
|
|
20506
|
+
{ emoji: "\u{1F1F3}\u{1F1F5}", name: "flag_nepal" },
|
|
20507
|
+
{ emoji: "\u{1F1F3}\u{1F1F7}", name: "flag_nauru" },
|
|
20508
|
+
{ emoji: "\u{1F1F3}\u{1F1FA}", name: "flag_niue" },
|
|
20509
|
+
{ emoji: "\u{1F1F3}\u{1F1FF}", name: "flag_new_zealand" },
|
|
20510
|
+
{ emoji: "\u{1F1F4}\u{1F1F2}", name: "flag_oman" },
|
|
20511
|
+
{ emoji: "\u{1F1F5}\u{1F1E6}", name: "flag_panama" },
|
|
20512
|
+
{ emoji: "\u{1F1F5}\u{1F1EA}", name: "flag_peru" },
|
|
20513
|
+
{ emoji: "\u{1F1F5}\u{1F1EB}", name: "flag_french_polynesia" },
|
|
20514
|
+
{ emoji: "\u{1F1F5}\u{1F1EC}", name: "flag_papua_new_guinea" },
|
|
20515
|
+
{ emoji: "\u{1F1F5}\u{1F1ED}", name: "flag_philippines" },
|
|
20516
|
+
{ emoji: "\u{1F1F5}\u{1F1F0}", name: "flag_pakistan" },
|
|
20517
|
+
{ emoji: "\u{1F1F5}\u{1F1F1}", name: "flag_poland" },
|
|
20518
|
+
{ emoji: "\u{1F1F5}\u{1F1F2}", name: "flag_st_pierre" },
|
|
20519
|
+
{ emoji: "\u{1F1F5}\u{1F1F3}", name: "flag_pitcairn" },
|
|
20520
|
+
{ emoji: "\u{1F1F5}\u{1F1F7}", name: "flag_puerto_rico" },
|
|
20521
|
+
{ emoji: "\u{1F1F5}\u{1F1F8}", name: "flag_palestine" },
|
|
20522
|
+
{ emoji: "\u{1F1F5}\u{1F1F9}", name: "flag_portugal" },
|
|
20523
|
+
{ emoji: "\u{1F1F5}\u{1F1FC}", name: "flag_palau" },
|
|
20524
|
+
{ emoji: "\u{1F1F5}\u{1F1FE}", name: "flag_paraguay" },
|
|
20525
|
+
{ emoji: "\u{1F1F6}\u{1F1E6}", name: "flag_qatar" },
|
|
20526
|
+
{ emoji: "\u{1F1F7}\u{1F1EA}", name: "flag_reunion" },
|
|
20527
|
+
{ emoji: "\u{1F1F7}\u{1F1F4}", name: "flag_romania" },
|
|
20528
|
+
{ emoji: "\u{1F1F7}\u{1F1F8}", name: "flag_serbia" },
|
|
20529
|
+
{ emoji: "\u{1F1F7}\u{1F1FA}", name: "flag_russia" },
|
|
20530
|
+
{ emoji: "\u{1F1F7}\u{1F1FC}", name: "flag_rwanda" },
|
|
20531
|
+
{ emoji: "\u{1F1F8}\u{1F1E6}", name: "flag_saudi_arabia" },
|
|
20532
|
+
{ emoji: "\u{1F1F8}\u{1F1E7}", name: "flag_solomon_islands" },
|
|
20533
|
+
{ emoji: "\u{1F1F8}\u{1F1E8}", name: "flag_seychelles" },
|
|
20534
|
+
{ emoji: "\u{1F1F8}\u{1F1E9}", name: "flag_sudan" },
|
|
20535
|
+
{ emoji: "\u{1F1F8}\u{1F1EA}", name: "flag_sweden" },
|
|
20536
|
+
{ emoji: "\u{1F1F8}\u{1F1EC}", name: "flag_singapore" },
|
|
20537
|
+
{ emoji: "\u{1F1F8}\u{1F1ED}", name: "flag_st_helena" },
|
|
20538
|
+
{ emoji: "\u{1F1F8}\u{1F1EE}", name: "flag_slovenia" },
|
|
20539
|
+
{ emoji: "\u{1F1F8}\u{1F1EF}", name: "flag_svalbard" },
|
|
20540
|
+
{ emoji: "\u{1F1F8}\u{1F1F0}", name: "flag_slovakia" },
|
|
20541
|
+
{ emoji: "\u{1F1F8}\u{1F1F1}", name: "flag_sierra_leone" },
|
|
20542
|
+
{ emoji: "\u{1F1F8}\u{1F1F2}", name: "flag_san_marino" },
|
|
20543
|
+
{ emoji: "\u{1F1F8}\u{1F1F3}", name: "flag_senegal" },
|
|
20544
|
+
{ emoji: "\u{1F1F8}\u{1F1F4}", name: "flag_somalia" },
|
|
20545
|
+
{ emoji: "\u{1F1F8}\u{1F1F7}", name: "flag_suriname" },
|
|
20546
|
+
{ emoji: "\u{1F1F8}\u{1F1F8}", name: "flag_south_sudan" },
|
|
20547
|
+
{ emoji: "\u{1F1F8}\u{1F1F9}", name: "flag_sao_tome" },
|
|
20548
|
+
{ emoji: "\u{1F1F8}\u{1F1FB}", name: "flag_el_salvador" },
|
|
20549
|
+
{ emoji: "\u{1F1F8}\u{1F1FD}", name: "flag_sint_maarten" },
|
|
20550
|
+
{ emoji: "\u{1F1F8}\u{1F1FE}", name: "flag_syria" },
|
|
20551
|
+
{ emoji: "\u{1F1F8}\u{1F1FF}", name: "flag_eswatini" },
|
|
20552
|
+
{ emoji: "\u{1F1F9}\u{1F1E6}", name: "flag_tristan" },
|
|
20553
|
+
{ emoji: "\u{1F1F9}\u{1F1E8}", name: "flag_turks_caicos" },
|
|
20554
|
+
{ emoji: "\u{1F1F9}\u{1F1E9}", name: "flag_chad" },
|
|
20555
|
+
{ emoji: "\u{1F1F9}\u{1F1EB}", name: "flag_french_southern" },
|
|
20556
|
+
{ emoji: "\u{1F1F9}\u{1F1EC}", name: "flag_togo" },
|
|
20557
|
+
{ emoji: "\u{1F1F9}\u{1F1ED}", name: "flag_thailand" },
|
|
20558
|
+
{ emoji: "\u{1F1F9}\u{1F1EF}", name: "flag_tajikistan" },
|
|
20559
|
+
{ emoji: "\u{1F1F9}\u{1F1F0}", name: "flag_tokelau" },
|
|
20560
|
+
{ emoji: "\u{1F1F9}\u{1F1F1}", name: "flag_timor_leste" },
|
|
20561
|
+
{ emoji: "\u{1F1F9}\u{1F1F2}", name: "flag_turkmenistan" },
|
|
20562
|
+
{ emoji: "\u{1F1F9}\u{1F1F3}", name: "flag_tunisia" },
|
|
20563
|
+
{ emoji: "\u{1F1F9}\u{1F1F4}", name: "flag_tonga" },
|
|
20564
|
+
{ emoji: "\u{1F1F9}\u{1F1F7}", name: "flag_turkey" },
|
|
20565
|
+
{ emoji: "\u{1F1F9}\u{1F1F9}", name: "flag_trinidad" },
|
|
20566
|
+
{ emoji: "\u{1F1F9}\u{1F1FB}", name: "flag_tuvalu" },
|
|
20567
|
+
{ emoji: "\u{1F1F9}\u{1F1FC}", name: "flag_taiwan" },
|
|
20568
|
+
{ emoji: "\u{1F1F9}\u{1F1FF}", name: "flag_tanzania" },
|
|
20569
|
+
{ emoji: "\u{1F1FA}\u{1F1E6}", name: "flag_ukraine" },
|
|
20570
|
+
{ emoji: "\u{1F1FA}\u{1F1EC}", name: "flag_uganda" },
|
|
20571
|
+
{ emoji: "\u{1F1FA}\u{1F1F2}", name: "flag_us_outlying" },
|
|
20572
|
+
{ emoji: "\u{1F1FA}\u{1F1F3}", name: "flag_un" },
|
|
20573
|
+
{ emoji: "\u{1F1FA}\u{1F1F8}", name: "flag_usa" },
|
|
20574
|
+
{ emoji: "\u{1F1FA}\u{1F1FE}", name: "flag_uruguay" },
|
|
20575
|
+
{ emoji: "\u{1F1FA}\u{1F1FF}", name: "flag_uzbekistan" },
|
|
20576
|
+
{ emoji: "\u{1F1FB}\u{1F1E6}", name: "flag_vatican" },
|
|
20577
|
+
{ emoji: "\u{1F1FB}\u{1F1E8}", name: "flag_st_vincent" },
|
|
20578
|
+
{ emoji: "\u{1F1FB}\u{1F1EA}", name: "flag_venezuela" },
|
|
20579
|
+
{ emoji: "\u{1F1FB}\u{1F1EC}", name: "flag_bvi" },
|
|
20580
|
+
{ emoji: "\u{1F1FB}\u{1F1EE}", name: "flag_usvi" },
|
|
20581
|
+
{ emoji: "\u{1F1FB}\u{1F1F3}", name: "flag_vietnam" },
|
|
20582
|
+
{ emoji: "\u{1F1FB}\u{1F1FA}", name: "flag_vanuatu" },
|
|
20583
|
+
{ emoji: "\u{1F1FC}\u{1F1EB}", name: "flag_wallis" },
|
|
20584
|
+
{ emoji: "\u{1F1FC}\u{1F1F8}", name: "flag_samoa" },
|
|
20585
|
+
{ emoji: "\u{1F1FD}\u{1F1F0}", name: "flag_kosovo" },
|
|
20586
|
+
{ emoji: "\u{1F1FE}\u{1F1EA}", name: "flag_yemen" },
|
|
20587
|
+
{ emoji: "\u{1F1FE}\u{1F1F9}", name: "flag_mayotte" },
|
|
20588
|
+
{ emoji: "\u{1F1FF}\u{1F1E6}", name: "flag_south_africa" },
|
|
20589
|
+
{ emoji: "\u{1F1FF}\u{1F1F2}", name: "flag_zambia" },
|
|
20590
|
+
{ emoji: "\u{1F1FF}\u{1F1FC}", name: "flag_zimbabwe" }
|
|
20591
|
+
]
|
|
20592
|
+
}
|
|
20593
|
+
];
|
|
20594
|
+
|
|
20595
|
+
// ../../components/ui/UEditor/emoji-suggestion.tsx
|
|
20596
|
+
import { jsx as jsx76, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
20597
|
+
var EmojiList = forwardRef14((props, ref) => {
|
|
20598
|
+
const [selectedIndex, setSelectedIndex] = useState48(0);
|
|
20599
|
+
useEffect29(() => {
|
|
20600
|
+
setSelectedIndex(0);
|
|
20601
|
+
}, [props.items]);
|
|
20602
|
+
useImperativeHandle2(ref, () => ({
|
|
20603
|
+
onKeyDown: ({ event }) => {
|
|
20604
|
+
if (event.key === "ArrowUp") {
|
|
20605
|
+
setSelectedIndex((prev) => (prev + props.items.length - 1) % props.items.length);
|
|
20606
|
+
return true;
|
|
20607
|
+
}
|
|
20608
|
+
if (event.key === "ArrowDown") {
|
|
20609
|
+
setSelectedIndex((prev) => (prev + 1) % props.items.length);
|
|
20610
|
+
return true;
|
|
20611
|
+
}
|
|
20612
|
+
if (event.key === "ArrowLeft") {
|
|
20613
|
+
setSelectedIndex((prev) => Math.max(0, prev - 8));
|
|
20614
|
+
return true;
|
|
20615
|
+
}
|
|
20616
|
+
if (event.key === "ArrowRight") {
|
|
20617
|
+
setSelectedIndex((prev) => Math.min(props.items.length - 1, prev + 8));
|
|
20618
|
+
return true;
|
|
20619
|
+
}
|
|
20620
|
+
if (event.key === "Enter") {
|
|
20621
|
+
const item = props.items[selectedIndex];
|
|
20622
|
+
if (item) {
|
|
20623
|
+
props.command(item);
|
|
20624
|
+
}
|
|
20625
|
+
return true;
|
|
20626
|
+
}
|
|
20627
|
+
return false;
|
|
20628
|
+
}
|
|
20629
|
+
}));
|
|
20630
|
+
if (props.items.length === 0) {
|
|
20631
|
+
return /* @__PURE__ */ jsx76("div", { className: "w-80 p-4 text-center text-sm text-muted-foreground bg-card border border-border rounded-2xl shadow-lg", children: "No emoji found" });
|
|
20632
|
+
}
|
|
20633
|
+
return /* @__PURE__ */ jsxs68("div", { className: "w-80 max-h-80 overflow-y-auto bg-card border border-border rounded-2xl shadow-lg", children: [
|
|
20634
|
+
/* @__PURE__ */ jsx76("div", { className: "px-3 py-2 border-b bg-muted/30", children: /* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2", children: [
|
|
20635
|
+
/* @__PURE__ */ jsx76(Smile, { className: "w-4 h-4 text-primary" }),
|
|
20636
|
+
/* @__PURE__ */ jsx76("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: "Emoji" })
|
|
20637
|
+
] }) }),
|
|
20638
|
+
/* @__PURE__ */ jsxs68("div", { className: "p-3", children: [
|
|
20639
|
+
/* @__PURE__ */ jsx76("div", { className: "grid grid-cols-8 gap-1", children: props.items.slice(0, 64).map((item, index) => /* @__PURE__ */ jsx76(
|
|
20640
|
+
"button",
|
|
20641
|
+
{
|
|
20642
|
+
type: "button",
|
|
20643
|
+
onClick: () => props.command(item),
|
|
20644
|
+
className: cn(
|
|
20645
|
+
"w-9 h-9 flex items-center justify-center rounded-lg text-xl transition-colors",
|
|
20646
|
+
selectedIndex === index ? "bg-primary/10 ring-2 ring-primary/30" : "hover:bg-accent"
|
|
20647
|
+
),
|
|
20648
|
+
title: item.name.replace(/_/g, " "),
|
|
20649
|
+
children: item.emoji
|
|
20650
|
+
},
|
|
20651
|
+
item.name
|
|
20652
|
+
)) }),
|
|
20653
|
+
props.items.length > 64 && /* @__PURE__ */ jsxs68("div", { className: "mt-2 text-xs text-center text-muted-foreground", children: [
|
|
20654
|
+
"Showing first 64 of ",
|
|
20655
|
+
props.items.length,
|
|
20656
|
+
" emojis"
|
|
20657
|
+
] })
|
|
20658
|
+
] })
|
|
20659
|
+
] });
|
|
20660
|
+
});
|
|
20661
|
+
EmojiList.displayName = "EmojiList";
|
|
20662
|
+
var getEmojiSuggestionItems = ({ query }) => {
|
|
20663
|
+
const allEmojis = EMOJI_LIST.flatMap((category) => category.emojis);
|
|
20664
|
+
if (!query.trim()) {
|
|
20665
|
+
return allEmojis.slice(0, 64);
|
|
20666
|
+
}
|
|
20667
|
+
const searchQuery = query.toLowerCase();
|
|
20668
|
+
return allEmojis.filter(
|
|
20669
|
+
(emoji) => emoji.name.toLowerCase().includes(searchQuery) || emoji.emoji.includes(query)
|
|
20670
|
+
);
|
|
20671
|
+
};
|
|
20672
|
+
var EmojiSuggestion = Extension3.create({
|
|
20673
|
+
name: "emojiSuggestion",
|
|
20674
|
+
addProseMirrorPlugins() {
|
|
20675
|
+
return [
|
|
20676
|
+
Suggestion2({
|
|
20677
|
+
editor: this.editor,
|
|
20678
|
+
char: ":",
|
|
20679
|
+
pluginKey: new PluginKey("emojiSuggestion"),
|
|
20680
|
+
command: ({ editor, range, props }) => {
|
|
20681
|
+
editor.chain().focus().deleteRange(range).insertContent(props.emoji).run();
|
|
20682
|
+
},
|
|
20683
|
+
items: getEmojiSuggestionItems,
|
|
20684
|
+
render: () => {
|
|
20685
|
+
let component;
|
|
20686
|
+
let popup;
|
|
20687
|
+
return {
|
|
20688
|
+
onStart: (props) => {
|
|
20689
|
+
component = new ReactRenderer2(EmojiList, {
|
|
20690
|
+
props,
|
|
20691
|
+
editor: props.editor
|
|
20692
|
+
});
|
|
20693
|
+
if (!props.clientRect) {
|
|
20694
|
+
return;
|
|
20695
|
+
}
|
|
20696
|
+
popup = tippy2("body", {
|
|
20697
|
+
getReferenceClientRect: props.clientRect,
|
|
20698
|
+
appendTo: () => document.body,
|
|
20699
|
+
content: component.element,
|
|
20700
|
+
showOnCreate: true,
|
|
20701
|
+
interactive: true,
|
|
20702
|
+
trigger: "manual",
|
|
20703
|
+
placement: "bottom-start"
|
|
20704
|
+
});
|
|
20705
|
+
},
|
|
20706
|
+
onUpdate(props) {
|
|
20707
|
+
component?.updateProps(props);
|
|
20708
|
+
if (!props.clientRect) {
|
|
20709
|
+
return;
|
|
20710
|
+
}
|
|
20711
|
+
popup?.[0]?.setProps({
|
|
20712
|
+
getReferenceClientRect: props.clientRect
|
|
20713
|
+
});
|
|
20714
|
+
},
|
|
20715
|
+
onKeyDown(props) {
|
|
20716
|
+
if (props.event.key === "Escape") {
|
|
20717
|
+
popup?.[0]?.hide();
|
|
20718
|
+
return true;
|
|
20719
|
+
}
|
|
20720
|
+
return component?.ref?.onKeyDown(props) ?? false;
|
|
20721
|
+
},
|
|
20722
|
+
onExit() {
|
|
20723
|
+
popup?.[0]?.destroy();
|
|
20724
|
+
component?.destroy();
|
|
20725
|
+
}
|
|
20726
|
+
};
|
|
20727
|
+
}
|
|
20728
|
+
})
|
|
20729
|
+
];
|
|
20730
|
+
}
|
|
20731
|
+
});
|
|
20732
|
+
|
|
19821
20733
|
// ../../components/ui/UEditor/resizable-image.tsx
|
|
19822
|
-
import { useEffect as
|
|
20734
|
+
import { useEffect as useEffect30, useRef as useRef25, useState as useState49 } from "react";
|
|
19823
20735
|
import Image3 from "@tiptap/extension-image";
|
|
19824
20736
|
import { mergeAttributes } from "@tiptap/core";
|
|
19825
20737
|
import { NodeViewWrapper, ReactNodeViewRenderer } from "@tiptap/react";
|
|
19826
|
-
import { jsx as
|
|
20738
|
+
import { jsx as jsx77, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
19827
20739
|
var MIN_IMAGE_SIZE_PX = 40;
|
|
19828
20740
|
var AXIS_LOCK_THRESHOLD_PX = 4;
|
|
19829
20741
|
function toNullableNumber(value) {
|
|
@@ -19841,13 +20753,13 @@ function ResizableImageNodeView(props) {
|
|
|
19841
20753
|
const { node, selected, updateAttributes, editor, getPos } = props;
|
|
19842
20754
|
const wrapperRef = useRef25(null);
|
|
19843
20755
|
const imgRef = useRef25(null);
|
|
19844
|
-
const [isHovered, setIsHovered] =
|
|
19845
|
-
const [isResizing, setIsResizing] =
|
|
20756
|
+
const [isHovered, setIsHovered] = useState49(false);
|
|
20757
|
+
const [isResizing, setIsResizing] = useState49(false);
|
|
19846
20758
|
const widthAttr = toNullableNumber(node.attrs["width"]);
|
|
19847
20759
|
const heightAttr = toNullableNumber(node.attrs["height"]);
|
|
19848
20760
|
const textAlign = String(node.attrs["textAlign"] ?? "");
|
|
19849
20761
|
const dragStateRef = useRef25(null);
|
|
19850
|
-
|
|
20762
|
+
useEffect30(() => {
|
|
19851
20763
|
const img = imgRef.current;
|
|
19852
20764
|
if (!img) return;
|
|
19853
20765
|
img.style.width = widthAttr ? `${widthAttr}px` : "";
|
|
@@ -19941,7 +20853,7 @@ function ResizableImageNodeView(props) {
|
|
|
19941
20853
|
const showHandle = selected || isHovered || isResizing;
|
|
19942
20854
|
const wrapperAlignClass = textAlign === "center" ? "mx-auto" : textAlign === "right" ? "ml-auto" : textAlign === "justify" ? "mx-auto" : "";
|
|
19943
20855
|
const wrapperWidthClass = "w-fit";
|
|
19944
|
-
return /* @__PURE__ */
|
|
20856
|
+
return /* @__PURE__ */ jsxs69(
|
|
19945
20857
|
NodeViewWrapper,
|
|
19946
20858
|
{
|
|
19947
20859
|
as: "div",
|
|
@@ -19955,7 +20867,7 @@ function ResizableImageNodeView(props) {
|
|
|
19955
20867
|
},
|
|
19956
20868
|
contentEditable: false,
|
|
19957
20869
|
children: [
|
|
19958
|
-
/* @__PURE__ */
|
|
20870
|
+
/* @__PURE__ */ jsx77(
|
|
19959
20871
|
"img",
|
|
19960
20872
|
{
|
|
19961
20873
|
ref: imgRef,
|
|
@@ -19974,7 +20886,7 @@ function ResizableImageNodeView(props) {
|
|
|
19974
20886
|
}
|
|
19975
20887
|
}
|
|
19976
20888
|
),
|
|
19977
|
-
showHandle && /* @__PURE__ */
|
|
20889
|
+
showHandle && /* @__PURE__ */ jsx77(
|
|
19978
20890
|
"div",
|
|
19979
20891
|
{
|
|
19980
20892
|
"aria-hidden": "true",
|
|
@@ -20134,12 +21046,13 @@ function buildUEditorExtensions({
|
|
|
20134
21046
|
emptyEditorClass: "is-editor-empty",
|
|
20135
21047
|
emptyNodeClass: "is-empty"
|
|
20136
21048
|
}),
|
|
20137
|
-
SlashCommand
|
|
21049
|
+
SlashCommand,
|
|
21050
|
+
EmojiSuggestion
|
|
20138
21051
|
];
|
|
20139
21052
|
}
|
|
20140
21053
|
|
|
20141
21054
|
// ../../components/ui/UEditor/toolbar.tsx
|
|
20142
|
-
import
|
|
21055
|
+
import React68, { useRef as useRef28, useState as useState52 } from "react";
|
|
20143
21056
|
import { useTranslations as useTranslations4 } from "next-intl";
|
|
20144
21057
|
import {
|
|
20145
21058
|
AlignCenter,
|
|
@@ -20165,6 +21078,7 @@ import {
|
|
|
20165
21078
|
Palette as Palette2,
|
|
20166
21079
|
Quote as QuoteIcon,
|
|
20167
21080
|
Redo as RedoIcon,
|
|
21081
|
+
Smile as Smile3,
|
|
20168
21082
|
Strikethrough as StrikethroughIcon,
|
|
20169
21083
|
Subscript as SubscriptIcon,
|
|
20170
21084
|
Superscript as SuperscriptIcon,
|
|
@@ -20180,7 +21094,7 @@ import {
|
|
|
20180
21094
|
import { useMemo as useMemo23 } from "react";
|
|
20181
21095
|
import { useTranslations as useTranslations2 } from "next-intl";
|
|
20182
21096
|
import { X as X15 } from "lucide-react";
|
|
20183
|
-
import { jsx as
|
|
21097
|
+
import { jsx as jsx78, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
20184
21098
|
var useEditorColors = () => {
|
|
20185
21099
|
const t = useTranslations2("UEditor");
|
|
20186
21100
|
const textColors = useMemo23(
|
|
@@ -20217,9 +21131,9 @@ var EditorColorPalette = ({
|
|
|
20217
21131
|
currentColor,
|
|
20218
21132
|
onSelect,
|
|
20219
21133
|
label
|
|
20220
|
-
}) => /* @__PURE__ */
|
|
20221
|
-
/* @__PURE__ */
|
|
20222
|
-
/* @__PURE__ */
|
|
21134
|
+
}) => /* @__PURE__ */ jsxs70("div", { className: "p-2", children: [
|
|
21135
|
+
/* @__PURE__ */ jsx78("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider px-2", children: label }),
|
|
21136
|
+
/* @__PURE__ */ jsx78("div", { className: "grid grid-cols-4 gap-1.5 mt-2", children: colors.map((c) => /* @__PURE__ */ jsxs70(
|
|
20223
21137
|
"button",
|
|
20224
21138
|
{
|
|
20225
21139
|
type: "button",
|
|
@@ -20232,8 +21146,8 @@ var EditorColorPalette = ({
|
|
|
20232
21146
|
style: { backgroundColor: c.color || "transparent" },
|
|
20233
21147
|
title: c.name,
|
|
20234
21148
|
children: [
|
|
20235
|
-
c.color === "" && /* @__PURE__ */
|
|
20236
|
-
c.color === "inherit" && /* @__PURE__ */
|
|
21149
|
+
c.color === "" && /* @__PURE__ */ jsx78(X15, { className: "w-4 h-4 text-muted-foreground" }),
|
|
21150
|
+
c.color === "inherit" && /* @__PURE__ */ jsx78("span", { className: "text-xs font-medium", children: "A" })
|
|
20237
21151
|
]
|
|
20238
21152
|
},
|
|
20239
21153
|
c.name
|
|
@@ -20241,10 +21155,10 @@ var EditorColorPalette = ({
|
|
|
20241
21155
|
] });
|
|
20242
21156
|
|
|
20243
21157
|
// ../../components/ui/UEditor/inputs.tsx
|
|
20244
|
-
import { useEffect as
|
|
21158
|
+
import { useEffect as useEffect31, useRef as useRef26, useState as useState50 } from "react";
|
|
20245
21159
|
import { useTranslations as useTranslations3 } from "next-intl";
|
|
20246
21160
|
import { Check as Check10, X as X16 } from "lucide-react";
|
|
20247
|
-
import { jsx as
|
|
21161
|
+
import { jsx as jsx79, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
20248
21162
|
function normalizeUrl(raw) {
|
|
20249
21163
|
const url = raw.trim();
|
|
20250
21164
|
if (!url) return "";
|
|
@@ -20258,9 +21172,9 @@ var LinkInput = ({
|
|
|
20258
21172
|
initialUrl = ""
|
|
20259
21173
|
}) => {
|
|
20260
21174
|
const t = useTranslations3("UEditor");
|
|
20261
|
-
const [url, setUrl] =
|
|
21175
|
+
const [url, setUrl] = useState50(initialUrl);
|
|
20262
21176
|
const inputRef = useRef26(null);
|
|
20263
|
-
|
|
21177
|
+
useEffect31(() => {
|
|
20264
21178
|
inputRef.current?.focus();
|
|
20265
21179
|
inputRef.current?.select();
|
|
20266
21180
|
}, []);
|
|
@@ -20269,8 +21183,8 @@ var LinkInput = ({
|
|
|
20269
21183
|
const normalized = normalizeUrl(url);
|
|
20270
21184
|
if (normalized) onSubmit(normalized);
|
|
20271
21185
|
};
|
|
20272
|
-
return /* @__PURE__ */
|
|
20273
|
-
/* @__PURE__ */
|
|
21186
|
+
return /* @__PURE__ */ jsxs71("form", { onSubmit: handleSubmit, className: "flex items-center gap-2 p-2", children: [
|
|
21187
|
+
/* @__PURE__ */ jsx79(
|
|
20274
21188
|
"input",
|
|
20275
21189
|
{
|
|
20276
21190
|
ref: inputRef,
|
|
@@ -20281,16 +21195,16 @@ var LinkInput = ({
|
|
|
20281
21195
|
className: "flex-1 px-3 py-2 text-sm bg-muted/50 border-0 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary/20"
|
|
20282
21196
|
}
|
|
20283
21197
|
),
|
|
20284
|
-
/* @__PURE__ */
|
|
20285
|
-
/* @__PURE__ */
|
|
21198
|
+
/* @__PURE__ */ jsx79("button", { type: "submit", className: "p-2 rounded-lg bg-primary text-primary-foreground hover:bg-primary/90 transition-colors", children: /* @__PURE__ */ jsx79(Check10, { className: "w-4 h-4" }) }),
|
|
21199
|
+
/* @__PURE__ */ jsx79("button", { type: "button", onClick: onCancel, className: "p-2 rounded-lg hover:bg-muted transition-colors text-muted-foreground", children: /* @__PURE__ */ jsx79(X16, { className: "w-4 h-4" }) })
|
|
20286
21200
|
] });
|
|
20287
21201
|
};
|
|
20288
21202
|
var ImageInput = ({ onSubmit, onCancel }) => {
|
|
20289
21203
|
const t = useTranslations3("UEditor");
|
|
20290
|
-
const [url, setUrl] =
|
|
20291
|
-
const [alt, setAlt] =
|
|
21204
|
+
const [url, setUrl] = useState50("");
|
|
21205
|
+
const [alt, setAlt] = useState50("");
|
|
20292
21206
|
const inputRef = useRef26(null);
|
|
20293
|
-
|
|
21207
|
+
useEffect31(() => {
|
|
20294
21208
|
inputRef.current?.focus();
|
|
20295
21209
|
}, []);
|
|
20296
21210
|
const handleSubmit = (e) => {
|
|
@@ -20299,10 +21213,10 @@ var ImageInput = ({ onSubmit, onCancel }) => {
|
|
|
20299
21213
|
onSubmit(url, alt);
|
|
20300
21214
|
}
|
|
20301
21215
|
};
|
|
20302
|
-
return /* @__PURE__ */
|
|
20303
|
-
/* @__PURE__ */
|
|
20304
|
-
/* @__PURE__ */
|
|
20305
|
-
/* @__PURE__ */
|
|
21216
|
+
return /* @__PURE__ */ jsxs71("form", { onSubmit: handleSubmit, className: "p-3 space-y-3", children: [
|
|
21217
|
+
/* @__PURE__ */ jsxs71("div", { children: [
|
|
21218
|
+
/* @__PURE__ */ jsx79("label", { className: "text-xs font-medium text-muted-foreground", children: t("imageInput.urlLabel") }),
|
|
21219
|
+
/* @__PURE__ */ jsx79(
|
|
20306
21220
|
"input",
|
|
20307
21221
|
{
|
|
20308
21222
|
ref: inputRef,
|
|
@@ -20314,9 +21228,9 @@ var ImageInput = ({ onSubmit, onCancel }) => {
|
|
|
20314
21228
|
}
|
|
20315
21229
|
)
|
|
20316
21230
|
] }),
|
|
20317
|
-
/* @__PURE__ */
|
|
20318
|
-
/* @__PURE__ */
|
|
20319
|
-
/* @__PURE__ */
|
|
21231
|
+
/* @__PURE__ */ jsxs71("div", { children: [
|
|
21232
|
+
/* @__PURE__ */ jsx79("label", { className: "text-xs font-medium text-muted-foreground", children: t("imageInput.altLabel") }),
|
|
21233
|
+
/* @__PURE__ */ jsx79(
|
|
20320
21234
|
"input",
|
|
20321
21235
|
{
|
|
20322
21236
|
type: "text",
|
|
@@ -20327,8 +21241,8 @@ var ImageInput = ({ onSubmit, onCancel }) => {
|
|
|
20327
21241
|
}
|
|
20328
21242
|
)
|
|
20329
21243
|
] }),
|
|
20330
|
-
/* @__PURE__ */
|
|
20331
|
-
/* @__PURE__ */
|
|
21244
|
+
/* @__PURE__ */ jsxs71("div", { className: "flex gap-2", children: [
|
|
21245
|
+
/* @__PURE__ */ jsx79(
|
|
20332
21246
|
"button",
|
|
20333
21247
|
{
|
|
20334
21248
|
type: "submit",
|
|
@@ -20337,13 +21251,195 @@ var ImageInput = ({ onSubmit, onCancel }) => {
|
|
|
20337
21251
|
children: t("imageInput.addBtn")
|
|
20338
21252
|
}
|
|
20339
21253
|
),
|
|
20340
|
-
/* @__PURE__ */
|
|
21254
|
+
/* @__PURE__ */ jsx79("button", { type: "button", onClick: onCancel, className: "px-4 py-2 rounded-lg hover:bg-muted transition-colors text-muted-foreground", children: t("imageInput.cancelBtn") })
|
|
20341
21255
|
] })
|
|
20342
21256
|
] });
|
|
20343
21257
|
};
|
|
20344
21258
|
|
|
21259
|
+
// ../../components/ui/UEditor/emoji-picker.tsx
|
|
21260
|
+
import { useState as useState51, useMemo as useMemo24, useRef as useRef27, useEffect as useEffect32 } from "react";
|
|
21261
|
+
import { Search as Search5, X as X17, Smile as Smile2, Leaf, Utensils, Dumbbell, Lightbulb, Hash, Flag } from "lucide-react";
|
|
21262
|
+
import { jsx as jsx80, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
21263
|
+
var CATEGORY_ICONS = {
|
|
21264
|
+
"smileys_people": Smile2,
|
|
21265
|
+
"animals_nature": Leaf,
|
|
21266
|
+
"food_drink": Utensils,
|
|
21267
|
+
"activity": Dumbbell,
|
|
21268
|
+
"objects": Lightbulb,
|
|
21269
|
+
"symbols": Hash,
|
|
21270
|
+
"flags": Flag
|
|
21271
|
+
};
|
|
21272
|
+
var EmojiPicker = ({ onSelect, onClose }) => {
|
|
21273
|
+
const [search, setSearch] = useState51("");
|
|
21274
|
+
const [activeCategory, setActiveCategory] = useState51(EMOJI_LIST[0]?.id || "");
|
|
21275
|
+
const scrollContainerRef = useRef27(null);
|
|
21276
|
+
const categoryRefs = useRef27({});
|
|
21277
|
+
const isUserScrolling = useRef27(false);
|
|
21278
|
+
const filteredCategories = useMemo24(() => {
|
|
21279
|
+
if (!search.trim()) return EMOJI_LIST;
|
|
21280
|
+
const query = search.toLowerCase();
|
|
21281
|
+
return EMOJI_LIST.map((category) => ({
|
|
21282
|
+
...category,
|
|
21283
|
+
emojis: category.emojis.filter(
|
|
21284
|
+
(emoji) => emoji.name.toLowerCase().includes(query) || emoji.emoji.includes(search)
|
|
21285
|
+
)
|
|
21286
|
+
})).filter((category) => category.emojis.length > 0);
|
|
21287
|
+
}, [search]);
|
|
21288
|
+
const handleEmojiClick = (emoji) => {
|
|
21289
|
+
onSelect(emoji);
|
|
21290
|
+
setSearch("");
|
|
21291
|
+
};
|
|
21292
|
+
useEffect32(() => {
|
|
21293
|
+
if (search) return;
|
|
21294
|
+
const container = scrollContainerRef.current;
|
|
21295
|
+
if (!container) return;
|
|
21296
|
+
const handleScroll = () => {
|
|
21297
|
+
if (!isUserScrolling.current) return;
|
|
21298
|
+
const scrollTop = container.scrollTop;
|
|
21299
|
+
const containerHeight = container.clientHeight;
|
|
21300
|
+
let maxVisibility = 0;
|
|
21301
|
+
let mostVisibleCategory = EMOJI_LIST[0]?.id || "";
|
|
21302
|
+
EMOJI_LIST.forEach((category) => {
|
|
21303
|
+
const element = categoryRefs.current[category.id];
|
|
21304
|
+
if (!element) return;
|
|
21305
|
+
const rect = element.getBoundingClientRect();
|
|
21306
|
+
const containerRect = container.getBoundingClientRect();
|
|
21307
|
+
const visibleTop = Math.max(rect.top, containerRect.top);
|
|
21308
|
+
const visibleBottom = Math.min(rect.bottom, containerRect.bottom);
|
|
21309
|
+
const visibleHeight = Math.max(0, visibleBottom - visibleTop);
|
|
21310
|
+
if (visibleHeight > maxVisibility) {
|
|
21311
|
+
maxVisibility = visibleHeight;
|
|
21312
|
+
mostVisibleCategory = category.id;
|
|
21313
|
+
}
|
|
21314
|
+
});
|
|
21315
|
+
if (mostVisibleCategory !== activeCategory) {
|
|
21316
|
+
setActiveCategory(mostVisibleCategory);
|
|
21317
|
+
}
|
|
21318
|
+
};
|
|
21319
|
+
container.addEventListener("scroll", handleScroll);
|
|
21320
|
+
return () => container.removeEventListener("scroll", handleScroll);
|
|
21321
|
+
}, [search, activeCategory]);
|
|
21322
|
+
const handleCategoryClick = (categoryId) => {
|
|
21323
|
+
const element = categoryRefs.current[categoryId];
|
|
21324
|
+
if (!element || !scrollContainerRef.current) return;
|
|
21325
|
+
isUserScrolling.current = false;
|
|
21326
|
+
setActiveCategory(categoryId);
|
|
21327
|
+
element.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
21328
|
+
setTimeout(() => {
|
|
21329
|
+
isUserScrolling.current = true;
|
|
21330
|
+
}, 500);
|
|
21331
|
+
};
|
|
21332
|
+
useEffect32(() => {
|
|
21333
|
+
isUserScrolling.current = true;
|
|
21334
|
+
}, []);
|
|
21335
|
+
return /* @__PURE__ */ jsxs72("div", { className: "w-96 bg-card border border-border rounded-2xl shadow-xl overflow-hidden flex flex-col max-h-128", children: [
|
|
21336
|
+
/* @__PURE__ */ jsx80("div", { className: "p-3 border-b bg-muted/30 shrink-0", children: /* @__PURE__ */ jsxs72("div", { className: "relative", children: [
|
|
21337
|
+
/* @__PURE__ */ jsx80(Search5, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground" }),
|
|
21338
|
+
/* @__PURE__ */ jsx80(
|
|
21339
|
+
"input",
|
|
21340
|
+
{
|
|
21341
|
+
type: "text",
|
|
21342
|
+
placeholder: "T\xECm ki\u1EBFm bi\u1EC3u t\u01B0\u1EE3ng c\u1EA3m x\xFAc",
|
|
21343
|
+
value: search,
|
|
21344
|
+
onChange: (e) => setSearch(e.target.value),
|
|
21345
|
+
className: cn(
|
|
21346
|
+
"w-full pl-9 pr-9 py-2 rounded-lg",
|
|
21347
|
+
"bg-background border border-border",
|
|
21348
|
+
"text-sm placeholder:text-muted-foreground",
|
|
21349
|
+
"focus:outline-none focus:ring-2 focus:ring-primary/20"
|
|
21350
|
+
)
|
|
21351
|
+
}
|
|
21352
|
+
),
|
|
21353
|
+
search && /* @__PURE__ */ jsx80(
|
|
21354
|
+
"button",
|
|
21355
|
+
{
|
|
21356
|
+
onClick: () => setSearch(""),
|
|
21357
|
+
className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
|
|
21358
|
+
children: /* @__PURE__ */ jsx80(X17, { className: "w-4 h-4" })
|
|
21359
|
+
}
|
|
21360
|
+
)
|
|
21361
|
+
] }) }),
|
|
21362
|
+
/* @__PURE__ */ jsx80(
|
|
21363
|
+
"div",
|
|
21364
|
+
{
|
|
21365
|
+
ref: scrollContainerRef,
|
|
21366
|
+
className: "overflow-y-auto px-3 py-2 shrink",
|
|
21367
|
+
style: { height: "20rem" },
|
|
21368
|
+
children: search ? (
|
|
21369
|
+
// Search Results
|
|
21370
|
+
filteredCategories.length > 0 ? filteredCategories.map((category) => /* @__PURE__ */ jsxs72("div", { className: "mb-4", children: [
|
|
21371
|
+
/* @__PURE__ */ jsx80("div", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2 sticky top-0 bg-card py-1", children: category.name }),
|
|
21372
|
+
/* @__PURE__ */ jsx80("div", { className: "grid grid-cols-9 gap-1", children: category.emojis.map((emoji) => /* @__PURE__ */ jsx80(
|
|
21373
|
+
"button",
|
|
21374
|
+
{
|
|
21375
|
+
onClick: () => handleEmojiClick(emoji.emoji),
|
|
21376
|
+
className: cn(
|
|
21377
|
+
"w-9 h-9 flex items-center justify-center rounded-lg",
|
|
21378
|
+
"text-2xl hover:bg-accent transition-colors",
|
|
21379
|
+
"focus:outline-none focus:ring-2 focus:ring-primary/20"
|
|
21380
|
+
),
|
|
21381
|
+
title: emoji.name.replace(/_/g, " "),
|
|
21382
|
+
children: emoji.emoji
|
|
21383
|
+
},
|
|
21384
|
+
emoji.name
|
|
21385
|
+
)) })
|
|
21386
|
+
] }, category.id)) : /* @__PURE__ */ jsxs72("div", { className: "flex flex-col items-center justify-center h-full text-center", children: [
|
|
21387
|
+
/* @__PURE__ */ jsx80("div", { className: "text-4xl mb-2", children: "\u{1F50D}" }),
|
|
21388
|
+
/* @__PURE__ */ jsx80("div", { className: "text-sm font-medium text-muted-foreground", children: "Kh\xF4ng t\xECm th\u1EA5y emoji" }),
|
|
21389
|
+
/* @__PURE__ */ jsx80("div", { className: "text-xs text-muted-foreground mt-1", children: "Th\u1EED t\u1EEB kh\xF3a kh\xE1c" })
|
|
21390
|
+
] })
|
|
21391
|
+
) : (
|
|
21392
|
+
// All Categories - Messenger Style
|
|
21393
|
+
/* @__PURE__ */ jsx80("div", { className: "space-y-4", children: EMOJI_LIST.map((category) => /* @__PURE__ */ jsxs72(
|
|
21394
|
+
"div",
|
|
21395
|
+
{
|
|
21396
|
+
ref: (el) => {
|
|
21397
|
+
categoryRefs.current[category.id] = el;
|
|
21398
|
+
},
|
|
21399
|
+
children: [
|
|
21400
|
+
/* @__PURE__ */ jsx80("div", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2 sticky top-0 bg-card py-1 z-10", children: category.name }),
|
|
21401
|
+
/* @__PURE__ */ jsx80("div", { className: "grid grid-cols-9 gap-1", children: category.emojis.map((emoji) => /* @__PURE__ */ jsx80(
|
|
21402
|
+
"button",
|
|
21403
|
+
{
|
|
21404
|
+
onClick: () => handleEmojiClick(emoji.emoji),
|
|
21405
|
+
className: cn(
|
|
21406
|
+
"w-9 h-9 flex items-center justify-center rounded-lg",
|
|
21407
|
+
"text-2xl hover:bg-accent transition-colors",
|
|
21408
|
+
"focus:outline-none focus:ring-2 focus:ring-primary/20"
|
|
21409
|
+
),
|
|
21410
|
+
title: emoji.name.replace(/_/g, " "),
|
|
21411
|
+
children: emoji.emoji
|
|
21412
|
+
},
|
|
21413
|
+
emoji.name
|
|
21414
|
+
)) })
|
|
21415
|
+
]
|
|
21416
|
+
},
|
|
21417
|
+
category.id
|
|
21418
|
+
)) })
|
|
21419
|
+
)
|
|
21420
|
+
}
|
|
21421
|
+
),
|
|
21422
|
+
!search && /* @__PURE__ */ jsx80("div", { className: "flex items-center justify-around px-2 py-2 border-t bg-muted/30 shrink-0", children: EMOJI_LIST.map((category) => {
|
|
21423
|
+
const IconComponent = CATEGORY_ICONS[category.id] || Smile2;
|
|
21424
|
+
return /* @__PURE__ */ jsx80(
|
|
21425
|
+
"button",
|
|
21426
|
+
{
|
|
21427
|
+
onClick: () => handleCategoryClick(category.id),
|
|
21428
|
+
className: cn(
|
|
21429
|
+
"p-2 rounded-lg transition-colors",
|
|
21430
|
+
activeCategory === category.id ? "text-primary bg-primary/10" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
21431
|
+
),
|
|
21432
|
+
title: category.name,
|
|
21433
|
+
children: /* @__PURE__ */ jsx80(IconComponent, { className: "w-5 h-5" })
|
|
21434
|
+
},
|
|
21435
|
+
category.id
|
|
21436
|
+
);
|
|
21437
|
+
}) })
|
|
21438
|
+
] });
|
|
21439
|
+
};
|
|
21440
|
+
|
|
20345
21441
|
// ../../components/ui/UEditor/toolbar.tsx
|
|
20346
|
-
import { Fragment as Fragment29, jsx as
|
|
21442
|
+
import { Fragment as Fragment29, jsx as jsx81, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
20347
21443
|
function fileToDataUrl2(file) {
|
|
20348
21444
|
return new Promise((resolve, reject) => {
|
|
20349
21445
|
const reader = new FileReader();
|
|
@@ -20352,8 +21448,8 @@ function fileToDataUrl2(file) {
|
|
|
20352
21448
|
reader.readAsDataURL(file);
|
|
20353
21449
|
});
|
|
20354
21450
|
}
|
|
20355
|
-
var ToolbarButton =
|
|
20356
|
-
const button = /* @__PURE__ */
|
|
21451
|
+
var ToolbarButton = React68.forwardRef(({ onClick, onMouseDown, active, disabled, children, title, className }, ref) => {
|
|
21452
|
+
const button = /* @__PURE__ */ jsx81(
|
|
20357
21453
|
"button",
|
|
20358
21454
|
{
|
|
20359
21455
|
ref,
|
|
@@ -20376,12 +21472,12 @@ var ToolbarButton = React66.forwardRef(({ onClick, onMouseDown, active, disabled
|
|
|
20376
21472
|
}
|
|
20377
21473
|
);
|
|
20378
21474
|
if (title) {
|
|
20379
|
-
return /* @__PURE__ */
|
|
21475
|
+
return /* @__PURE__ */ jsx81(Tooltip, { content: title, placement: "top", delay: { open: 200, close: 0 }, children: button });
|
|
20380
21476
|
}
|
|
20381
21477
|
return button;
|
|
20382
21478
|
});
|
|
20383
21479
|
ToolbarButton.displayName = "ToolbarButton";
|
|
20384
|
-
var ToolbarDivider = () => /* @__PURE__ */
|
|
21480
|
+
var ToolbarDivider = () => /* @__PURE__ */ jsx81("div", { className: "w-px h-6 bg-border/50 mx-1" });
|
|
20385
21481
|
var EditorToolbar = ({
|
|
20386
21482
|
editor,
|
|
20387
21483
|
variant,
|
|
@@ -20390,10 +21486,10 @@ var EditorToolbar = ({
|
|
|
20390
21486
|
}) => {
|
|
20391
21487
|
const t = useTranslations4("UEditor");
|
|
20392
21488
|
const { textColors, highlightColors } = useEditorColors();
|
|
20393
|
-
const [showImageInput, setShowImageInput] =
|
|
20394
|
-
const fileInputRef =
|
|
20395
|
-
const [isUploadingImage, setIsUploadingImage] =
|
|
20396
|
-
const [imageUploadError, setImageUploadError] =
|
|
21489
|
+
const [showImageInput, setShowImageInput] = useState52(false);
|
|
21490
|
+
const fileInputRef = useRef28(null);
|
|
21491
|
+
const [isUploadingImage, setIsUploadingImage] = useState52(false);
|
|
21492
|
+
const [imageUploadError, setImageUploadError] = useState52(null);
|
|
20397
21493
|
const insertImageFiles = async (files) => {
|
|
20398
21494
|
if (files.length === 0) return;
|
|
20399
21495
|
setIsUploadingImage(true);
|
|
@@ -20412,31 +21508,31 @@ var EditorToolbar = ({
|
|
|
20412
21508
|
setIsUploadingImage(false);
|
|
20413
21509
|
};
|
|
20414
21510
|
if (variant === "minimal") {
|
|
20415
|
-
return /* @__PURE__ */
|
|
20416
|
-
/* @__PURE__ */
|
|
20417
|
-
/* @__PURE__ */
|
|
20418
|
-
/* @__PURE__ */
|
|
21511
|
+
return /* @__PURE__ */ jsxs73("div", { className: "flex items-center gap-1 p-2 border-b bg-muted/30", children: [
|
|
21512
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleBold().run(), active: editor.isActive("bold"), title: t("toolbar.bold"), children: /* @__PURE__ */ jsx81(BoldIcon, { className: "w-4 h-4" }) }),
|
|
21513
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleItalic().run(), active: editor.isActive("italic"), title: t("toolbar.italic"), children: /* @__PURE__ */ jsx81(ItalicIcon, { className: "w-4 h-4" }) }),
|
|
21514
|
+
/* @__PURE__ */ jsx81(
|
|
20419
21515
|
ToolbarButton,
|
|
20420
21516
|
{
|
|
20421
21517
|
onClick: () => editor.chain().focus().toggleBulletList().run(),
|
|
20422
21518
|
active: editor.isActive("bulletList"),
|
|
20423
21519
|
title: t("toolbar.bulletList"),
|
|
20424
|
-
children: /* @__PURE__ */
|
|
21520
|
+
children: /* @__PURE__ */ jsx81(ListIcon, { className: "w-4 h-4" })
|
|
20425
21521
|
}
|
|
20426
21522
|
)
|
|
20427
21523
|
] });
|
|
20428
21524
|
}
|
|
20429
|
-
return /* @__PURE__ */
|
|
20430
|
-
/* @__PURE__ */
|
|
21525
|
+
return /* @__PURE__ */ jsxs73("div", { className: "flex flex-wrap items-center gap-1 p-2 border-b bg-linear-to-r from-muted/30 to-transparent", children: [
|
|
21526
|
+
/* @__PURE__ */ jsxs73(
|
|
20431
21527
|
DropdownMenu,
|
|
20432
21528
|
{
|
|
20433
|
-
trigger: /* @__PURE__ */
|
|
21529
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20434
21530
|
}, title: t("toolbar.textStyle"), className: "px-2 w-auto gap-1", children: [
|
|
20435
|
-
/* @__PURE__ */
|
|
20436
|
-
/* @__PURE__ */
|
|
21531
|
+
/* @__PURE__ */ jsx81(Type2, { className: "w-4 h-4" }),
|
|
21532
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20437
21533
|
] }),
|
|
20438
21534
|
children: [
|
|
20439
|
-
/* @__PURE__ */
|
|
21535
|
+
/* @__PURE__ */ jsx81(
|
|
20440
21536
|
DropdownMenuItem,
|
|
20441
21537
|
{
|
|
20442
21538
|
icon: Type2,
|
|
@@ -20445,7 +21541,7 @@ var EditorToolbar = ({
|
|
|
20445
21541
|
active: editor.isActive("paragraph")
|
|
20446
21542
|
}
|
|
20447
21543
|
),
|
|
20448
|
-
/* @__PURE__ */
|
|
21544
|
+
/* @__PURE__ */ jsx81(
|
|
20449
21545
|
DropdownMenuItem,
|
|
20450
21546
|
{
|
|
20451
21547
|
icon: Heading1Icon,
|
|
@@ -20455,7 +21551,7 @@ var EditorToolbar = ({
|
|
|
20455
21551
|
shortcut: "Ctrl+Alt+1"
|
|
20456
21552
|
}
|
|
20457
21553
|
),
|
|
20458
|
-
/* @__PURE__ */
|
|
21554
|
+
/* @__PURE__ */ jsx81(
|
|
20459
21555
|
DropdownMenuItem,
|
|
20460
21556
|
{
|
|
20461
21557
|
icon: Heading2Icon,
|
|
@@ -20465,7 +21561,7 @@ var EditorToolbar = ({
|
|
|
20465
21561
|
shortcut: "Ctrl+Alt+2"
|
|
20466
21562
|
}
|
|
20467
21563
|
),
|
|
20468
|
-
/* @__PURE__ */
|
|
21564
|
+
/* @__PURE__ */ jsx81(
|
|
20469
21565
|
DropdownMenuItem,
|
|
20470
21566
|
{
|
|
20471
21567
|
icon: Heading3Icon,
|
|
@@ -20478,30 +21574,30 @@ var EditorToolbar = ({
|
|
|
20478
21574
|
]
|
|
20479
21575
|
}
|
|
20480
21576
|
),
|
|
20481
|
-
/* @__PURE__ */
|
|
20482
|
-
/* @__PURE__ */
|
|
20483
|
-
/* @__PURE__ */
|
|
20484
|
-
/* @__PURE__ */
|
|
21577
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21578
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleBold().run(), active: editor.isActive("bold"), title: t("toolbar.bold"), children: /* @__PURE__ */ jsx81(BoldIcon, { className: "w-4 h-4" }) }),
|
|
21579
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleItalic().run(), active: editor.isActive("italic"), title: t("toolbar.italic"), children: /* @__PURE__ */ jsx81(ItalicIcon, { className: "w-4 h-4" }) }),
|
|
21580
|
+
/* @__PURE__ */ jsx81(
|
|
20485
21581
|
ToolbarButton,
|
|
20486
21582
|
{
|
|
20487
21583
|
onClick: () => editor.chain().focus().toggleUnderline().run(),
|
|
20488
21584
|
active: editor.isActive("underline"),
|
|
20489
21585
|
title: t("toolbar.underline"),
|
|
20490
|
-
children: /* @__PURE__ */
|
|
21586
|
+
children: /* @__PURE__ */ jsx81(UnderlineIcon, { className: "w-4 h-4" })
|
|
20491
21587
|
}
|
|
20492
21588
|
),
|
|
20493
|
-
/* @__PURE__ */
|
|
20494
|
-
/* @__PURE__ */
|
|
20495
|
-
/* @__PURE__ */
|
|
20496
|
-
/* @__PURE__ */
|
|
21589
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleStrike().run(), active: editor.isActive("strike"), title: t("toolbar.strike"), children: /* @__PURE__ */ jsx81(StrikethroughIcon, { className: "w-4 h-4" }) }),
|
|
21590
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().toggleCode().run(), active: editor.isActive("code"), title: t("toolbar.code"), children: /* @__PURE__ */ jsx81(CodeIcon, { className: "w-4 h-4" }) }),
|
|
21591
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21592
|
+
/* @__PURE__ */ jsx81(
|
|
20497
21593
|
DropdownMenu,
|
|
20498
21594
|
{
|
|
20499
|
-
trigger: /* @__PURE__ */
|
|
21595
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20500
21596
|
}, title: t("colors.textColor"), children: [
|
|
20501
|
-
/* @__PURE__ */
|
|
20502
|
-
/* @__PURE__ */
|
|
21597
|
+
/* @__PURE__ */ jsx81(Palette2, { className: "w-4 h-4" }),
|
|
21598
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20503
21599
|
] }),
|
|
20504
|
-
children: /* @__PURE__ */
|
|
21600
|
+
children: /* @__PURE__ */ jsx81(
|
|
20505
21601
|
EditorColorPalette,
|
|
20506
21602
|
{
|
|
20507
21603
|
colors: textColors,
|
|
@@ -20518,15 +21614,15 @@ var EditorToolbar = ({
|
|
|
20518
21614
|
)
|
|
20519
21615
|
}
|
|
20520
21616
|
),
|
|
20521
|
-
/* @__PURE__ */
|
|
21617
|
+
/* @__PURE__ */ jsx81(
|
|
20522
21618
|
DropdownMenu,
|
|
20523
21619
|
{
|
|
20524
|
-
trigger: /* @__PURE__ */
|
|
21620
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20525
21621
|
}, active: editor.isActive("highlight"), title: t("colors.highlight"), children: [
|
|
20526
|
-
/* @__PURE__ */
|
|
20527
|
-
/* @__PURE__ */
|
|
21622
|
+
/* @__PURE__ */ jsx81(Highlighter, { className: "w-4 h-4" }),
|
|
21623
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20528
21624
|
] }),
|
|
20529
|
-
children: /* @__PURE__ */
|
|
21625
|
+
children: /* @__PURE__ */ jsx81(
|
|
20530
21626
|
EditorColorPalette,
|
|
20531
21627
|
{
|
|
20532
21628
|
colors: highlightColors,
|
|
@@ -20543,17 +21639,33 @@ var EditorToolbar = ({
|
|
|
20543
21639
|
)
|
|
20544
21640
|
}
|
|
20545
21641
|
),
|
|
20546
|
-
/* @__PURE__ */
|
|
20547
|
-
/* @__PURE__ */
|
|
21642
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21643
|
+
/* @__PURE__ */ jsx81(
|
|
21644
|
+
DropdownMenu,
|
|
21645
|
+
{
|
|
21646
|
+
trigger: /* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => {
|
|
21647
|
+
}, title: t("toolbar.emoji"), children: /* @__PURE__ */ jsx81(Smile3, { className: "w-4 h-4" }) }),
|
|
21648
|
+
children: /* @__PURE__ */ jsx81(
|
|
21649
|
+
EmojiPicker,
|
|
21650
|
+
{
|
|
21651
|
+
onSelect: (emoji) => {
|
|
21652
|
+
editor.chain().focus().insertContent(emoji).run();
|
|
21653
|
+
}
|
|
21654
|
+
}
|
|
21655
|
+
)
|
|
21656
|
+
}
|
|
21657
|
+
),
|
|
21658
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21659
|
+
/* @__PURE__ */ jsxs73(
|
|
20548
21660
|
DropdownMenu,
|
|
20549
21661
|
{
|
|
20550
|
-
trigger: /* @__PURE__ */
|
|
21662
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20551
21663
|
}, title: t("toolbar.alignment"), children: [
|
|
20552
|
-
/* @__PURE__ */
|
|
20553
|
-
/* @__PURE__ */
|
|
21664
|
+
/* @__PURE__ */ jsx81(AlignLeft, { className: "w-4 h-4" }),
|
|
21665
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20554
21666
|
] }),
|
|
20555
21667
|
children: [
|
|
20556
|
-
/* @__PURE__ */
|
|
21668
|
+
/* @__PURE__ */ jsx81(
|
|
20557
21669
|
DropdownMenuItem,
|
|
20558
21670
|
{
|
|
20559
21671
|
icon: AlignLeft,
|
|
@@ -20562,7 +21674,7 @@ var EditorToolbar = ({
|
|
|
20562
21674
|
active: editor.isActive({ textAlign: "left" })
|
|
20563
21675
|
}
|
|
20564
21676
|
),
|
|
20565
|
-
/* @__PURE__ */
|
|
21677
|
+
/* @__PURE__ */ jsx81(
|
|
20566
21678
|
DropdownMenuItem,
|
|
20567
21679
|
{
|
|
20568
21680
|
icon: AlignCenter,
|
|
@@ -20571,7 +21683,7 @@ var EditorToolbar = ({
|
|
|
20571
21683
|
active: editor.isActive({ textAlign: "center" })
|
|
20572
21684
|
}
|
|
20573
21685
|
),
|
|
20574
|
-
/* @__PURE__ */
|
|
21686
|
+
/* @__PURE__ */ jsx81(
|
|
20575
21687
|
DropdownMenuItem,
|
|
20576
21688
|
{
|
|
20577
21689
|
icon: AlignRight,
|
|
@@ -20580,7 +21692,7 @@ var EditorToolbar = ({
|
|
|
20580
21692
|
active: editor.isActive({ textAlign: "right" })
|
|
20581
21693
|
}
|
|
20582
21694
|
),
|
|
20583
|
-
/* @__PURE__ */
|
|
21695
|
+
/* @__PURE__ */ jsx81(
|
|
20584
21696
|
DropdownMenuItem,
|
|
20585
21697
|
{
|
|
20586
21698
|
icon: AlignJustify,
|
|
@@ -20592,17 +21704,17 @@ var EditorToolbar = ({
|
|
|
20592
21704
|
]
|
|
20593
21705
|
}
|
|
20594
21706
|
),
|
|
20595
|
-
/* @__PURE__ */
|
|
20596
|
-
/* @__PURE__ */
|
|
21707
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21708
|
+
/* @__PURE__ */ jsxs73(
|
|
20597
21709
|
DropdownMenu,
|
|
20598
21710
|
{
|
|
20599
|
-
trigger: /* @__PURE__ */
|
|
21711
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20600
21712
|
}, title: t("toolbar.bulletList"), children: [
|
|
20601
|
-
/* @__PURE__ */
|
|
20602
|
-
/* @__PURE__ */
|
|
21713
|
+
/* @__PURE__ */ jsx81(ListIcon, { className: "w-4 h-4" }),
|
|
21714
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20603
21715
|
] }),
|
|
20604
21716
|
children: [
|
|
20605
|
-
/* @__PURE__ */
|
|
21717
|
+
/* @__PURE__ */ jsx81(
|
|
20606
21718
|
DropdownMenuItem,
|
|
20607
21719
|
{
|
|
20608
21720
|
icon: ListIcon,
|
|
@@ -20612,7 +21724,7 @@ var EditorToolbar = ({
|
|
|
20612
21724
|
shortcut: "Ctrl+Shift+8"
|
|
20613
21725
|
}
|
|
20614
21726
|
),
|
|
20615
|
-
/* @__PURE__ */
|
|
21727
|
+
/* @__PURE__ */ jsx81(
|
|
20616
21728
|
DropdownMenuItem,
|
|
20617
21729
|
{
|
|
20618
21730
|
icon: ListOrderedIcon,
|
|
@@ -20622,7 +21734,7 @@ var EditorToolbar = ({
|
|
|
20622
21734
|
shortcut: "Ctrl+Shift+7"
|
|
20623
21735
|
}
|
|
20624
21736
|
),
|
|
20625
|
-
/* @__PURE__ */
|
|
21737
|
+
/* @__PURE__ */ jsx81(
|
|
20626
21738
|
DropdownMenuItem,
|
|
20627
21739
|
{
|
|
20628
21740
|
icon: ListTodo2,
|
|
@@ -20635,16 +21747,16 @@ var EditorToolbar = ({
|
|
|
20635
21747
|
]
|
|
20636
21748
|
}
|
|
20637
21749
|
),
|
|
20638
|
-
/* @__PURE__ */
|
|
21750
|
+
/* @__PURE__ */ jsxs73(
|
|
20639
21751
|
DropdownMenu,
|
|
20640
21752
|
{
|
|
20641
|
-
trigger: /* @__PURE__ */
|
|
21753
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20642
21754
|
}, title: t("toolbar.quote"), children: [
|
|
20643
|
-
/* @__PURE__ */
|
|
20644
|
-
/* @__PURE__ */
|
|
21755
|
+
/* @__PURE__ */ jsx81(QuoteIcon, { className: "w-4 h-4" }),
|
|
21756
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20645
21757
|
] }),
|
|
20646
21758
|
children: [
|
|
20647
|
-
/* @__PURE__ */
|
|
21759
|
+
/* @__PURE__ */ jsx81(
|
|
20648
21760
|
DropdownMenuItem,
|
|
20649
21761
|
{
|
|
20650
21762
|
icon: QuoteIcon,
|
|
@@ -20654,7 +21766,7 @@ var EditorToolbar = ({
|
|
|
20654
21766
|
shortcut: "Ctrl+Shift+B"
|
|
20655
21767
|
}
|
|
20656
21768
|
),
|
|
20657
|
-
/* @__PURE__ */
|
|
21769
|
+
/* @__PURE__ */ jsx81(
|
|
20658
21770
|
DropdownMenuItem,
|
|
20659
21771
|
{
|
|
20660
21772
|
icon: FileCode3,
|
|
@@ -20667,15 +21779,15 @@ var EditorToolbar = ({
|
|
|
20667
21779
|
]
|
|
20668
21780
|
}
|
|
20669
21781
|
),
|
|
20670
|
-
/* @__PURE__ */
|
|
21782
|
+
/* @__PURE__ */ jsx81(
|
|
20671
21783
|
DropdownMenu,
|
|
20672
21784
|
{
|
|
20673
|
-
trigger: /* @__PURE__ */
|
|
21785
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20674
21786
|
}, title: t("toolbar.image"), children: [
|
|
20675
|
-
/* @__PURE__ */
|
|
20676
|
-
/* @__PURE__ */
|
|
21787
|
+
/* @__PURE__ */ jsx81(ImageIcon2, { className: "w-4 h-4" }),
|
|
21788
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20677
21789
|
] }),
|
|
20678
|
-
children: showImageInput ? /* @__PURE__ */
|
|
21790
|
+
children: showImageInput ? /* @__PURE__ */ jsx81(
|
|
20679
21791
|
ImageInput,
|
|
20680
21792
|
{
|
|
20681
21793
|
onSubmit: (url, alt) => {
|
|
@@ -20684,9 +21796,9 @@ var EditorToolbar = ({
|
|
|
20684
21796
|
},
|
|
20685
21797
|
onCancel: () => setShowImageInput(false)
|
|
20686
21798
|
}
|
|
20687
|
-
) : /* @__PURE__ */
|
|
20688
|
-
/* @__PURE__ */
|
|
20689
|
-
/* @__PURE__ */
|
|
21799
|
+
) : /* @__PURE__ */ jsxs73(Fragment29, { children: [
|
|
21800
|
+
/* @__PURE__ */ jsx81(DropdownMenuItem, { icon: LinkIcon, label: t("imageInput.addFromUrl"), onClick: () => setShowImageInput(true) }),
|
|
21801
|
+
/* @__PURE__ */ jsx81(
|
|
20690
21802
|
DropdownMenuItem,
|
|
20691
21803
|
{
|
|
20692
21804
|
icon: Upload3,
|
|
@@ -20695,8 +21807,8 @@ var EditorToolbar = ({
|
|
|
20695
21807
|
onClick: () => fileInputRef.current?.click()
|
|
20696
21808
|
}
|
|
20697
21809
|
),
|
|
20698
|
-
imageUploadError && /* @__PURE__ */
|
|
20699
|
-
/* @__PURE__ */
|
|
21810
|
+
imageUploadError && /* @__PURE__ */ jsx81(DropdownMenuItem, { label: imageUploadError, disabled: true, destructive: true }),
|
|
21811
|
+
/* @__PURE__ */ jsx81(
|
|
20700
21812
|
"input",
|
|
20701
21813
|
{
|
|
20702
21814
|
ref: fileInputRef,
|
|
@@ -20714,16 +21826,16 @@ var EditorToolbar = ({
|
|
|
20714
21826
|
] })
|
|
20715
21827
|
}
|
|
20716
21828
|
),
|
|
20717
|
-
/* @__PURE__ */
|
|
21829
|
+
/* @__PURE__ */ jsxs73(
|
|
20718
21830
|
DropdownMenu,
|
|
20719
21831
|
{
|
|
20720
|
-
trigger: /* @__PURE__ */
|
|
21832
|
+
trigger: /* @__PURE__ */ jsxs73(ToolbarButton, { onClick: () => {
|
|
20721
21833
|
}, title: t("toolbar.table"), children: [
|
|
20722
|
-
/* @__PURE__ */
|
|
20723
|
-
/* @__PURE__ */
|
|
21834
|
+
/* @__PURE__ */ jsx81(TableIcon, { className: "w-4 h-4" }),
|
|
21835
|
+
/* @__PURE__ */ jsx81(ChevronDown6, { className: "w-3 h-3" })
|
|
20724
21836
|
] }),
|
|
20725
21837
|
children: [
|
|
20726
|
-
/* @__PURE__ */
|
|
21838
|
+
/* @__PURE__ */ jsx81(
|
|
20727
21839
|
DropdownMenuItem,
|
|
20728
21840
|
{
|
|
20729
21841
|
icon: TableIcon,
|
|
@@ -20731,8 +21843,8 @@ var EditorToolbar = ({
|
|
|
20731
21843
|
onClick: () => editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()
|
|
20732
21844
|
}
|
|
20733
21845
|
),
|
|
20734
|
-
/* @__PURE__ */
|
|
20735
|
-
/* @__PURE__ */
|
|
21846
|
+
/* @__PURE__ */ jsx81("div", { className: "my-1 border-t" }),
|
|
21847
|
+
/* @__PURE__ */ jsx81(
|
|
20736
21848
|
DropdownMenuItem,
|
|
20737
21849
|
{
|
|
20738
21850
|
icon: ArrowDown,
|
|
@@ -20741,7 +21853,7 @@ var EditorToolbar = ({
|
|
|
20741
21853
|
disabled: !editor.can().addColumnBefore()
|
|
20742
21854
|
}
|
|
20743
21855
|
),
|
|
20744
|
-
/* @__PURE__ */
|
|
21856
|
+
/* @__PURE__ */ jsx81(
|
|
20745
21857
|
DropdownMenuItem,
|
|
20746
21858
|
{
|
|
20747
21859
|
icon: ArrowDown,
|
|
@@ -20750,7 +21862,7 @@ var EditorToolbar = ({
|
|
|
20750
21862
|
disabled: !editor.can().addColumnAfter()
|
|
20751
21863
|
}
|
|
20752
21864
|
),
|
|
20753
|
-
/* @__PURE__ */
|
|
21865
|
+
/* @__PURE__ */ jsx81(
|
|
20754
21866
|
DropdownMenuItem,
|
|
20755
21867
|
{
|
|
20756
21868
|
icon: ArrowRight,
|
|
@@ -20759,7 +21871,7 @@ var EditorToolbar = ({
|
|
|
20759
21871
|
disabled: !editor.can().addRowBefore()
|
|
20760
21872
|
}
|
|
20761
21873
|
),
|
|
20762
|
-
/* @__PURE__ */
|
|
21874
|
+
/* @__PURE__ */ jsx81(
|
|
20763
21875
|
DropdownMenuItem,
|
|
20764
21876
|
{
|
|
20765
21877
|
icon: ArrowRight,
|
|
@@ -20768,8 +21880,8 @@ var EditorToolbar = ({
|
|
|
20768
21880
|
disabled: !editor.can().addRowAfter()
|
|
20769
21881
|
}
|
|
20770
21882
|
),
|
|
20771
|
-
/* @__PURE__ */
|
|
20772
|
-
/* @__PURE__ */
|
|
21883
|
+
/* @__PURE__ */ jsx81("div", { className: "my-1 border-t" }),
|
|
21884
|
+
/* @__PURE__ */ jsx81(
|
|
20773
21885
|
DropdownMenuItem,
|
|
20774
21886
|
{
|
|
20775
21887
|
icon: Trash22,
|
|
@@ -20778,7 +21890,7 @@ var EditorToolbar = ({
|
|
|
20778
21890
|
disabled: !editor.can().deleteColumn()
|
|
20779
21891
|
}
|
|
20780
21892
|
),
|
|
20781
|
-
/* @__PURE__ */
|
|
21893
|
+
/* @__PURE__ */ jsx81(
|
|
20782
21894
|
DropdownMenuItem,
|
|
20783
21895
|
{
|
|
20784
21896
|
icon: Trash22,
|
|
@@ -20787,7 +21899,7 @@ var EditorToolbar = ({
|
|
|
20787
21899
|
disabled: !editor.can().deleteRow()
|
|
20788
21900
|
}
|
|
20789
21901
|
),
|
|
20790
|
-
/* @__PURE__ */
|
|
21902
|
+
/* @__PURE__ */ jsx81(
|
|
20791
21903
|
DropdownMenuItem,
|
|
20792
21904
|
{
|
|
20793
21905
|
icon: Trash22,
|
|
@@ -20799,33 +21911,33 @@ var EditorToolbar = ({
|
|
|
20799
21911
|
]
|
|
20800
21912
|
}
|
|
20801
21913
|
),
|
|
20802
|
-
/* @__PURE__ */
|
|
20803
|
-
/* @__PURE__ */
|
|
21914
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21915
|
+
/* @__PURE__ */ jsx81(
|
|
20804
21916
|
ToolbarButton,
|
|
20805
21917
|
{
|
|
20806
21918
|
onClick: () => editor.chain().focus().toggleSubscript().run(),
|
|
20807
21919
|
active: editor.isActive("subscript"),
|
|
20808
21920
|
title: t("toolbar.subscript"),
|
|
20809
|
-
children: /* @__PURE__ */
|
|
21921
|
+
children: /* @__PURE__ */ jsx81(SubscriptIcon, { className: "w-4 h-4" })
|
|
20810
21922
|
}
|
|
20811
21923
|
),
|
|
20812
|
-
/* @__PURE__ */
|
|
21924
|
+
/* @__PURE__ */ jsx81(
|
|
20813
21925
|
ToolbarButton,
|
|
20814
21926
|
{
|
|
20815
21927
|
onClick: () => editor.chain().focus().toggleSuperscript().run(),
|
|
20816
21928
|
active: editor.isActive("superscript"),
|
|
20817
21929
|
title: t("toolbar.superscript"),
|
|
20818
|
-
children: /* @__PURE__ */
|
|
21930
|
+
children: /* @__PURE__ */ jsx81(SuperscriptIcon, { className: "w-4 h-4" })
|
|
20819
21931
|
}
|
|
20820
21932
|
),
|
|
20821
|
-
/* @__PURE__ */
|
|
20822
|
-
/* @__PURE__ */
|
|
20823
|
-
/* @__PURE__ */
|
|
21933
|
+
/* @__PURE__ */ jsx81(ToolbarDivider, {}),
|
|
21934
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().undo().run(), disabled: !editor.can().undo(), title: t("toolbar.undo"), children: /* @__PURE__ */ jsx81(UndoIcon, { className: "w-4 h-4" }) }),
|
|
21935
|
+
/* @__PURE__ */ jsx81(ToolbarButton, { onClick: () => editor.chain().focus().redo().run(), disabled: !editor.can().redo(), title: t("toolbar.redo"), children: /* @__PURE__ */ jsx81(RedoIcon, { className: "w-4 h-4" }) })
|
|
20824
21936
|
] });
|
|
20825
21937
|
};
|
|
20826
21938
|
|
|
20827
21939
|
// ../../components/ui/UEditor/menus.tsx
|
|
20828
|
-
import { useCallback as useCallback16, useEffect as
|
|
21940
|
+
import { useCallback as useCallback16, useEffect as useEffect33, useMemo as useMemo25, useRef as useRef29, useState as useState53 } from "react";
|
|
20829
21941
|
import { createPortal as createPortal9 } from "react-dom";
|
|
20830
21942
|
import { useTranslations as useTranslations5 } from "next-intl";
|
|
20831
21943
|
import {
|
|
@@ -20851,12 +21963,12 @@ import {
|
|
|
20851
21963
|
Underline as UnderlineIcon2,
|
|
20852
21964
|
Strikethrough as StrikethroughIcon2
|
|
20853
21965
|
} from "lucide-react";
|
|
20854
|
-
import { jsx as
|
|
21966
|
+
import { jsx as jsx82, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
20855
21967
|
var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
20856
21968
|
const t = useTranslations5("UEditor");
|
|
20857
|
-
const [selectedIndex, setSelectedIndex] =
|
|
20858
|
-
const menuRef =
|
|
20859
|
-
const allCommands =
|
|
21969
|
+
const [selectedIndex, setSelectedIndex] = useState53(0);
|
|
21970
|
+
const menuRef = useRef29(null);
|
|
21971
|
+
const allCommands = useMemo25(
|
|
20860
21972
|
() => [
|
|
20861
21973
|
{
|
|
20862
21974
|
icon: Type3,
|
|
@@ -20927,15 +22039,15 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
20927
22039
|
],
|
|
20928
22040
|
[editor, t]
|
|
20929
22041
|
);
|
|
20930
|
-
const commands =
|
|
22042
|
+
const commands = useMemo25(() => {
|
|
20931
22043
|
if (!filterText) return allCommands;
|
|
20932
22044
|
const lowerFilter = filterText.toLowerCase();
|
|
20933
22045
|
return allCommands.filter((cmd) => cmd.label.toLowerCase().includes(lowerFilter) || cmd.description.toLowerCase().includes(lowerFilter));
|
|
20934
22046
|
}, [allCommands, filterText]);
|
|
20935
|
-
|
|
22047
|
+
useEffect33(() => {
|
|
20936
22048
|
setSelectedIndex(0);
|
|
20937
22049
|
}, [filterText]);
|
|
20938
|
-
|
|
22050
|
+
useEffect33(() => {
|
|
20939
22051
|
const selectedElement = menuRef.current?.querySelector(`[data-index="${selectedIndex}"]`);
|
|
20940
22052
|
selectedElement?.scrollIntoView({ block: "nearest" });
|
|
20941
22053
|
}, [selectedIndex]);
|
|
@@ -20949,7 +22061,7 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
20949
22061
|
},
|
|
20950
22062
|
[commands, onClose]
|
|
20951
22063
|
);
|
|
20952
|
-
|
|
22064
|
+
useEffect33(() => {
|
|
20953
22065
|
const handleKeyDown = (e) => {
|
|
20954
22066
|
if (commands.length === 0) return;
|
|
20955
22067
|
if (e.key === "ArrowDown") {
|
|
@@ -20970,11 +22082,11 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
20970
22082
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
20971
22083
|
}, [commands, selectedIndex, selectCommand, onClose]);
|
|
20972
22084
|
if (commands.length === 0) {
|
|
20973
|
-
return /* @__PURE__ */
|
|
22085
|
+
return /* @__PURE__ */ jsx82("div", { className: "w-72 p-4 text-center text-muted-foreground text-sm", children: t("slashCommand.noResults") });
|
|
20974
22086
|
}
|
|
20975
|
-
return /* @__PURE__ */
|
|
20976
|
-
/* @__PURE__ */
|
|
20977
|
-
/* @__PURE__ */
|
|
22087
|
+
return /* @__PURE__ */ jsxs74("div", { ref: menuRef, className: "w-72 max-h-80 overflow-y-auto", children: [
|
|
22088
|
+
/* @__PURE__ */ jsx82("div", { className: "px-3 py-2 border-b", children: /* @__PURE__ */ jsx82("span", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: t("slashCommand.basicBlocks") }) }),
|
|
22089
|
+
/* @__PURE__ */ jsx82("div", { className: "p-1", children: commands.map((cmd, index) => /* @__PURE__ */ jsxs74(
|
|
20978
22090
|
"button",
|
|
20979
22091
|
{
|
|
20980
22092
|
type: "button",
|
|
@@ -20987,19 +22099,19 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
20987
22099
|
selectedIndex === index ? "bg-accent" : "hover:bg-accent/50"
|
|
20988
22100
|
),
|
|
20989
22101
|
children: [
|
|
20990
|
-
/* @__PURE__ */
|
|
22102
|
+
/* @__PURE__ */ jsx82(
|
|
20991
22103
|
"div",
|
|
20992
22104
|
{
|
|
20993
22105
|
className: cn(
|
|
20994
22106
|
"flex items-center justify-center w-10 h-10 rounded-lg mr-3 transition-colors",
|
|
20995
22107
|
selectedIndex === index ? "bg-primary/10" : "bg-muted/50 group-hover:bg-muted"
|
|
20996
22108
|
),
|
|
20997
|
-
children: /* @__PURE__ */
|
|
22109
|
+
children: /* @__PURE__ */ jsx82(cmd.icon, { className: cn("w-5 h-5", selectedIndex === index ? "text-primary" : "text-muted-foreground") })
|
|
20998
22110
|
}
|
|
20999
22111
|
),
|
|
21000
|
-
/* @__PURE__ */
|
|
21001
|
-
/* @__PURE__ */
|
|
21002
|
-
/* @__PURE__ */
|
|
22112
|
+
/* @__PURE__ */ jsxs74("div", { className: "text-left", children: [
|
|
22113
|
+
/* @__PURE__ */ jsx82("div", { className: cn("text-sm font-medium", selectedIndex === index && "text-primary"), children: cmd.label }),
|
|
22114
|
+
/* @__PURE__ */ jsx82("div", { className: "text-xs text-muted-foreground", children: cmd.description })
|
|
21003
22115
|
] })
|
|
21004
22116
|
]
|
|
21005
22117
|
},
|
|
@@ -21009,19 +22121,19 @@ var SlashCommandMenu = ({ editor, onClose, filterText = "" }) => {
|
|
|
21009
22121
|
};
|
|
21010
22122
|
var FloatingMenuContent = ({ editor }) => {
|
|
21011
22123
|
const t = useTranslations5("UEditor");
|
|
21012
|
-
const [showCommands, setShowCommands] =
|
|
22124
|
+
const [showCommands, setShowCommands] = useState53(false);
|
|
21013
22125
|
if (showCommands) {
|
|
21014
|
-
return /* @__PURE__ */
|
|
22126
|
+
return /* @__PURE__ */ jsx82(SlashCommandMenu, { editor, onClose: () => setShowCommands(false) });
|
|
21015
22127
|
}
|
|
21016
|
-
return /* @__PURE__ */
|
|
22128
|
+
return /* @__PURE__ */ jsxs74(
|
|
21017
22129
|
"button",
|
|
21018
22130
|
{
|
|
21019
22131
|
type: "button",
|
|
21020
22132
|
onClick: () => setShowCommands(true),
|
|
21021
22133
|
className: "flex items-center gap-1 px-2 py-1.5 rounded-lg hover:bg-accent transition-all group",
|
|
21022
22134
|
children: [
|
|
21023
|
-
/* @__PURE__ */
|
|
21024
|
-
/* @__PURE__ */
|
|
22135
|
+
/* @__PURE__ */ jsx82(Plus3, { className: "w-4 h-4 text-muted-foreground group-hover:text-foreground" }),
|
|
22136
|
+
/* @__PURE__ */ jsx82("span", { className: "text-sm text-muted-foreground group-hover:text-foreground", children: t("floatingMenu.addBlock") })
|
|
21025
22137
|
]
|
|
21026
22138
|
}
|
|
21027
22139
|
);
|
|
@@ -21032,12 +22144,12 @@ var BubbleMenuContent = ({
|
|
|
21032
22144
|
}) => {
|
|
21033
22145
|
const t = useTranslations5("UEditor");
|
|
21034
22146
|
const { textColors, highlightColors } = useEditorColors();
|
|
21035
|
-
const [showLinkInput, setShowLinkInput] =
|
|
21036
|
-
const [showEditorColorPalette, setShowEditorColorPalette] =
|
|
21037
|
-
|
|
22147
|
+
const [showLinkInput, setShowLinkInput] = useState53(false);
|
|
22148
|
+
const [showEditorColorPalette, setShowEditorColorPalette] = useState53(false);
|
|
22149
|
+
useEffect33(() => {
|
|
21038
22150
|
onKeepOpenChange?.(showLinkInput);
|
|
21039
22151
|
}, [onKeepOpenChange, showLinkInput]);
|
|
21040
|
-
|
|
22152
|
+
useEffect33(() => {
|
|
21041
22153
|
if (!showLinkInput) return;
|
|
21042
22154
|
const close = () => setShowLinkInput(false);
|
|
21043
22155
|
editor.on("selectionUpdate", close);
|
|
@@ -21048,7 +22160,7 @@ var BubbleMenuContent = ({
|
|
|
21048
22160
|
};
|
|
21049
22161
|
}, [editor, showLinkInput]);
|
|
21050
22162
|
if (showLinkInput) {
|
|
21051
|
-
return /* @__PURE__ */
|
|
22163
|
+
return /* @__PURE__ */ jsx82(
|
|
21052
22164
|
LinkInput,
|
|
21053
22165
|
{
|
|
21054
22166
|
initialUrl: editor.getAttributes("link").href || "",
|
|
@@ -21065,8 +22177,8 @@ var BubbleMenuContent = ({
|
|
|
21065
22177
|
);
|
|
21066
22178
|
}
|
|
21067
22179
|
if (showEditorColorPalette) {
|
|
21068
|
-
return /* @__PURE__ */
|
|
21069
|
-
/* @__PURE__ */
|
|
22180
|
+
return /* @__PURE__ */ jsxs74("div", { className: "w-48", children: [
|
|
22181
|
+
/* @__PURE__ */ jsx82(
|
|
21070
22182
|
EditorColorPalette,
|
|
21071
22183
|
{
|
|
21072
22184
|
colors: textColors,
|
|
@@ -21081,8 +22193,8 @@ var BubbleMenuContent = ({
|
|
|
21081
22193
|
label: t("colors.textColor")
|
|
21082
22194
|
}
|
|
21083
22195
|
),
|
|
21084
|
-
/* @__PURE__ */
|
|
21085
|
-
/* @__PURE__ */
|
|
22196
|
+
/* @__PURE__ */ jsx82("div", { className: "border-t my-1" }),
|
|
22197
|
+
/* @__PURE__ */ jsx82(
|
|
21086
22198
|
EditorColorPalette,
|
|
21087
22199
|
{
|
|
21088
22200
|
colors: highlightColors,
|
|
@@ -21097,7 +22209,7 @@ var BubbleMenuContent = ({
|
|
|
21097
22209
|
label: t("colors.highlight")
|
|
21098
22210
|
}
|
|
21099
22211
|
),
|
|
21100
|
-
/* @__PURE__ */
|
|
22212
|
+
/* @__PURE__ */ jsx82("div", { className: "p-2 border-t", children: /* @__PURE__ */ jsx82(
|
|
21101
22213
|
"button",
|
|
21102
22214
|
{
|
|
21103
22215
|
type: "button",
|
|
@@ -21108,22 +22220,22 @@ var BubbleMenuContent = ({
|
|
|
21108
22220
|
) })
|
|
21109
22221
|
] });
|
|
21110
22222
|
}
|
|
21111
|
-
return /* @__PURE__ */
|
|
21112
|
-
/* @__PURE__ */
|
|
21113
|
-
/* @__PURE__ */
|
|
21114
|
-
/* @__PURE__ */
|
|
22223
|
+
return /* @__PURE__ */ jsxs74("div", { className: "flex items-center gap-0.5 p-1", children: [
|
|
22224
|
+
/* @__PURE__ */ jsx82(ToolbarButton, { onClick: () => editor.chain().focus().toggleBold().run(), active: editor.isActive("bold"), title: t("toolbar.bold"), children: /* @__PURE__ */ jsx82(BoldIcon2, { className: "w-4 h-4" }) }),
|
|
22225
|
+
/* @__PURE__ */ jsx82(ToolbarButton, { onClick: () => editor.chain().focus().toggleItalic().run(), active: editor.isActive("italic"), title: t("toolbar.italic"), children: /* @__PURE__ */ jsx82(ItalicIcon2, { className: "w-4 h-4" }) }),
|
|
22226
|
+
/* @__PURE__ */ jsx82(
|
|
21115
22227
|
ToolbarButton,
|
|
21116
22228
|
{
|
|
21117
22229
|
onClick: () => editor.chain().focus().toggleUnderline().run(),
|
|
21118
22230
|
active: editor.isActive("underline"),
|
|
21119
22231
|
title: t("toolbar.underline"),
|
|
21120
|
-
children: /* @__PURE__ */
|
|
22232
|
+
children: /* @__PURE__ */ jsx82(UnderlineIcon2, { className: "w-4 h-4" })
|
|
21121
22233
|
}
|
|
21122
22234
|
),
|
|
21123
|
-
/* @__PURE__ */
|
|
21124
|
-
/* @__PURE__ */
|
|
21125
|
-
/* @__PURE__ */
|
|
21126
|
-
/* @__PURE__ */
|
|
22235
|
+
/* @__PURE__ */ jsx82(ToolbarButton, { onClick: () => editor.chain().focus().toggleStrike().run(), active: editor.isActive("strike"), title: t("toolbar.strike"), children: /* @__PURE__ */ jsx82(StrikethroughIcon2, { className: "w-4 h-4" }) }),
|
|
22236
|
+
/* @__PURE__ */ jsx82(ToolbarButton, { onClick: () => editor.chain().focus().toggleCode().run(), active: editor.isActive("code"), title: t("toolbar.code"), children: /* @__PURE__ */ jsx82(CodeIcon2, { className: "w-4 h-4" }) }),
|
|
22237
|
+
/* @__PURE__ */ jsx82("div", { className: "w-px h-6 bg-border/50 mx-1" }),
|
|
22238
|
+
/* @__PURE__ */ jsx82(
|
|
21127
22239
|
ToolbarButton,
|
|
21128
22240
|
{
|
|
21129
22241
|
onMouseDown: () => {
|
|
@@ -21134,41 +22246,41 @@ var BubbleMenuContent = ({
|
|
|
21134
22246
|
},
|
|
21135
22247
|
active: editor.isActive("link"),
|
|
21136
22248
|
title: t("toolbar.link"),
|
|
21137
|
-
children: /* @__PURE__ */
|
|
22249
|
+
children: /* @__PURE__ */ jsx82(LinkIcon2, { className: "w-4 h-4" })
|
|
21138
22250
|
}
|
|
21139
22251
|
),
|
|
21140
|
-
/* @__PURE__ */
|
|
21141
|
-
/* @__PURE__ */
|
|
21142
|
-
/* @__PURE__ */
|
|
22252
|
+
/* @__PURE__ */ jsx82(ToolbarButton, { onClick: () => setShowEditorColorPalette(true), title: t("colors.textColor"), children: /* @__PURE__ */ jsx82(Palette3, { className: "w-4 h-4" }) }),
|
|
22253
|
+
/* @__PURE__ */ jsx82("div", { className: "w-px h-6 bg-border/50 mx-1" }),
|
|
22254
|
+
/* @__PURE__ */ jsx82(
|
|
21143
22255
|
ToolbarButton,
|
|
21144
22256
|
{
|
|
21145
22257
|
onClick: () => editor.chain().focus().toggleSubscript().run(),
|
|
21146
22258
|
active: editor.isActive("subscript"),
|
|
21147
22259
|
title: t("toolbar.subscript"),
|
|
21148
|
-
children: /* @__PURE__ */
|
|
22260
|
+
children: /* @__PURE__ */ jsx82(SubscriptIcon2, { className: "w-4 h-4" })
|
|
21149
22261
|
}
|
|
21150
22262
|
),
|
|
21151
|
-
/* @__PURE__ */
|
|
22263
|
+
/* @__PURE__ */ jsx82(
|
|
21152
22264
|
ToolbarButton,
|
|
21153
22265
|
{
|
|
21154
22266
|
onClick: () => editor.chain().focus().toggleSuperscript().run(),
|
|
21155
22267
|
active: editor.isActive("superscript"),
|
|
21156
22268
|
title: t("toolbar.superscript"),
|
|
21157
|
-
children: /* @__PURE__ */
|
|
22269
|
+
children: /* @__PURE__ */ jsx82(SuperscriptIcon2, { className: "w-4 h-4" })
|
|
21158
22270
|
}
|
|
21159
22271
|
)
|
|
21160
22272
|
] });
|
|
21161
22273
|
};
|
|
21162
22274
|
var CustomBubbleMenu = ({ editor }) => {
|
|
21163
|
-
const [isVisible, setIsVisible] =
|
|
21164
|
-
const [position, setPosition] =
|
|
21165
|
-
const menuRef =
|
|
21166
|
-
const keepOpenRef =
|
|
22275
|
+
const [isVisible, setIsVisible] = useState53(false);
|
|
22276
|
+
const [position, setPosition] = useState53({ top: 0, left: 0 });
|
|
22277
|
+
const menuRef = useRef29(null);
|
|
22278
|
+
const keepOpenRef = useRef29(false);
|
|
21167
22279
|
const setKeepOpen = useCallback16((next) => {
|
|
21168
22280
|
keepOpenRef.current = next;
|
|
21169
22281
|
if (next) setIsVisible(true);
|
|
21170
22282
|
}, []);
|
|
21171
|
-
|
|
22283
|
+
useEffect33(() => {
|
|
21172
22284
|
const updatePosition = () => {
|
|
21173
22285
|
const { state, view } = editor;
|
|
21174
22286
|
const { from, to, empty } = state.selection;
|
|
@@ -21197,7 +22309,7 @@ var CustomBubbleMenu = ({ editor }) => {
|
|
|
21197
22309
|
}, [editor]);
|
|
21198
22310
|
if (!isVisible) return null;
|
|
21199
22311
|
return createPortal9(
|
|
21200
|
-
/* @__PURE__ */
|
|
22312
|
+
/* @__PURE__ */ jsx82(
|
|
21201
22313
|
"div",
|
|
21202
22314
|
{
|
|
21203
22315
|
ref: menuRef,
|
|
@@ -21208,7 +22320,7 @@ var CustomBubbleMenu = ({ editor }) => {
|
|
|
21208
22320
|
transform: "translate(-50%, -100%)"
|
|
21209
22321
|
},
|
|
21210
22322
|
onMouseDown: (e) => e.preventDefault(),
|
|
21211
|
-
children: /* @__PURE__ */
|
|
22323
|
+
children: /* @__PURE__ */ jsx82(
|
|
21212
22324
|
BubbleMenuContent,
|
|
21213
22325
|
{
|
|
21214
22326
|
editor,
|
|
@@ -21221,9 +22333,9 @@ var CustomBubbleMenu = ({ editor }) => {
|
|
|
21221
22333
|
);
|
|
21222
22334
|
};
|
|
21223
22335
|
var CustomFloatingMenu = ({ editor }) => {
|
|
21224
|
-
const [isVisible, setIsVisible] =
|
|
21225
|
-
const [position, setPosition] =
|
|
21226
|
-
|
|
22336
|
+
const [isVisible, setIsVisible] = useState53(false);
|
|
22337
|
+
const [position, setPosition] = useState53({ top: 0, left: 0 });
|
|
22338
|
+
useEffect33(() => {
|
|
21227
22339
|
const updatePosition = () => {
|
|
21228
22340
|
const { state, view } = editor;
|
|
21229
22341
|
const { $from, empty } = state.selection;
|
|
@@ -21250,7 +22362,7 @@ var CustomFloatingMenu = ({ editor }) => {
|
|
|
21250
22362
|
}, [editor]);
|
|
21251
22363
|
if (!isVisible) return null;
|
|
21252
22364
|
return createPortal9(
|
|
21253
|
-
/* @__PURE__ */
|
|
22365
|
+
/* @__PURE__ */ jsx82(
|
|
21254
22366
|
"div",
|
|
21255
22367
|
{
|
|
21256
22368
|
className: "fixed z-50 rounded-2xl border border-border bg-card text-card-foreground shadow-lg backdrop-blur-sm overflow-hidden animate-in fade-in-0 slide-in-from-bottom-2",
|
|
@@ -21260,7 +22372,7 @@ var CustomFloatingMenu = ({ editor }) => {
|
|
|
21260
22372
|
transform: "translate(-50%, -100%)"
|
|
21261
22373
|
},
|
|
21262
22374
|
onMouseDown: (e) => e.preventDefault(),
|
|
21263
|
-
children: /* @__PURE__ */
|
|
22375
|
+
children: /* @__PURE__ */ jsx82(FloatingMenuContent, { editor })
|
|
21264
22376
|
}
|
|
21265
22377
|
),
|
|
21266
22378
|
document.body
|
|
@@ -21269,25 +22381,25 @@ var CustomFloatingMenu = ({ editor }) => {
|
|
|
21269
22381
|
|
|
21270
22382
|
// ../../components/ui/UEditor/CharacterCount.tsx
|
|
21271
22383
|
import { useTranslations as useTranslations6 } from "next-intl";
|
|
21272
|
-
import { jsxs as
|
|
22384
|
+
import { jsxs as jsxs75 } from "react/jsx-runtime";
|
|
21273
22385
|
var CharacterCountDisplay = ({ editor, maxCharacters }) => {
|
|
21274
22386
|
const t = useTranslations6("UEditor");
|
|
21275
22387
|
const storage = editor.storage;
|
|
21276
22388
|
const characterCount = storage.characterCount?.characters?.() ?? 0;
|
|
21277
22389
|
const wordCount = storage.characterCount?.words?.() ?? 0;
|
|
21278
22390
|
const percentage = maxCharacters ? Math.round(characterCount / maxCharacters * 100) : 0;
|
|
21279
|
-
return /* @__PURE__ */
|
|
21280
|
-
/* @__PURE__ */
|
|
22391
|
+
return /* @__PURE__ */ jsxs75("div", { className: "flex items-center gap-3 px-3 py-2 text-xs text-muted-foreground border-t bg-muted/20", children: [
|
|
22392
|
+
/* @__PURE__ */ jsxs75("span", { children: [
|
|
21281
22393
|
wordCount,
|
|
21282
22394
|
" ",
|
|
21283
22395
|
t("words")
|
|
21284
22396
|
] }),
|
|
21285
|
-
/* @__PURE__ */
|
|
22397
|
+
/* @__PURE__ */ jsxs75("span", { children: [
|
|
21286
22398
|
characterCount,
|
|
21287
22399
|
" ",
|
|
21288
22400
|
t("characters")
|
|
21289
22401
|
] }),
|
|
21290
|
-
maxCharacters && /* @__PURE__ */
|
|
22402
|
+
maxCharacters && /* @__PURE__ */ jsxs75("span", { className: cn(percentage > 90 && "text-destructive", percentage > 100 && "font-bold"), children: [
|
|
21291
22403
|
characterCount,
|
|
21292
22404
|
"/",
|
|
21293
22405
|
maxCharacters
|
|
@@ -21296,7 +22408,7 @@ var CharacterCountDisplay = ({ editor, maxCharacters }) => {
|
|
|
21296
22408
|
};
|
|
21297
22409
|
|
|
21298
22410
|
// ../../components/ui/UEditor/UEditor.tsx
|
|
21299
|
-
import { jsx as
|
|
22411
|
+
import { jsx as jsx83, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
21300
22412
|
var UEditor = ({
|
|
21301
22413
|
content = "",
|
|
21302
22414
|
onChange,
|
|
@@ -21319,7 +22431,7 @@ var UEditor = ({
|
|
|
21319
22431
|
}) => {
|
|
21320
22432
|
const t = useTranslations7("UEditor");
|
|
21321
22433
|
const effectivePlaceholder = placeholder ?? t("placeholder");
|
|
21322
|
-
const extensions =
|
|
22434
|
+
const extensions = useMemo26(
|
|
21323
22435
|
() => buildUEditorExtensions({ placeholder: effectivePlaceholder, maxCharacters, uploadImage, imageInsertMode, editable }),
|
|
21324
22436
|
[effectivePlaceholder, maxCharacters, uploadImage, imageInsertMode, editable]
|
|
21325
22437
|
);
|
|
@@ -21428,7 +22540,7 @@ var UEditor = ({
|
|
|
21428
22540
|
onJsonChange?.(editor2.getJSON());
|
|
21429
22541
|
}
|
|
21430
22542
|
});
|
|
21431
|
-
|
|
22543
|
+
useEffect34(() => {
|
|
21432
22544
|
if (editor && content !== editor.getHTML()) {
|
|
21433
22545
|
if (editor.isEmpty && content) {
|
|
21434
22546
|
editor.commands.setContent(content);
|
|
@@ -21436,7 +22548,7 @@ var UEditor = ({
|
|
|
21436
22548
|
}
|
|
21437
22549
|
}, [content, editor]);
|
|
21438
22550
|
if (!editor) {
|
|
21439
|
-
return /* @__PURE__ */
|
|
22551
|
+
return /* @__PURE__ */ jsx83(
|
|
21440
22552
|
"div",
|
|
21441
22553
|
{
|
|
21442
22554
|
className: cn("w-full rounded-lg border bg-background flex items-center justify-center text-muted-foreground", className),
|
|
@@ -21445,7 +22557,7 @@ var UEditor = ({
|
|
|
21445
22557
|
}
|
|
21446
22558
|
);
|
|
21447
22559
|
}
|
|
21448
|
-
return /* @__PURE__ */
|
|
22560
|
+
return /* @__PURE__ */ jsxs76(
|
|
21449
22561
|
"div",
|
|
21450
22562
|
{
|
|
21451
22563
|
className: cn(
|
|
@@ -21457,10 +22569,10 @@ var UEditor = ({
|
|
|
21457
22569
|
className
|
|
21458
22570
|
),
|
|
21459
22571
|
children: [
|
|
21460
|
-
editable && showToolbar && /* @__PURE__ */
|
|
21461
|
-
editable && showBubbleMenu && /* @__PURE__ */
|
|
21462
|
-
editable && showFloatingMenu && /* @__PURE__ */
|
|
21463
|
-
/* @__PURE__ */
|
|
22572
|
+
editable && showToolbar && /* @__PURE__ */ jsx83(EditorToolbar, { editor, variant, uploadImage, imageInsertMode }),
|
|
22573
|
+
editable && showBubbleMenu && /* @__PURE__ */ jsx83(CustomBubbleMenu, { editor }),
|
|
22574
|
+
editable && showFloatingMenu && /* @__PURE__ */ jsx83(CustomFloatingMenu, { editor }),
|
|
22575
|
+
/* @__PURE__ */ jsx83(
|
|
21464
22576
|
EditorContent,
|
|
21465
22577
|
{
|
|
21466
22578
|
editor,
|
|
@@ -21471,7 +22583,7 @@ var UEditor = ({
|
|
|
21471
22583
|
}
|
|
21472
22584
|
}
|
|
21473
22585
|
),
|
|
21474
|
-
showCharacterCount && /* @__PURE__ */
|
|
22586
|
+
showCharacterCount && /* @__PURE__ */ jsx83(CharacterCountDisplay, { editor, maxCharacters })
|
|
21475
22587
|
]
|
|
21476
22588
|
}
|
|
21477
22589
|
);
|