quikdown 1.1.0 → 1.2.2

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 +46 -6
  2. package/dist/quikdown.cjs +5 -5
  3. package/dist/quikdown.dark.css +1 -1
  4. package/dist/quikdown.esm.js +5 -5
  5. package/dist/quikdown.esm.min.js +2 -2
  6. package/dist/quikdown.esm.min.js.map +1 -1
  7. package/dist/quikdown.light.css +1 -1
  8. package/dist/quikdown.umd.js +5 -5
  9. package/dist/quikdown.umd.min.js +2 -2
  10. package/dist/quikdown.umd.min.js.map +1 -1
  11. package/dist/quikdown_ast.cjs +513 -0
  12. package/dist/quikdown_ast.d.ts +227 -0
  13. package/dist/quikdown_ast.esm.js +511 -0
  14. package/dist/quikdown_ast.esm.min.js +8 -0
  15. package/dist/quikdown_ast.esm.min.js.map +1 -0
  16. package/dist/quikdown_ast.umd.js +519 -0
  17. package/dist/quikdown_ast.umd.min.js +8 -0
  18. package/dist/quikdown_ast.umd.min.js.map +1 -0
  19. package/dist/quikdown_ast_html.cjs +1058 -0
  20. package/dist/quikdown_ast_html.d.ts +68 -0
  21. package/dist/quikdown_ast_html.esm.js +1056 -0
  22. package/dist/quikdown_ast_html.esm.min.js +8 -0
  23. package/dist/quikdown_ast_html.esm.min.js.map +1 -0
  24. package/dist/quikdown_ast_html.umd.js +1064 -0
  25. package/dist/quikdown_ast_html.umd.min.js +8 -0
  26. package/dist/quikdown_ast_html.umd.min.js.map +1 -0
  27. package/dist/quikdown_bd.cjs +12 -12
  28. package/dist/quikdown_bd.esm.js +12 -12
  29. package/dist/quikdown_bd.esm.min.js +2 -2
  30. package/dist/quikdown_bd.esm.min.js.map +1 -1
  31. package/dist/quikdown_bd.umd.js +12 -12
  32. package/dist/quikdown_bd.umd.min.js +2 -2
  33. package/dist/quikdown_bd.umd.min.js.map +1 -1
  34. package/dist/quikdown_edit.cjs +2297 -136
  35. package/dist/quikdown_edit.d.ts +110 -132
  36. package/dist/quikdown_edit.esm.js +2297 -136
  37. package/dist/quikdown_edit.esm.min.js +3 -4
  38. package/dist/quikdown_edit.esm.min.js.map +1 -1
  39. package/dist/quikdown_edit.umd.js +2298 -137
  40. package/dist/quikdown_edit.umd.min.js +3 -4
  41. package/dist/quikdown_edit.umd.min.js.map +1 -1
  42. package/dist/quikdown_json.cjs +556 -0
  43. package/dist/quikdown_json.d.ts +48 -0
  44. package/dist/quikdown_json.esm.js +554 -0
  45. package/dist/quikdown_json.esm.min.js +8 -0
  46. package/dist/quikdown_json.esm.min.js.map +1 -0
  47. package/dist/quikdown_json.umd.js +562 -0
  48. package/dist/quikdown_json.umd.min.js +8 -0
  49. package/dist/quikdown_json.umd.min.js.map +1 -0
  50. package/dist/quikdown_yaml.cjs +717 -0
  51. package/dist/quikdown_yaml.d.ts +51 -0
  52. package/dist/quikdown_yaml.esm.js +715 -0
  53. package/dist/quikdown_yaml.esm.min.js +8 -0
  54. package/dist/quikdown_yaml.esm.min.js.map +1 -0
  55. package/dist/quikdown_yaml.umd.js +723 -0
  56. package/dist/quikdown_yaml.umd.min.js +8 -0
  57. package/dist/quikdown_yaml.umd.min.js.map +1 -0
  58. package/package.json +92 -39
