@bagelink/vue 0.0.1262 → 0.0.1268

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 (48) hide show
  1. package/dist/components/AddressSearch.vue.d.ts +6 -0
  2. package/dist/components/AddressSearch.vue.d.ts.map +1 -1
  3. package/dist/components/DropDown.vue.d.ts +51 -48
  4. package/dist/components/DropDown.vue.d.ts.map +1 -1
  5. package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
  6. package/dist/components/form/inputs/DateInput.vue.d.ts +4 -1
  7. package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
  8. package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
  9. package/dist/components/form/inputs/RadioGroup.vue.d.ts +1 -1
  10. package/dist/components/form/inputs/RichText/composables/useCommands.d.ts.map +1 -1
  11. package/dist/components/form/inputs/RichText/composables/useEditor.d.ts +31 -23
  12. package/dist/components/form/inputs/RichText/composables/useEditor.d.ts.map +1 -1
  13. package/dist/components/form/inputs/RichText/composables/useEditorKeyboard.d.ts +2 -1
  14. package/dist/components/form/inputs/RichText/composables/useEditorKeyboard.d.ts.map +1 -1
  15. package/dist/components/form/inputs/RichText/config.d.ts +2 -1
  16. package/dist/components/form/inputs/RichText/config.d.ts.map +1 -1
  17. package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
  18. package/dist/components/form/inputs/RichText/utils/commands.d.ts +1 -0
  19. package/dist/components/form/inputs/RichText/utils/commands.d.ts.map +1 -1
  20. package/dist/components/form/inputs/RichText/utils/media.d.ts +5 -3
  21. package/dist/components/form/inputs/RichText/utils/media.d.ts.map +1 -1
  22. package/dist/components/form/inputs/RichText/utils/selection.d.ts.map +1 -1
  23. package/dist/components/form/inputs/SelectInput.vue.d.ts +12 -0
  24. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  25. package/dist/components/form/inputs/TelInput.vue.d.ts +8 -2
  26. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
  27. package/dist/editor-7QC0nG_c.js +4 -0
  28. package/dist/editor-CpMNx6Eo.cjs +4 -0
  29. package/dist/index.cjs +1327 -756
  30. package/dist/index.mjs +1327 -756
  31. package/dist/style.css +90 -83
  32. package/package.json +1 -1
  33. package/src/components/DataTable/DataTable.vue +1 -1
  34. package/src/components/Dropdown.vue +5 -2
  35. package/src/components/form/FieldArray.vue +3 -0
  36. package/src/components/form/inputs/DateInput.vue +341 -162
  37. package/src/components/form/inputs/PasswordInput.vue +5 -1
  38. package/src/components/form/inputs/RichText/components/EditorToolbar.vue +2 -2
  39. package/src/components/form/inputs/RichText/composables/useCommands.ts +53 -97
  40. package/src/components/form/inputs/RichText/composables/useEditor.ts +377 -270
  41. package/src/components/form/inputs/RichText/composables/useEditorKeyboard.ts +124 -58
  42. package/src/components/form/inputs/RichText/config.ts +27 -3
  43. package/src/components/form/inputs/RichText/editor.css +29 -0
  44. package/src/components/form/inputs/RichText/index.vue +129 -55
  45. package/src/components/form/inputs/RichText/richTextTypes.d.ts +35 -49
  46. package/src/components/form/inputs/RichText/utils/commands.ts +181 -0
  47. package/src/components/form/inputs/RichText/utils/media.ts +64 -3
  48. package/src/components/form/inputs/RichText/utils/selection.ts +40 -5
@@ -1,113 +1,69 @@
1
1
  import type { EditorState } from '../richTextTypes'
2
- import type { CommandRegistry } from '../utils/commands'
3
- import { createCommandExecutor } from '../utils/commands'
4
- import { formatting } from '../utils/formatting'
5
- import { insertImage, insertLink } from '../utils/media'
6
- import { addRow, deleteRow, mergeCells, splitCell, insertTable, deleteTable, insertColumn, deleteColumn, alignColumn } from '../utils/table'
2
+ import { createCommandExecutor, createCommandRegistry } from '../utils/commands'
7
3
 
