payload-richtext-tiptap 0.0.159 → 0.0.161

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.
Files changed (89) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.d.ts +2 -7
  2. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.d.ts.map +1 -1
  3. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js +20 -7
  4. package/dist/src/fields/TiptapEditor/extensions/Iframe/IframeEmbed.js.map +1 -1
  5. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.d.ts +2 -2
  6. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.d.ts.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js +42 -30
  8. package/dist/src/fields/TiptapEditor/extensions/Iframe/iframe.js.map +1 -1
  9. package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.d.ts.map +1 -1
  10. package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js +27 -4
  11. package/dist/src/fields/TiptapEditor/extensions/Paragraph/Paragraph.js.map +1 -1
  12. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/PasteHandler.d.ts +4 -0
  13. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/PasteHandler.d.ts.map +1 -0
  14. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/PasteHandler.js +242 -0
  15. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/PasteHandler.js.map +1 -0
  16. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/index.d.ts +2 -0
  17. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/index.d.ts.map +1 -0
  18. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/index.js +3 -0
  19. package/dist/src/fields/TiptapEditor/extensions/PasteHandler/index.js.map +1 -0
  20. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.d.ts +1 -1
  21. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.d.ts.map +1 -1
  22. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js +108 -84
  23. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/groups.js.map +1 -1
  24. package/dist/src/fields/TiptapEditor/extensions/Table/Table.d.ts.map +1 -1
  25. package/dist/src/fields/TiptapEditor/extensions/Table/Table.js +2 -1
  26. package/dist/src/fields/TiptapEditor/extensions/Table/Table.js.map +1 -1
  27. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +3 -3
  28. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
  29. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js +29 -22
  30. package/dist/src/fields/TiptapEditor/extensions/extension-kit.js.map +1 -1
  31. package/dist/src/fields/TiptapEditor/extensions/index.d.ts +50 -49
  32. package/dist/src/fields/TiptapEditor/extensions/index.d.ts.map +1 -1
  33. package/dist/src/fields/TiptapEditor/extensions/index.js +50 -49
  34. package/dist/src/fields/TiptapEditor/extensions/index.js.map +1 -1
  35. package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.d.ts +2 -2
  36. package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.d.ts.map +1 -1
  37. package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.js +26 -8
  38. package/dist/src/fields/TiptapEditor/extensions/serverside/IFrameServerside.js.map +1 -1
  39. package/dist/src/fields/TiptapEditor/extensions/serverside/TableServerside.d.ts +10 -0
  40. package/dist/src/fields/TiptapEditor/extensions/serverside/TableServerside.d.ts.map +1 -0
  41. package/dist/src/fields/TiptapEditor/extensions/serverside/TableServerside.js +90 -0
  42. package/dist/src/fields/TiptapEditor/extensions/serverside/TableServerside.js.map +1 -0
  43. package/dist/src/fields/TiptapEditor/extensions/serverside/index.d.ts +15 -13
  44. package/dist/src/fields/TiptapEditor/extensions/serverside/index.d.ts.map +1 -1
  45. package/dist/src/fields/TiptapEditor/extensions/serverside/index.js +15 -13
  46. package/dist/src/fields/TiptapEditor/extensions/serverside/index.js.map +1 -1
  47. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
  48. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +9 -0
  49. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
  50. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.d.ts +2 -2
  51. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.d.ts.map +1 -1
  52. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js +20 -18
  53. package/dist/src/fields/TiptapEditor/features/panels/IframeLinkEditorPanel/IframeLinkEditorPanel.js.map +1 -1
  54. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashCommandTriggerButton.d.ts +4 -0
  55. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashCommandTriggerButton.d.ts.map +1 -0
  56. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashCommandTriggerButton.js +32 -0
  57. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashCommandTriggerButton.js.map +1 -0
  58. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashDropdownMenu.d.ts +4 -0
  59. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashDropdownMenu.d.ts.map +1 -0
  60. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashDropdownMenu.js +70 -0
  61. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashDropdownMenu.js.map +1 -0
  62. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashMenuList.d.ts +10 -0
  63. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashMenuList.d.ts.map +1 -0
  64. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashMenuList.js +249 -0
  65. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SlashMenuList.js.map +1 -0
  66. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SuggestionMenu.d.ts +15 -0
  67. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SuggestionMenu.d.ts.map +1 -0
  68. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SuggestionMenu.js +291 -0
  69. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/SuggestionMenu.js.map +1 -0
  70. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/index.d.ts +7 -0
  71. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/index.d.ts.map +1 -0
  72. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/index.js +7 -0
  73. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/index.js.map +1 -0
  74. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/types.d.ts +28 -0
  75. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/types.d.ts.map +1 -0
  76. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/types.js +3 -0
  77. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/types.js.map +1 -0
  78. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/utils.d.ts +6 -0
  79. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/utils.d.ts.map +1 -0
  80. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/utils.js +222 -0
  81. package/dist/src/fields/TiptapEditor/features/ui/SlashCommand/utils.js.map +1 -0
  82. package/dist/src/fields/TiptapEditor/lib/utils/updateImageUrl.d.ts +2 -0
  83. package/dist/src/fields/TiptapEditor/lib/utils/updateImageUrl.d.ts.map +1 -0
  84. package/dist/src/fields/TiptapEditor/lib/utils/updateImageUrl.js +17 -0
  85. package/dist/src/fields/TiptapEditor/lib/utils/updateImageUrl.js.map +1 -0
  86. package/dist/src/mobile.css +1 -1
  87. package/dist/src/styles.css +1 -1
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ export { SlashDropdownMenu } from './SlashDropdownMenu.js';
2
+ export { SlashCommandTriggerButton } from './SlashCommandTriggerButton.js';
3
+ export { SuggestionMenu } from './SuggestionMenu.js';
4
+ export { SlashMenuList } from './SlashMenuList.js';
5
+ export { getSlashMenuItems, filterSuggestionItems, getDefaultSlashMenuItems } from './utils.js';
6
+
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/ui/SlashCommand/index.ts"],"sourcesContent":["export { SlashDropdownMenu } from './SlashDropdownMenu.js'\r\nexport { SlashCommandTriggerButton } from './SlashCommandTriggerButton.js'\r\nexport { SuggestionMenu } from './SuggestionMenu.js'\r\nexport { SlashMenuList } from './SlashMenuList.js'\r\nexport type {\r\n SlashMenuItemType,\r\n SuggestionItem,\r\n SlashMenuConfig,\r\n SlashDropdownMenuProps,\r\n SlashCommandTriggerButtonProps,\r\n} from './types.js'\r\nexport { getSlashMenuItems, filterSuggestionItems, getDefaultSlashMenuItems } from './utils.js'\r\n"],"names":["SlashDropdownMenu","SlashCommandTriggerButton","SuggestionMenu","SlashMenuList","getSlashMenuItems","filterSuggestionItems","getDefaultSlashMenuItems"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,yBAAyB,QAAQ,iCAAgC;AAC1E,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,aAAa,QAAQ,qBAAoB;AAQlD,SAASC,iBAAiB,EAAEC,qBAAqB,EAAEC,wBAAwB,QAAQ,aAAY"}
@@ -0,0 +1,28 @@
1
+ import { Editor } from '@tiptap/core';
2
+ import { LucideIcon } from 'lucide-react';
3
+ export type SlashMenuItemType = 'text' | 'heading_1' | 'heading_2' | 'heading_3' | 'bullet_list' | 'ordered_list' | 'quote' | 'code_block' | 'image' | 'horizontal_rule' | 'button' | 'custom_html' | 'social' | 'columns' | 'unsubscribe_footer' | 'twitter' | 'ai_writer';
4
+ export interface SuggestionItem {
5
+ title: string;
6
+ subtext: string;
7
+ aliases: string[];
8
+ badge: LucideIcon;
9
+ group: string;
10
+ onSelect: (props: {
11
+ editor: Editor;
12
+ }) => void;
13
+ }
14
+ export interface SlashMenuConfig {
15
+ enabledItems: SlashMenuItemType[];
16
+ customItems?: SuggestionItem[];
17
+ itemGroups?: Record<string, string>;
18
+ showGroups?: boolean;
19
+ }
20
+ export interface SlashDropdownMenuProps {
21
+ editor: Editor | null;
22
+ config?: SlashMenuConfig;
23
+ }
24
+ export interface SlashCommandTriggerButtonProps {
25
+ editor: Editor | null;
26
+ config?: SlashMenuConfig;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/ui/SlashCommand/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAS,UAAU,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,WAAW,GACX,WAAW,GACX,WAAW,GACX,aAAa,GACb,cAAc,GACd,OAAO,GACP,YAAY,GACZ,OAAO,GACP,iBAAiB,GACjB,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,SAAS,GACT,oBAAoB,GACpB,SAAS,GACT,WAAW,CAAA;AAEf,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,eAAe,CAAA;CACzB"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/ui/SlashCommand/types.ts"],"sourcesContent":["import { Editor } from '@tiptap/core'\r\nimport { icons, LucideIcon } from 'lucide-react'\r\n\r\nexport type SlashMenuItemType =\r\n | 'text'\r\n | 'heading_1'\r\n | 'heading_2'\r\n | 'heading_3'\r\n | 'bullet_list'\r\n | 'ordered_list'\r\n | 'quote'\r\n | 'code_block'\r\n | 'image'\r\n | 'horizontal_rule'\r\n | 'button'\r\n | 'custom_html'\r\n | 'social'\r\n | 'columns'\r\n | 'unsubscribe_footer'\r\n | 'twitter'\r\n | 'ai_writer'\r\n\r\nexport interface SuggestionItem {\r\n title: string\r\n subtext: string\r\n aliases: string[]\r\n badge: LucideIcon\r\n group: string\r\n onSelect: (props: { editor: Editor }) => void\r\n}\r\n\r\nexport interface SlashMenuConfig {\r\n enabledItems: SlashMenuItemType[]\r\n customItems?: SuggestionItem[]\r\n itemGroups?: Record<string, string>\r\n showGroups?: boolean\r\n}\r\n\r\nexport interface SlashDropdownMenuProps {\r\n editor: Editor | null\r\n config?: SlashMenuConfig\r\n}\r\n\r\nexport interface SlashCommandTriggerButtonProps {\r\n editor: Editor | null\r\n config?: SlashMenuConfig\r\n}\r\n"],"names":[],"mappings":"AA2CA,WAGC"}
@@ -0,0 +1,6 @@
1
+ import { Editor } from '@tiptap/core';
2
+ import { SlashMenuConfig, SuggestionItem } from './types.js';
3
+ export declare const getDefaultSlashMenuItems: (editor: Editor) => SuggestionItem[];
4
+ export declare const filterSuggestionItems: (items: SuggestionItem[], query: string) => SuggestionItem[];
5
+ export declare const getSlashMenuItems: (editor: Editor, config: SlashMenuConfig) => SuggestionItem[];
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/features/ui/SlashCommand/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,eAAe,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAmB/E,eAAO,MAAM,wBAAwB,WAAY,MAAM,KAAG,cAAc,EA0JvE,CAAA;AAED,eAAO,MAAM,qBAAqB,UAAW,cAAc,EAAE,SAAS,MAAM,KAAG,cAAc,EAY5F,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAY,MAAM,UAAU,eAAe,KAAG,cAAc,EAmBzF,CAAA"}
@@ -0,0 +1,222 @@
1
+ import i18next from 'i18next';
2
+ import { Facebook, Heading1, Heading2, Heading3, Image, Instagram, Link, List, Minus, Music, Quote, Twitter, Video, Youtube } from 'lucide-react';
3
+ export const getDefaultSlashMenuItems = (editor)=>{
4
+ return [
5
+ {
6
+ title: i18next.t('heading1') || 'Heading 1',
7
+ subtext: i18next.t('heading1Desc') || 'High priority section title',
8
+ aliases: [
9
+ 'h1'
10
+ ],
11
+ badge: Heading1,
12
+ group: 'format',
13
+ onSelect: ({ editor })=>{
14
+ editor.chain().focus().setHeading({
15
+ level: 1
16
+ }).run();
17
+ }
18
+ },
19
+ {
20
+ title: i18next.t('heading2') || 'Heading 2',
21
+ subtext: i18next.t('heading2Desc') || 'Medium priority section title',
22
+ aliases: [
23
+ 'h2'
24
+ ],
25
+ badge: Heading2,
26
+ group: 'format',
27
+ onSelect: ({ editor })=>{
28
+ editor.chain().focus().setHeading({
29
+ level: 2
30
+ }).run();
31
+ }
32
+ },
33
+ {
34
+ title: i18next.t('heading3') || 'Heading 3',
35
+ subtext: i18next.t('heading3Desc') || 'Low priority section title',
36
+ aliases: [
37
+ 'h3'
38
+ ],
39
+ badge: Heading3,
40
+ group: 'format',
41
+ onSelect: ({ editor })=>{
42
+ editor.chain().focus().setHeading({
43
+ level: 3
44
+ }).run();
45
+ }
46
+ },
47
+ {
48
+ title: i18next.t('bulletList') || 'Bullet List',
49
+ subtext: i18next.t('bulletListDesc') || 'Unordered list of items',
50
+ aliases: [
51
+ 'ul'
52
+ ],
53
+ badge: List,
54
+ group: 'format',
55
+ onSelect: ({ editor })=>{
56
+ editor.chain().focus().toggleBulletList().run();
57
+ }
58
+ },
59
+ // Uncomment if you want a numbered list option
60
+ // {
61
+ // title: i18next.t("numberedList") || 'Numbered List',
62
+ // subtext: i18next.t("numberedListDesc") || "Ordered list of items",
63
+ // aliases: ["ol"],
64
+ // badge: ListOrdered,
65
+ // group: "format",
66
+ // onSelect: ({ editor }) => {
67
+ // editor.chain().focus().toggleOrderedList().run();
68
+ // },
69
+ // },
70
+ {
71
+ title: i18next.t('blockquote') || 'Blockquote',
72
+ subtext: i18next.t('blockquoteDesc') || 'Element for quoting',
73
+ aliases: [],
74
+ badge: Quote,
75
+ group: 'format',
76
+ onSelect: ({ editor })=>{
77
+ editor.chain().focus().setBlockquote().run();
78
+ }
79
+ },
80
+ {
81
+ title: i18next.t('image') || 'Image',
82
+ subtext: i18next.t('imageDesc') || 'Insert an image',
83
+ aliases: [
84
+ 'img'
85
+ ],
86
+ badge: Image,
87
+ group: 'insert',
88
+ onSelect: ({ editor })=>{
89
+ editor.chain().focus().setImageUpload('image').run();
90
+ }
91
+ },
92
+ {
93
+ title: i18next.t('video') || 'Video',
94
+ subtext: i18next.t('videoDesc') || 'Insert a video',
95
+ aliases: [
96
+ 'video'
97
+ ],
98
+ badge: Video,
99
+ group: 'insert',
100
+ onSelect: ({ editor })=>{
101
+ editor.chain().focus().setImageUpload('video').run();
102
+ }
103
+ },
104
+ {
105
+ title: i18next.t('horizontalRule') || 'HorizontalRule',
106
+ subtext: i18next.t('horizontalRuleDesc') || 'Insert a horizontal divider',
107
+ aliases: [
108
+ 'hr'
109
+ ],
110
+ badge: Minus,
111
+ group: 'insert',
112
+ onSelect: ({ editor })=>{
113
+ editor.chain().focus().setHorizontalRule().run();
114
+ }
115
+ },
116
+ {
117
+ title: i18next.t('embed') || 'Embed Link',
118
+ subtext: i18next.t('iframeDesc') || 'Insert an Embed link',
119
+ aliases: [
120
+ 'linkPreview'
121
+ ],
122
+ badge: Link,
123
+ group: 'embed',
124
+ onSelect: ({ editor })=>{
125
+ editor.chain().focus().setLinkPreview().run();
126
+ }
127
+ },
128
+ {
129
+ title: i18next.t('twitter') || 'Twitter',
130
+ subtext: i18next.t('twitterDesc') || 'Insert a Twitter embed',
131
+ aliases: [
132
+ 'x',
133
+ 'twitter'
134
+ ],
135
+ badge: Twitter,
136
+ group: 'embed',
137
+ onSelect: ({ editor })=>{
138
+ editor.chain().focus().insertTwitter().run();
139
+ }
140
+ },
141
+ {
142
+ title: i18next.t('facebook') || 'Facebook',
143
+ subtext: i18next.t('facebookDesc') || 'Insert a Facebook embed',
144
+ aliases: [
145
+ 'meta',
146
+ 'facebook'
147
+ ],
148
+ badge: Facebook,
149
+ group: 'embed',
150
+ onSelect: ({ editor })=>{
151
+ editor.chain().focus().insertFacebook().run();
152
+ }
153
+ },
154
+ {
155
+ title: i18next.t('instagram') || 'Instagram',
156
+ subtext: i18next.t('instagramDesc') || 'Insert a Instagram embed',
157
+ aliases: [
158
+ 'instagram'
159
+ ],
160
+ badge: Instagram,
161
+ group: 'embed',
162
+ onSelect: ({ editor })=>{
163
+ editor.chain().focus().insertInstagram().run();
164
+ }
165
+ },
166
+ {
167
+ title: i18next.t('youtube') || 'Youtube',
168
+ subtext: i18next.t('youtubeDesc') || 'Insert a Youtube embed',
169
+ aliases: [
170
+ 'youtube'
171
+ ],
172
+ badge: Youtube,
173
+ group: 'embed',
174
+ onSelect: ({ editor })=>{
175
+ editor.chain().focus().insertYoutube().run();
176
+ }
177
+ },
178
+ {
179
+ title: i18next.t('tiktok') || 'Tiktok',
180
+ subtext: i18next.t('tiktokDesc') || 'Insert a Tiktok embed',
181
+ aliases: [
182
+ 'tiktok'
183
+ ],
184
+ badge: Music,
185
+ group: 'embed',
186
+ onSelect: ({ editor })=>{
187
+ editor.chain().focus().insertTiktok().run();
188
+ }
189
+ }
190
+ ];
191
+ };
192
+ export const filterSuggestionItems = (items, query)=>{
193
+ if (!query) return items;
194
+ const normalizedQuery = query.toLowerCase().trim();
195
+ return items.filter((item)=>{
196
+ const titleMatch = item.title.toLowerCase().includes(normalizedQuery);
197
+ const subtextMatch = item.subtext.toLowerCase().includes(normalizedQuery);
198
+ const aliasesMatch = item.aliases.some((alias)=>alias.toLowerCase().includes(normalizedQuery));
199
+ return titleMatch || subtextMatch || aliasesMatch;
200
+ });
201
+ };
202
+ export const getSlashMenuItems = (editor, config)=>{
203
+ const defaultItems = getDefaultSlashMenuItems(editor);
204
+ // Filter by enabled items
205
+ const enabledItems = defaultItems.filter((item)=>{
206
+ const itemType = item.title.toLowerCase().replace(/\s+/g, '_');
207
+ return config.enabledItems.includes(itemType) || config.enabledItems.includes('text');
208
+ });
209
+ // Add custom items
210
+ const customItems = config.customItems || [];
211
+ // Apply group assignments
212
+ const itemsWithGroups = [
213
+ ...enabledItems,
214
+ ...customItems
215
+ ].map((item)=>({
216
+ ...item,
217
+ group: config.itemGroups?.[item.title.toLowerCase().replace(/\s+/g, '_')] || item.group
218
+ }));
219
+ return itemsWithGroups;
220
+ };
221
+
222
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/ui/SlashCommand/utils.ts"],"sourcesContent":["import { Editor } from '@tiptap/core'\r\nimport { SlashMenuConfig, SlashMenuItemType, SuggestionItem } from './types.js'\r\nimport i18next from 'i18next'\r\nimport {\r\n Facebook,\r\n Heading1,\r\n Heading2,\r\n Heading3,\r\n Image,\r\n Instagram,\r\n Link,\r\n List,\r\n ListOrdered,\r\n Minus,\r\n Music,\r\n Quote,\r\n Twitter,\r\n Video,\r\n Youtube,\r\n} from 'lucide-react'\r\nexport const getDefaultSlashMenuItems = (editor: Editor): SuggestionItem[] => {\r\n return [\r\n {\r\n title: i18next.t('heading1') || 'Heading 1',\r\n subtext: i18next.t('heading1Desc') || 'High priority section title',\r\n aliases: ['h1'],\r\n badge: Heading1,\r\n group: 'format',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setHeading({ level: 1 }).run()\r\n },\r\n },\r\n {\r\n title: i18next.t('heading2') || 'Heading 2',\r\n subtext: i18next.t('heading2Desc') || 'Medium priority section title',\r\n aliases: ['h2'],\r\n badge: Heading2,\r\n group: 'format',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setHeading({ level: 2 }).run()\r\n },\r\n },\r\n {\r\n title: i18next.t('heading3') || 'Heading 3',\r\n subtext: i18next.t('heading3Desc') || 'Low priority section title',\r\n aliases: ['h3'],\r\n badge: Heading3,\r\n group: 'format',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setHeading({ level: 3 }).run()\r\n },\r\n },\r\n {\r\n title: i18next.t('bulletList') || 'Bullet List',\r\n subtext: i18next.t('bulletListDesc') || 'Unordered list of items',\r\n aliases: ['ul'],\r\n badge: List,\r\n group: 'format',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().toggleBulletList().run()\r\n },\r\n },\r\n // Uncomment if you want a numbered list option\r\n // {\r\n // title: i18next.t(\"numberedList\") || 'Numbered List',\r\n // subtext: i18next.t(\"numberedListDesc\") || \"Ordered list of items\",\r\n // aliases: [\"ol\"],\r\n // badge: ListOrdered,\r\n // group: \"format\",\r\n // onSelect: ({ editor }) => {\r\n // editor.chain().focus().toggleOrderedList().run();\r\n // },\r\n // },\r\n {\r\n title: i18next.t('blockquote') || 'Blockquote',\r\n subtext: i18next.t('blockquoteDesc') || 'Element for quoting',\r\n aliases: [],\r\n badge: Quote,\r\n group: 'format',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setBlockquote().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('image') || 'Image',\r\n subtext: i18next.t('imageDesc') || 'Insert an image',\r\n aliases: ['img'],\r\n badge: Image,\r\n group: 'insert',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setImageUpload('image').run()\r\n },\r\n },\r\n {\r\n title: i18next.t('video') || 'Video',\r\n subtext: i18next.t('videoDesc') || 'Insert a video',\r\n aliases: ['video'],\r\n badge: Video,\r\n group: 'insert',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setImageUpload('video').run()\r\n },\r\n },\r\n {\r\n title: i18next.t('horizontalRule') || 'HorizontalRule',\r\n subtext: i18next.t('horizontalRuleDesc') || 'Insert a horizontal divider',\r\n aliases: ['hr'],\r\n badge: Minus,\r\n group: 'insert',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setHorizontalRule().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('embed') || 'Embed Link',\r\n subtext: i18next.t('iframeDesc') || 'Insert an Embed link',\r\n aliases: ['linkPreview'],\r\n badge: Link,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().setLinkPreview().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('twitter') || 'Twitter',\r\n subtext: i18next.t('twitterDesc') || 'Insert a Twitter embed',\r\n aliases: ['x', 'twitter'],\r\n badge: Twitter,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().insertTwitter().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('facebook') || 'Facebook',\r\n subtext: i18next.t('facebookDesc') || 'Insert a Facebook embed',\r\n aliases: ['meta', 'facebook'],\r\n badge: Facebook,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().insertFacebook().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('instagram') || 'Instagram',\r\n subtext: i18next.t('instagramDesc') || 'Insert a Instagram embed',\r\n aliases: ['instagram'],\r\n badge: Instagram,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().insertInstagram().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('youtube') || 'Youtube',\r\n subtext: i18next.t('youtubeDesc') || 'Insert a Youtube embed',\r\n aliases: ['youtube'],\r\n badge: Youtube,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().insertYoutube().run()\r\n },\r\n },\r\n {\r\n title: i18next.t('tiktok') || 'Tiktok',\r\n subtext: i18next.t('tiktokDesc') || 'Insert a Tiktok embed',\r\n aliases: ['tiktok'],\r\n badge: Music,\r\n group: 'embed',\r\n onSelect: ({ editor }) => {\r\n editor.chain().focus().insertTiktok().run()\r\n },\r\n },\r\n ]\r\n}\r\n\r\nexport const filterSuggestionItems = (items: SuggestionItem[], query: string): SuggestionItem[] => {\r\n if (!query) return items\r\n\r\n const normalizedQuery = query.toLowerCase().trim()\r\n\r\n return items.filter((item) => {\r\n const titleMatch = item.title.toLowerCase().includes(normalizedQuery)\r\n const subtextMatch = item.subtext.toLowerCase().includes(normalizedQuery)\r\n const aliasesMatch = item.aliases.some((alias) => alias.toLowerCase().includes(normalizedQuery))\r\n\r\n return titleMatch || subtextMatch || aliasesMatch\r\n })\r\n}\r\n\r\nexport const getSlashMenuItems = (editor: Editor, config: SlashMenuConfig): SuggestionItem[] => {\r\n const defaultItems = getDefaultSlashMenuItems(editor)\r\n\r\n // Filter by enabled items\r\n const enabledItems = defaultItems.filter((item) => {\r\n const itemType = item.title.toLowerCase().replace(/\\s+/g, '_') as SlashMenuItemType\r\n return config.enabledItems.includes(itemType) || config.enabledItems.includes('text')\r\n })\r\n\r\n // Add custom items\r\n const customItems = config.customItems || []\r\n\r\n // Apply group assignments\r\n const itemsWithGroups = [...enabledItems, ...customItems].map((item) => ({\r\n ...item,\r\n group: config.itemGroups?.[item.title.toLowerCase().replace(/\\s+/g, '_')] || item.group,\r\n }))\r\n\r\n return itemsWithGroups\r\n}\r\n"],"names":["i18next","Facebook","Heading1","Heading2","Heading3","Image","Instagram","Link","List","Minus","Music","Quote","Twitter","Video","Youtube","getDefaultSlashMenuItems","editor","title","t","subtext","aliases","badge","group","onSelect","chain","focus","setHeading","level","run","toggleBulletList","setBlockquote","setImageUpload","setHorizontalRule","setLinkPreview","insertTwitter","insertFacebook","insertInstagram","insertYoutube","insertTiktok","filterSuggestionItems","items","query","normalizedQuery","toLowerCase","trim","filter","item","titleMatch","includes","subtextMatch","aliasesMatch","some","alias","getSlashMenuItems","config","defaultItems","enabledItems","itemType","replace","customItems","itemsWithGroups","map","itemGroups"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function updateImageUrl(url: string, width: number, height?: number): string;
2
+ //# sourceMappingURL=updateImageUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateImageUrl.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/lib/utils/updateImageUrl.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBlF"}
@@ -0,0 +1,17 @@
1
+ export function updateImageUrl(url, width, height) {
2
+ try {
3
+ const parsedUrl = new URL(url);
4
+ // Set or update width and height parameters
5
+ parsedUrl.searchParams.set('width', width.toString());
6
+ if (!!height) {
7
+ parsedUrl.searchParams.set('height', height.toString());
8
+ }
9
+ return parsedUrl.toString();
10
+ } catch (error) {
11
+ console.error('Invalid URL:', error);
12
+ return url // fallback in case the input URL is malformed
13
+ ;
14
+ }
15
+ }
16
+
17
+ //# sourceMappingURL=updateImageUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/lib/utils/updateImageUrl.ts"],"sourcesContent":["export function updateImageUrl(url: string, width: number, height?: number): string {\r\n try {\r\n const parsedUrl = new URL(url)\r\n\r\n // Set or update width and height parameters\r\n parsedUrl.searchParams.set('width', width.toString())\r\n\r\n if (!!height) {\r\n parsedUrl.searchParams.set('height', height.toString())\r\n }\r\n\r\n return parsedUrl.toString()\r\n } catch (error) {\r\n console.error('Invalid URL:', error)\r\n return url // fallback in case the input URL is malformed\r\n }\r\n}\r\n"],"names":["updateImageUrl","url","width","height","parsedUrl","URL","searchParams","set","toString","error","console"],"mappings":"AAAA,OAAO,SAASA,eAAeC,GAAW,EAAEC,KAAa,EAAEC,MAAe;IACxE,IAAI;QACF,MAAMC,YAAY,IAAIC,IAAIJ;QAE1B,4CAA4C;QAC5CG,UAAUE,YAAY,CAACC,GAAG,CAAC,SAASL,MAAMM,QAAQ;QAElD,IAAI,CAAC,CAACL,QAAQ;YACZC,UAAUE,YAAY,CAACC,GAAG,CAAC,UAAUJ,OAAOK,QAAQ;QACtD;QAEA,OAAOJ,UAAUI,QAAQ;IAC3B,EAAE,OAAOC,OAAO;QACdC,QAAQD,KAAK,CAAC,gBAAgBA;QAC9B,OAAOR,IAAI,8CAA8C;;IAC3D;AACF"}