@@ -8,188 +8,166 @@ declare module 'quikdown/edit' {
8
8
  * Options for configuring the QuikdownEditor
9
9
  */
10
10
  export interface QuikdownEditorOptions {
11
- /**
12
- * Initial view mode
13
- * @default 'split'
14
- */
11
+ /** Initial view mode @default 'split' */
15
12
  mode?: 'source' | 'split' | 'preview';
16
-
17
- /**
18
- * Theme setting
19
- * @default 'auto'
20
- */
13
+ /** Theme setting @default 'auto' */
21
14
  theme?: 'light' | 'dark' | 'auto';
22
-
23
- /**
24
- * Show/hide the toolbar
25
- * @default true
26
- */
15
+ /** Show/hide the toolbar @default true */
27
16
  showToolbar?: boolean;
28
-
29
- /**
30
- * Enable lazy linefeeds (single \n becomes <br>)
31
- * @default false
32
- */
17
+ /** Show "Remove HR" toolbar button @default false */
18
+ showRemoveHR?: boolean;
19
+ /** Show "Fix Linefeeds" toolbar button @default false */
20
+ showLazyLinefeeds?: boolean;
21
+ /** Show undo/redo toolbar buttons @default false */
22
+ showUndoRedo?: boolean;
23
+ /** Enable lazy linefeeds (single \n becomes <br>) @default false */
33
24
  lazy_linefeeds?: boolean;
34
-
35
- /**
36
- * Debounce delay for updates in milliseconds
37
- * @default 100
38
- */
25
+ /** Use inline styles instead of CSS classes @default false */
26
+ inline_styles?: boolean;
27
+ /** Debounce delay for updates in ms @default 20 */
39
28
  debounceDelay?: number;
40
-
41
- /**
42
- * Placeholder text for empty editor
43
- * @default 'Start typing markdown...'
44
- */
29
+ /** Placeholder text for empty editor */
45
30
  placeholder?: string;
46
-
47
- /**
48
- * Initial markdown content
49
- */
31
+ /** Initial markdown content */
50
32
  initialContent?: string;
51
-
52
- /**
53
- * Plugin configuration
54
- */
33
+ /** Maximum number of undo states to keep @default 100 */
34
+ undoStackSize?: number;
35
+ /** Enable complex fences (CSV, math, SVG, etc.) @default true */
36
+ enableComplexFences?: boolean;
37
+ /** Plugin configuration */
55
38
  plugins?: {
56
39
  /** Enable Highlight.js for syntax highlighting */
57
40
  highlightjs?: boolean;
58
41
  /** Enable Mermaid for diagrams */
59
42
  mermaid?: boolean;
60
43
  };
61
-
62
- /**
63
- * Custom fence handlers
64
- * Maps language identifiers to render functions
65
- */
44
+ /** Custom fence handlers keyed by language */
66
45
  customFences?: {
67
46
  [language: string]: (code: string, lang: string) => string;
68
47
  };
69
-
70
- /**
71
- * Callback fired when content changes
72
- * @param markdown - Current markdown content
73
- * @param html - Rendered HTML
74
- */
48
+ /** Callback fired when content changes */
75
49
  onChange?: (markdown: string, html: string) => void;
76
-
77
- /**
78
- * Callback fired when view mode changes
79
- * @param mode - New view mode
80
- */
50
+ /** Callback fired when view mode changes */
81
51
  onModeChange?: (mode: 'source' | 'split' | 'preview') => void;
82
52
  }
83
53
 
84
54
  /**
85
55
  * QuikdownEditor class - Drop-in markdown editor control
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * import QuikdownEditor from 'quikdown/edit';
60
+ *
61
+ * const editor = new QuikdownEditor('#editor', {
62
+ * mode: 'split',
63
+ * showUndoRedo: true,
64
+ * showRemoveHR: true,
65
+ * onChange: (md, html) => console.log('Changed:', md.length)
66
+ * });
67
+ *
68
+ * editor.setMarkdown('# Hello\n\nWorld');
69
+ * editor.undo();
70
+ * editor.redo();
71
+ * ```
86
72
  */
87
73
  export class QuikdownEditor {
88
- /**
89
- * Create a new QuikdownEditor instance
90
- * @param container - DOM element or CSS selector for the container
91
- * @param options - Editor configuration options
92
- */
93
74
  constructor(container: HTMLElement | string, options?: QuikdownEditorOptions);
94
-
95
- /**
96
- * Get current markdown content
97
- */
75
+
76
+ // --- Properties ---
98
77
  get markdown(): string;
99
-
100
- /**
101
- * Set markdown content
102
- */
103
78
  set markdown(value: string);
104
-
105
- /**
106
- * Get rendered HTML (read-only)
107
- */
108
79
  get html(): string;
109
-
110
- /**
111
- * Get current view mode (read-only)
112
- */
113
80
  get mode(): 'source' | 'split' | 'preview';
114
-
115
- /**
116
- * Set markdown content
117
- * @param markdown - Markdown text to set
118
- */
119
- setMarkdown(markdown: string): void;
120
-
121
- /**
122
- * Get current markdown content
123
- * @returns Current markdown text
124
- */
81
+
82
+ // --- Content ---
83
+ setMarkdown(markdown: string): Promise<void>;
125
84
  getMarkdown(): string;
126
-
127
- /**
128
- * Get rendered HTML
129
- * @returns Rendered HTML
130
- */
131
85
  getHTML(): string;
132
-
133
- /**
134
- * Change view mode
135
- * @param mode - New view mode
136
- */
86
+
87
+ // --- View ---
137
88
  setMode(mode: 'source' | 'split' | 'preview'): void;
138
-
139
- /**
140
- * Enable/disable lazy linefeeds
141
- * @param enabled - Whether to enable lazy linefeeds
142
- */
143
89
  setLazyLinefeeds(enabled: boolean): void;
144
-
145
- /**
146
- * Get lazy linefeeds setting
147
- * @returns Current lazy linefeeds setting
148
- */
149
90
  getLazyLinefeeds(): boolean;
150
-
151
- /**
152
- * Destroy the editor and clean up
153
- */
91
+ setDebounceDelay(delay: number): void;
92
+ getDebounceDelay(): number;
93
+ /** Change theme at runtime */
94
+ setTheme(theme: 'light' | 'dark' | 'auto'): void;
95
+ /** Get the currently configured theme */
96
+ getTheme(): 'light' | 'dark' | 'auto';
97
+
98
+ // --- Undo / Redo ---
99
+ /** Undo the last edit */
100
+ undo(): Promise<void>;
101
+ /** Redo the last undone edit */
102
+ redo(): Promise<void>;
103
+ /** Whether undo is available */
104
+ canUndo(): boolean;
105
+ /** Whether redo is available */
106
+ canRedo(): boolean;
107
+ /** Clear the undo/redo history */
108
+ clearHistory(): void;
109
+
110
+ // --- HR Removal ---
111
+ /** Remove all horizontal rules from the current markdown (fence/table-safe) */
112
+ removeHR(): Promise<void>;
113
+
114
+ // --- Lazy Linefeed Conversion ---
115
+ /** One-time transform: convert single newlines to paragraph breaks (idempotent) */
116
+ convertLazyLinefeeds(): Promise<void>;
117
+
118
+ // --- Static utilities (headless — no editor instance needed) ---
119
+ /** Remove HRs from markdown string (fence/table-safe) */
120
+ static removeHRFromMarkdown(markdown: string): string;
121
+ /** Convert lazy linefeeds in markdown string (idempotent) */
122
+ static convertLazyLinefeeds(markdown: string): string;
123
+
124
+ // --- Clipboard ---
125
+ copy(type: 'markdown' | 'html'): Promise<void>;
126
+ copyRendered(): Promise<void>;
127
+
128
+ // --- Plugin loading ---
129
+ loadScript(src: string): Promise<void>;
130
+ loadCSS(href: string): Promise<void>;
131
+
132
+ // --- Lifecycle ---
154
133
  destroy(): void;
155
134
  }
156
135
 
157
136
  export default QuikdownEditor;
158
137
  }