8
4
  export function useCommands(state: EditorState, debug?: { logCommand: (command: string, value?: string) => void }) {
9
- const format = () => formatting(state)
5
+ const commands = createCommandRegistry(state)
6
+ const executor = createCommandExecutor(state, commands)
10
7
 
11
- const commands: CommandRegistry = {
12
- // Text formatting commands
13
- bold: {
14
- name: 'Bold',
15
- execute: (state: EditorState) => { format().text('bold') },
16
- isActive: (state: EditorState) => state.selectedStyles.has('bold')
17
- },
18
- italic: {
19
- name: 'Italic',
20
- execute: (state: EditorState) => { format().text('italic') },
21
- isActive: (state: EditorState) => state.selectedStyles.has('italic')
22
- },
23
- underline: {
24
- name: 'Underline',
25
- execute: (state: EditorState) => { format().text('underline') },
26
- isActive: (state: EditorState) => state.selectedStyles.has('underline')
27
- },
8
+ return {
9
+ execute: (command: string, value?: string) => {
10
+ if (!state.doc) return
28
11
 
29
- // Block formatting commands
30
- h1: { name: 'Heading 1', execute: (state: EditorState) => { format().block('h1', 'h1') }, isActive: (state: EditorState) => state.selectedStyles.has('h1') },
31
- h2: { name: 'Heading 2', execute: (state: EditorState) => { format().block('h2', 'h2') }, isActive: (state: EditorState) => state.selectedStyles.has('h2') },
32
- h3: { name: 'Heading 3', execute: (state: EditorState) => { format().block('h3', 'h3') }, isActive: (state: EditorState) => state.selectedStyles.has('h3') },
33
- h4: { name: 'Heading 4', execute: (state: EditorState) => { format().block('h4', 'h4') }, isActive: (state: EditorState) => state.selectedStyles.has('h4') },
34
- h5: { name: 'Heading 5', execute: (state: EditorState) => { format().block('h5', 'h5') }, isActive: (state: EditorState) => state.selectedStyles.has('h5') },
35
- h6: { name: 'Heading 6', execute: (state: EditorState) => { format().block('h6', 'h6') }, isActive: (state: EditorState) => state.selectedStyles.has('h6') },
36
- p: { name: 'Paragraph', execute: (state: EditorState) => { format().block('p', 'p') }, isActive: (state: EditorState) => state.selectedStyles.has('p') },
37
- blockquote: {
38
- name: 'Blockquote',
39
- execute: (state: EditorState) => { format().block('blockquote', 'blockquote') },
40
- isActive: (state: EditorState) => state.selectedStyles.has('blockquote')
41
- },
12
+ console.log('[useCommands.execute] Starting command execution:', command, value)
42
13
 
43
- // List commands
44
- orderedList: {
45
- name: 'Ordered List',
46
- execute: (state: EditorState) => { format().list('orderedList') },
47
- isActive: (state: EditorState) => state.selectedStyles.has('orderedList')
48
- },
49
- unorderedList: {
50
- name: 'Unordered List',
51
- execute: (state: EditorState) => { format().list('unorderedList') },
52
- isActive: (state: EditorState) => state.selectedStyles.has('unorderedList')
53
- },
14
+ // Log command if debug is enabled
15
+ debug?.logCommand(command, value)
54
16
 
55
- // Table commands
56
- insertTable: {
57
- name: 'Insert Table',
58
- execute: (state: EditorState, value?: string) => {
59
- const [rows, cols] = value?.split('x').map(Number) || [3, 3]
60
- insertTable(rows, cols, state)
17
+ // Handle view state commands directly
18
+ if (['splitView', 'codeView', 'fullScreen'].includes(command)) {
19
+ console.log('[useCommands.execute] Handling view state command:', command)
20
+ switch (command) {
21
+ case 'splitView':
22
+ state.isSplitView = !state.isSplitView
23
+ return
24
+ case 'codeView':
25
+ state.isCodeView = !state.isCodeView
26
+ return
27
+ case 'fullScreen':
28
+ state.isFullscreen = !state.isFullscreen
29
+ return
30
+ }
61
31
  }
62
- },
63
- deleteTable: { name: 'Delete Table', execute: (state: EditorState) => state.range && deleteTable(state.range) },
64
- mergeCells: { name: 'Merge Cells', execute: (state: EditorState) => state.range && state.doc && mergeCells(state.range, state.doc) },
65
- splitCells: { name: 'Split Cells', execute: (state: EditorState) => state.range && state.doc && splitCell(state.range, state.doc) },
66
- addRowBefore: { name: 'Add Row Before', execute: (state: EditorState) => state.range && state.doc && addRow('before', state.range, state.doc) },
67
- addRowAfter: { name: 'Add Row After', execute: (state: EditorState) => state.range && state.doc && addRow('after', state.range, state.doc) },
68
- deleteRow: { name: 'Delete Row', execute: (state: EditorState) => state.range && deleteRow(state.range) },
69
- insertColumnLeft: { name: 'Insert Column Left', execute: (state: EditorState) => state.range && insertColumn('before', state.range) },
70
- insertColumnRight: { name: 'Insert Column Right', execute: (state: EditorState) => state.range && insertColumn('after', state.range) },
71
- deleteColumn: { name: 'Delete Column', execute: (state: EditorState) => state.range && deleteColumn(state.range) },
72
32
 
73
- // Alignment commands
74
- alignLeft: { name: 'Align Left', execute: (state: EditorState) => state.range && alignColumn(state.range, 'left') },
75
- alignCenter: { name: 'Align Center', execute: (state: EditorState) => state.range && alignColumn(state.range, 'center') },
76
- alignRight: { name: 'Align Right', execute: (state: EditorState) => state.range && alignColumn(state.range, 'right') },
77
- alignJustify: { name: 'Align Justify', execute: (state: EditorState) => state.range && alignColumn(state.range, 'justify') },
33
+ // Focus the editor before executing command
34
+ console.log('[useCommands.execute] Focusing editor')
35
+ state.doc.body.focus()
78
36
 
79
- // Media commands
80
- image: { name: 'Insert Image', execute: (state: EditorState) => state.modal && insertImage(state.modal, state) },
81
- link: { name: 'Insert Link', execute: (state: EditorState) => state.modal && state.range && insertLink(state.modal, state) },
37
+ // Execute the command
38
+ console.log('[useCommands.execute] Executing command')
39
+ executor.execute(command, value)
82
40
 
83
- // Other commands
84
- clear: { name: 'Clear Formatting', execute: (state: EditorState) => { format().clear() } },
85
- indent: { name: 'Indent', execute: (state: EditorState) => { format().text('indent') } },
86
- outdent: { name: 'Outdent', execute: (state: EditorState) => { format().text('outdent') } },
87
- fullScreen: {
88
- name: 'Full Screen',
89
- execute: (state: EditorState) => { state.isFullscreen = !state.isFullscreen },
90
- isActive: (state: EditorState) => state.isFullscreen
91
- },
92
- splitView: {
93
- name: 'Split View',
94
- execute: (state: EditorState) => { state.isSplitView = !state.isSplitView },
95
- isActive: (state: EditorState) => state.isSplitView
96
- },
97
- codeView: {
98
- name: 'Code View',
99
- execute: (state: EditorState) => { state.isCodeView = !state.isCodeView },
100
- isActive: (state: EditorState) => state.isCodeView
101
- }
102
- }
41
+ // Update content state only if it has changed
42
+ const newContent = state.doc.body.innerHTML
43
+ console.log('[useCommands.execute] Checking content changes')
44
+ console.log('[useCommands.execute] Old content length:', state.content.length)
45
+ console.log('[useCommands.execute] New content length:', newContent.length)
46
+ if (newContent !== state.content) {
47
+ console.log('[useCommands.execute] Content changed, updating state')
48
+ state.content = newContent
49
+ }
103
50
 
104
- const executor = createCommandExecutor(state, commands)
51
+ // Update selection state if needed
52
+ console.log('[useCommands.execute] Checking selection changes')
53
+ const selection = state.doc.getSelection()
54
+ if (selection?.rangeCount) {
55
+ const hasSelectionChanged = !state.selection
56
+ || state.selection !== selection
57
+ || state.rangeCount !== selection.rangeCount
105
58
 
106
- // Wrap executor with debug logging if available
107
- return {
108
- execute: (command: string, value?: string) => {
109
- debug?.logCommand(command, value)
110
- executor.execute(command, value)
59
+ console.log('[useCommands.execute] Selection changed:', hasSelectionChanged)
60
+ if (hasSelectionChanged) {
61
+ console.log('[useCommands.execute] Updating selection state')
62
+ state.selection = selection
63
+ state.range = selection.getRangeAt(0).cloneRange()
64
+ state.rangeCount = selection.rangeCount
65
+ }
66
+ }
111
67
  },
112
68
  isActive: executor.isActive,
113
69
  getValue: executor.getValue