@oix1987/yjd 1.0.1 → 1.0.3

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 (58) hide show
  1. package/README.md +9 -1
  2. package/dist/rich-editor.esm.js +2 -0
  3. package/dist/rich-editor.esm.js.map +1 -0
  4. package/dist/rich-editor.min.js +2 -0
  5. package/dist/rich-editor.min.js.map +1 -0
  6. package/package.json +13 -7
  7. package/index.js +0 -221
  8. package/lib/core/editor.js +0 -1175
  9. package/lib/core/format.js +0 -542
  10. package/lib/core/module.js +0 -81
  11. package/lib/core/registry.js +0 -152
  12. package/lib/formats/background.js +0 -212
  13. package/lib/formats/bold.js +0 -67
  14. package/lib/formats/capitalization.js +0 -563
  15. package/lib/formats/color.js +0 -165
  16. package/lib/formats/emoji.js +0 -282
  17. package/lib/formats/font-family.js +0 -547
  18. package/lib/formats/heading.js +0 -502
  19. package/lib/formats/image.js +0 -344
  20. package/lib/formats/import.js +0 -385
  21. package/lib/formats/indent.js +0 -297
  22. package/lib/formats/italic.js +0 -27
  23. package/lib/formats/line-height.js +0 -558
  24. package/lib/formats/link.js +0 -251
  25. package/lib/formats/list.js +0 -635
  26. package/lib/formats/strike.js +0 -31
  27. package/lib/formats/subscript.js +0 -36
  28. package/lib/formats/superscript.js +0 -35
  29. package/lib/formats/table.js +0 -288
  30. package/lib/formats/tag.js +0 -304
  31. package/lib/formats/text-align.js +0 -421
  32. package/lib/formats/text-size.js +0 -497
  33. package/lib/formats/underline.js +0 -30
  34. package/lib/formats/video.js +0 -372
  35. package/lib/modules/block-toolbar.js +0 -628
  36. package/lib/modules/code-view.js +0 -434
  37. package/lib/modules/history.js +0 -410
  38. package/lib/modules/resize-handles.js +0 -677
  39. package/lib/modules/table-toolbar.js +0 -618
  40. package/lib/modules/toolbar.js +0 -424
  41. package/lib/styles-loader.js +0 -144
  42. package/lib/ui/color-picker.js +0 -296
  43. package/lib/ui/customselect.js +0 -319
  44. package/lib/ui/emoji-picker.js +0 -196
  45. package/lib/ui/icons.js +0 -413
  46. package/lib/ui/image-popup.js +0 -444
  47. package/lib/ui/import-popup.js +0 -288
  48. package/lib/ui/link-popup.js +0 -191
  49. package/lib/ui/list-picker.js +0 -307
  50. package/lib/ui/select-button.js +0 -61
  51. package/lib/ui/table-popup.js +0 -171
  52. package/lib/ui/tag-popup.js +0 -249
  53. package/lib/ui/text-align-picker.js +0 -281
  54. package/lib/ui/video-popup.js +0 -422
  55. package/lib/utils/history-helper.js +0 -50
  56. package/lib/utils/popup-helper.js +0 -219
  57. package/lib/utils/popup-positioning.js +0 -231
  58. /package/{lib → dist}/styles.css +0 -0