159
138
 
160
- // For direct import
139
+ // For direct import (non-module usage)
161
140
  declare class QuikdownEditor {
162
- constructor(container: HTMLElement | string, options?: QuikdownEditorOptions);
141
+ constructor(container: HTMLElement | string, options?: import('quikdown/edit').QuikdownEditorOptions);
163
142
  get markdown(): string;
164
143
  set markdown(value: string);
165
144
  get html(): string;
166
145
  get mode(): 'source' | 'split' | 'preview';
167
- setMarkdown(markdown: string): void;
146
+ setMarkdown(markdown: string): Promise<void>;
168
147
  getMarkdown(): string;
169
148
  getHTML(): string;
170
149
  setMode(mode: 'source' | 'split' | 'preview'): void;
171
150
  setLazyLinefeeds(enabled: boolean): void;
172
151
  getLazyLinefeeds(): boolean;
152
+ setDebounceDelay(delay: number): void;
153
+ getDebounceDelay(): number;
154
+ setTheme(theme: 'light' | 'dark' | 'auto'): void;
155
+ getTheme(): 'light' | 'dark' | 'auto';
156
+ undo(): Promise<void>;
157
+ redo(): Promise<void>;
158
+ canUndo(): boolean;
159
+ canRedo(): boolean;
160
+ clearHistory(): void;
161
+ removeHR(): Promise<void>;
162
+ convertLazyLinefeeds(): Promise<void>;
163
+ static removeHRFromMarkdown(markdown: string): string;
164
+ static convertLazyLinefeeds(markdown: string): string;
165
+ copy(type: 'markdown' | 'html'): Promise<void>;
166
+ copyRendered(): Promise<void>;
167
+ loadScript(src: string): Promise<void>;
168
+ loadCSS(href: string): Promise<void>;
173
169
  destroy(): void;
174
170
  }
175
171
 
176
- export interface QuikdownEditorOptions {
177
- mode?: 'source' | 'split' | 'preview';
178
- theme?: 'light' | 'dark' | 'auto';
179
- showToolbar?: boolean;
180
- lazy_linefeeds?: boolean;
181
- debounceDelay?: number;
182
- placeholder?: string;
183
- initialContent?: string;
184
- plugins?: {
185
- highlightjs?: boolean;
186
- mermaid?: boolean;
187
- };
188
- customFences?: {
189
- [language: string]: (code: string, lang: string) => string;
190
- };
191
- onChange?: (markdown: string, html: string) => void;
192
- onModeChange?: (mode: 'source' | 'split' | 'preview') => void;
193
- }
194
-
195
- export default QuikdownEditor;
172
+ export default QuikdownEditor;
173
+ export { QuikdownEditorOptions } from 'quikdown/edit';