@@ -1,196 +0,0 @@
1
- /**
2
- * Emoji Picker Component - Popup for selecting emojis
3
- */
4
- import { appendPopup, calculatePopupPosition, setPopupPosition } from '../utils/popup-helper.js';
5
-
6
- class EmojiPicker {
7
- constructor(options = {}) {
8
- this.options = {
9
- emojis: [
10
- // Smileys & People
11
- '😀', '😁', '😂', '🤣', '😃', '😄', '😅', '😆', '😉', '😊',
12
- '😋', '😎', '😍', '🥰', '😘', '😗', '😙', '😚', '🙂', '🤗',
13
- '😳', '🥺', '😦', '😧', '😨', '😰', '😥', '😢', '😭', '😱',
14
- '🤬', '😈', '👿', '💀', '☠️', '💩', '🤡', '👹', '👺', '👻',
15
- ],
16
- onEmojiSelect: null,
17
- ...options
18
- };
19
-
20
- this.popup = null;
21
- this.isVisible = false;
22
- this.clickOutsideHandler = null;
23
-
24
- this.createEmojiPicker();
25
- }
26
-
27
- /**
28
- * Detect operating system
29
- * @returns {string} 'mac' or 'windows'
30
- */
31
- detectOS() {
32
- const platform = navigator.platform.toLowerCase();
33
- if (platform.includes('mac')) {
34
- return 'mac';
35
- } else if (platform.includes('win')) {
36
- return 'windows';
37
- }
38
- // Default to windows for other platforms
39
- return 'windows';
40
- }
41
-
42
- /**
43
- * Get emoji shortcut message based on OS
44
- * @returns {string} HTML string for the shortcut message
45
- */
46
- getEmojiShortcutMessage() {
47
- const os = this.detectOS();
48
-
49
- if (os === 'mac') {
50
- return `<div style="color: rgb(113, 120, 124); font-style: normal; font-weight: 400; line-height: normal; text-align: center;">Get more emojis with <span style="border-radius: 2.2px; background: #EEE; padding: 2px 4px;">⌘</span> <span style="color: #000;">+</span> <span style="border-radius: 2.2px; background: #EEE; padding: 2px 4px;">CTRL</span> <span style="color: #000;">+</span> <span style="border-radius: 2.2px; background: #EEE; padding: 2px 4px;">SPACE</span></div>`;
51
- } else {
52
- return `<div style="color: rgb(113, 120, 124); font-style: normal; font-weight: 400; line-height: normal; text-align: center;">Get more emojis with <span style="border-radius: 2.2px; background: #EEE; padding: 2px 4px;">WIN</span> <span style="color: #000;">+</span> <span style="border-radius: 2.2px; background: #EEE; padding: 2px 4px;">.</span></div>`;
53
- }
54
- }
55
-
56
- /**
57
- * Create emoji picker popup
58
- */
59
- createEmojiPicker() {
60
- // Create popup
61
- this.popup = document.createElement('div');
62
- this.popup.className = 'emoji-picker-popup';
63
-
64
- // Create emoji grid
65
- this.createEmojiGrid();
66
- const emojiTextMessage = document.createElement('div');
67
- emojiTextMessage.className = 'emoji-text-message';
68
-
69
- emojiTextMessage.innerHTML = this.getEmojiShortcutMessage();
70
- this.popup.appendChild(emojiTextMessage);
71
-
72
- // Add popup to container
73
- appendPopup(this.popup);
74
- }
75
-
76
- /**
77
- * Create emoji grid
78
- */
79
- createEmojiGrid() {
80
- const emojiGrid = document.createElement('div');
81
- emojiGrid.className = 'emoji-grid';
82
-
83
- // Create emoji buttons
84
- this.options.emojis.forEach(emoji => {
85
- const emojiButton = document.createElement('button');
86
- emojiButton.type = 'button';
87
- emojiButton.className = 'emoji-button';
88
- emojiButton.textContent = emoji;
89
- emojiButton.title = emoji;
90
-
91
- emojiButton.addEventListener('click', (e) => {
92
- e.preventDefault();
93
- e.stopPropagation();
94
- this.selectEmoji(emoji);
95
- });
96
-
97
- emojiGrid.appendChild(emojiButton);
98
- });
99
-
100
- this.popup.appendChild(emojiGrid);
101
- }
102
-
103
- /**
104
- * Setup click outside handler
105
- */
106
- setupClickOutside() {
107
- if (this.clickOutsideHandler) {
108
- document.removeEventListener('click', this.clickOutsideHandler);
109
- }
110
-
111
- this.clickOutsideHandler = (e) => {
112
- if (!this.popup.contains(e.target)) {
113
- this.hide();
114
- }
115
- };
116
-
117
- // Add slight delay to avoid immediate close
118
- setTimeout(() => {
119
- document.addEventListener('click', this.clickOutsideHandler);
120
- }, 100);
121
- }
122
-
123
- /**
124
- * Remove click outside handler
125
- */
126
- removeClickOutside() {
127
- if (this.clickOutsideHandler) {
128
- document.removeEventListener('click', this.clickOutsideHandler);
129
- this.clickOutsideHandler = null;
130
- }
131
- }
132
-
133
- /**
134
- * Show emoji picker popup
135
- * @param {HTMLElement} anchor - Element to position popup relative to
136
- */
137
- show(anchor) {
138
- if (!anchor) return;
139
-
140
- // Ensure popup is in DOM
141
- if (!document.body.contains(this.popup)) {
142
- appendPopup(this.popup);
143
- }
144
-
145
- // Calculate and set popup position
146
- const position = calculatePopupPosition(anchor, this.popup, {
147
- offsetY: 5,
148
- offsetX: 0
149
- });
150
- setPopupPosition(this.popup, position);
151
-
152
- // Show popup by adding visible class
153
- this.popup.classList.add('visible');
154
- this.isVisible = true;
155
-
156
- // Setup click outside handler
157
- this.setupClickOutside();
158
- }
159
-
160
- /**
161
- * Hide emoji picker popup
162
- */
163
- hide() {
164
- this.popup.classList.remove('visible');
165
- this.isVisible = false;
166
- this.removeClickOutside();
167
- }
168
-
169
- /**
170
- * Select emoji and trigger callback
171
- * @param {string} emoji - Selected emoji
172
- */
173
- selectEmoji(emoji) {
174
- if (this.options.onEmojiSelect) {
175
- this.options.onEmojiSelect(emoji);
176
- }
177
-
178
- this.hide();
179
- }
180
-
181
- /**
182
- * Destroy the emoji picker
183
- */
184
- destroy() {
185
- this.removeClickOutside();
186
-
187
- if (this.popup && this.popup.parentNode) {
188
- this.popup.parentNode.removeChild(this.popup);
189
- }
190
-
191
- this.popup = null;
192
- this.isVisible = false;
193
- }
194
- }
195
-
196
- export default EmojiPicker;