smartrte-react 0.2.8 → 0.3.0
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/CHANGELOG.md +10 -0
- package/dist/adapters/coreBold.d.ts +5 -0
- package/dist/adapters/coreBold.js +3 -0
- package/dist/adapters/domSelectionBridge.d.ts +6 -0
- package/dist/adapters/domSelectionBridge.js +185 -0
- package/dist/adapters/domSmartDocument.d.ts +10 -0
- package/dist/adapters/domSmartDocument.js +216 -0
- package/dist/adapters/domTargets.d.ts +3 -0
- package/dist/adapters/domTargets.js +3 -0
- package/dist/adapters/inlineMarkCoreExecution.d.ts +9 -0
- package/dist/adapters/inlineMarkCoreExecution.js +25 -0
- package/dist/adapters/internalFlags.d.ts +13 -0
- package/dist/adapters/internalFlags.js +36 -0
- package/dist/adapters/shadowMode.d.ts +23 -0
- package/dist/adapters/shadowMode.js +33 -0
- package/dist/components/ClassicEditor.js +1793 -283
- package/dist/components/LinkEditorPopover.d.ts +20 -0
- package/dist/components/LinkEditorPopover.js +87 -0
- package/dist/standalone/editor.js +841 -0
- package/dist/theme.d.ts +1 -1
- package/dist/theme.js +76 -0
- package/package.json +12 -7
package/dist/theme.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export type SrteTheme = 'light' | 'dark';
|
|
2
|
-
export declare const SRTE_DEFAULT_CSS = "\n.srte-editor {\n --srte-bg: #ffffff;\n --srte-text: #111111;\n --srte-text-muted: #4b5563;\n --srte-border: #dddddd;\n --srte-border-light: #eeeeee;\n --srte-toolbar-bg: #ffffff;\n --srte-input-bg: #ffffff;\n --srte-input-text: #111111;\n --srte-input-border: #e5e7eb;\n --srte-modal-backdrop: rgba(0, 0, 0, 0.35);\n --srte-modal-backdrop-filter: blur(2px);\n --srte-modal-bg: #ffffff;\n --srte-modal-text: #000000;\n --srte-menu-bg: #ffffff;\n --srte-menu-text: #111111;\n --srte-menu-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);\n --srte-accent: #1e90ff;\n --srte-accent-bg: rgba(30, 144, 255, 0.15);\n --srte-danger: #dc2626;\n --srte-primary: #2563eb;\n --srte-surface-subtle: #f3f4f6;\n --srte-on-primary: #ffffff;\n --srte-cancel-bg: #f3f4f6;\n}\n.srte-editor.srte-dark {\n --srte-bg: #1e1e1e;\n --srte-text: #e0e0e0;\n --srte-text-muted: #9ca3af;\n --srte-border: #3a3a3a;\n --srte-border-light: #2e2e2e;\n --srte-toolbar-bg: #252525;\n --srte-input-bg: #2a2a2a;\n --srte-input-text: #e0e0e0;\n --srte-input-border: #444444;\n --srte-modal-backdrop: rgba(0, 0, 0, 0.22);\n --srte-modal-backdrop-filter: blur(10px) saturate(0.9);\n --srte-modal-bg: #1e293b;\n --srte-modal-text: #e0e0e0;\n --srte-menu-bg: #1e293b;\n --srte-menu-text: #e0e0e0;\n --srte-menu-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n --srte-accent: #3b9eff;\n --srte-accent-bg: rgba(59, 158, 255, 0.2);\n --srte-danger: #ef4444;\n --srte-primary: #3b82f6;\n --srte-surface-subtle: #333333;\n --srte-on-primary: #ffffff;\n --srte-cancel-bg: #333333;\n}\n.srte-editor [contenteditable] blockquote {\n border-left: 4px solid var(--srte-accent);\n margin: 0.75em 0;\n padding: 0.5em 1em;\n background: var(--srte-surface-subtle);\n color: var(--srte-text);\n}\n.srte-editor [contenteditable] p,\n.srte-editor [contenteditable] h1,\n.srte-editor [contenteditable] h2,\n.srte-editor [contenteditable] h3 {\n color: inherit;\n}\n.srte-editor [contenteditable] p {\n display: block;\n margin: 0 0 0.75em;\n font-size: 1em;\n font-weight: 400;\n line-height: 1.6;\n}\n.srte-editor [contenteditable] h1,\n.srte-editor [contenteditable] h2,\n.srte-editor [contenteditable] h3 {\n display: block;\n margin: 0.75em 0 0.4em;\n font-weight: 700;\n line-height: 1.25;\n}\n.srte-editor [contenteditable] h1 {\n font-size: 2em;\n}\n.srte-editor [contenteditable] h2 {\n font-size: 1.5em;\n}\n.srte-editor [contenteditable] h3 {\n font-size: 1.25em;\n}\n.srte-editor [contenteditable] > :first-child {\n margin-top: 0;\n}\n.srte-editor [contenteditable] ul {\n list-style-type: disc;\n list-style-position: outside;\n margin: 0.75em 0;\n padding-left: 1.75em;\n}\n.srte-editor [contenteditable] ol {\n list-style-type: decimal;\n list-style-position: outside;\n margin: 0.75em 0;\n padding-left: 1.75em;\n}\n.srte-editor [contenteditable] li {\n display: list-item;\n margin: 0.25em 0;\n padding-left: 0.25em;\n}\n.srte-editor [contenteditable] li::marker {\n color: currentColor;\n}\n.srte-editor.srte-dark [contenteditable] [style*=\"color\"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *),\n.srte-editor.srte-dark [contenteditable] [style*=\"background\"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *) {\n color: var(--srte-text) !important;\n background: transparent !important;\n background-color: transparent !important;\n}\n.srte-editor [contenteditable] sub,\n.srte-editor [contenteditable] sup {\n line-height: 0;\n}\n";
|
|
2
|
+
export declare const SRTE_DEFAULT_CSS = "\n.srte-editor {\n --srte-bg: #ffffff;\n --srte-text: #111111;\n --srte-text-muted: #4b5563;\n --srte-border: #dddddd;\n --srte-border-light: #eeeeee;\n --srte-toolbar-bg: #ffffff;\n --srte-input-bg: #ffffff;\n --srte-input-text: #111111;\n --srte-input-border: #e5e7eb;\n --srte-modal-backdrop: rgba(0, 0, 0, 0.35);\n --srte-modal-backdrop-filter: blur(2px);\n --srte-modal-bg: #ffffff;\n --srte-modal-text: #000000;\n --srte-menu-bg: #ffffff;\n --srte-menu-text: #111111;\n --srte-menu-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);\n --srte-accent: #1e90ff;\n --srte-accent-bg: rgba(30, 144, 255, 0.15);\n --srte-danger: #dc2626;\n --srte-primary: #2563eb;\n --srte-surface-subtle: #f3f4f6;\n --srte-on-primary: #ffffff;\n --srte-cancel-bg: #f3f4f6;\n --srte-code-bg: #f6f8fa;\n --srte-code-text: #24292f;\n}\n.srte-editor.srte-dark {\n --srte-bg: #1e1e1e;\n --srte-text: #e0e0e0;\n --srte-text-muted: #9ca3af;\n --srte-border: #3a3a3a;\n --srte-border-light: #2e2e2e;\n --srte-toolbar-bg: #252525;\n --srte-input-bg: #2a2a2a;\n --srte-input-text: #e0e0e0;\n --srte-input-border: #444444;\n --srte-modal-backdrop: rgba(0, 0, 0, 0.22);\n --srte-modal-backdrop-filter: blur(10px) saturate(0.9);\n --srte-modal-bg: #1e293b;\n --srte-modal-text: #e0e0e0;\n --srte-menu-bg: #1e293b;\n --srte-menu-text: #e0e0e0;\n --srte-menu-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n --srte-accent: #3b9eff;\n --srte-accent-bg: rgba(59, 158, 255, 0.2);\n --srte-danger: #ef4444;\n --srte-primary: #3b82f6;\n --srte-surface-subtle: #333333;\n --srte-on-primary: #ffffff;\n --srte-cancel-bg: #333333;\n --srte-code-bg: #111827;\n --srte-code-text: #e5e7eb;\n}\n.srte-editor [contenteditable] blockquote {\n border-left: 4px solid var(--srte-accent);\n margin: 0.75em 0;\n padding: 0.5em 1em;\n background: var(--srte-surface-subtle);\n color: var(--srte-text);\n}\n.srte-editor [contenteditable] p,\n.srte-editor [contenteditable] h1,\n.srte-editor [contenteditable] h2,\n.srte-editor [contenteditable] h3 {\n color: inherit;\n}\n.srte-editor [contenteditable] p {\n display: block;\n margin: 0 0 0.75em;\n font-size: 1em;\n font-weight: 400;\n line-height: 1.6;\n}\n.srte-editor [contenteditable] p[data-srte-caret-boundary=\"true\"] {\n min-height: 1.6em;\n}\n.srte-editor [contenteditable] h1,\n.srte-editor [contenteditable] h2,\n.srte-editor [contenteditable] h3 {\n display: block;\n margin: 0.75em 0 0.4em;\n font-weight: 700;\n line-height: 1.25;\n}\n.srte-editor [contenteditable] h1 {\n font-size: 2em;\n}\n.srte-editor [contenteditable] h2 {\n font-size: 1.5em;\n}\n.srte-editor [contenteditable] h3 {\n font-size: 1.25em;\n}\n.srte-editor [contenteditable] > :first-child {\n margin-top: 0;\n}\n.srte-editor [contenteditable] ul {\n list-style-type: disc;\n list-style-position: outside;\n margin: 0.75em 0;\n padding-left: 1.75em;\n}\n.srte-editor [contenteditable] ol {\n list-style-type: decimal;\n list-style-position: outside;\n margin: 0.75em 0;\n padding-left: 1.75em;\n}\n.srte-editor [contenteditable] li {\n display: list-item;\n margin: 0.25em 0;\n padding-left: 0.25em;\n}\n.srte-editor [contenteditable] li::marker {\n color: currentColor;\n}\n.srte-editor [contenteditable] table {\n width: 100%;\n margin: 0.75em 0;\n border-collapse: collapse;\n}\n.srte-editor [contenteditable] th,\n.srte-editor [contenteditable] td {\n padding: 8px;\n border: 1px solid var(--srte-border);\n vertical-align: top;\n}\n.srte-editor [contenteditable] th {\n background: var(--srte-surface-subtle);\n font-weight: 600;\n text-align: left;\n}\n.srte-editor [contenteditable] td > h1,\n.srte-editor [contenteditable] td > h2,\n.srte-editor [contenteditable] td > h3,\n.srte-editor [contenteditable] th > h1,\n.srte-editor [contenteditable] th > h2,\n.srte-editor [contenteditable] th > h3 {\n margin: 0 0 0.4em;\n overflow-wrap: anywhere;\n}\n.srte-editor [contenteditable] pre {\n display: block;\n margin: 0.75em 0;\n padding: 12px 14px;\n overflow-x: auto;\n border: 1px solid var(--srte-border);\n border-radius: 6px;\n background: var(--srte-code-bg);\n color: var(--srte-code-text);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", monospace;\n font-size: 0.9em;\n line-height: 1.55;\n white-space: pre-wrap;\n}\n.srte-editor [contenteditable] pre code {\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n.srte-editor [contenteditable] code:not(pre code) {\n padding: 0.1em 0.35em;\n border-radius: 3px;\n background: var(--srte-code-bg);\n color: var(--srte-code-text);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", monospace;\n font-size: 0.9em;\n}\n.srte-editor [contenteditable] a,\n.srte-editor [contenteditable] a:visited {\n color: var(--srte-primary) !important;\n text-decoration: underline !important;\n text-decoration-thickness: 1px !important;\n text-underline-offset: 2px !important;\n cursor: pointer;\n}\n.srte-editor [contenteditable] a:hover {\n color: var(--srte-accent) !important;\n}\n.srte-editor [contenteditable] a:focus-visible {\n outline: 2px solid var(--srte-accent);\n outline-offset: 2px;\n}\n.srte-editor.srte-dark [contenteditable] [style*=\"color\"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *),\n.srte-editor.srte-dark [contenteditable] [style*=\"background\"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *) {\n color: var(--srte-text) !important;\n background: transparent !important;\n background-color: transparent !important;\n}\n.srte-editor [contenteditable] sub,\n.srte-editor [contenteditable] sup {\n line-height: 0;\n}\n";
|
|
3
3
|
export declare function ensureStyleSheet(): void;
|
package/dist/theme.js
CHANGED
|
@@ -23,6 +23,8 @@ export const SRTE_DEFAULT_CSS = `
|
|
|
23
23
|
--srte-surface-subtle: #f3f4f6;
|
|
24
24
|
--srte-on-primary: #ffffff;
|
|
25
25
|
--srte-cancel-bg: #f3f4f6;
|
|
26
|
+
--srte-code-bg: #f6f8fa;
|
|
27
|
+
--srte-code-text: #24292f;
|
|
26
28
|
}
|
|
27
29
|
.srte-editor.srte-dark {
|
|
28
30
|
--srte-bg: #1e1e1e;
|
|
@@ -48,6 +50,8 @@ export const SRTE_DEFAULT_CSS = `
|
|
|
48
50
|
--srte-surface-subtle: #333333;
|
|
49
51
|
--srte-on-primary: #ffffff;
|
|
50
52
|
--srte-cancel-bg: #333333;
|
|
53
|
+
--srte-code-bg: #111827;
|
|
54
|
+
--srte-code-text: #e5e7eb;
|
|
51
55
|
}
|
|
52
56
|
.srte-editor [contenteditable] blockquote {
|
|
53
57
|
border-left: 4px solid var(--srte-accent);
|
|
@@ -69,6 +73,9 @@ export const SRTE_DEFAULT_CSS = `
|
|
|
69
73
|
font-weight: 400;
|
|
70
74
|
line-height: 1.6;
|
|
71
75
|
}
|
|
76
|
+
.srte-editor [contenteditable] p[data-srte-caret-boundary="true"] {
|
|
77
|
+
min-height: 1.6em;
|
|
78
|
+
}
|
|
72
79
|
.srte-editor [contenteditable] h1,
|
|
73
80
|
.srte-editor [contenteditable] h2,
|
|
74
81
|
.srte-editor [contenteditable] h3 {
|
|
@@ -109,6 +116,75 @@ export const SRTE_DEFAULT_CSS = `
|
|
|
109
116
|
.srte-editor [contenteditable] li::marker {
|
|
110
117
|
color: currentColor;
|
|
111
118
|
}
|
|
119
|
+
.srte-editor [contenteditable] table {
|
|
120
|
+
width: 100%;
|
|
121
|
+
margin: 0.75em 0;
|
|
122
|
+
border-collapse: collapse;
|
|
123
|
+
}
|
|
124
|
+
.srte-editor [contenteditable] th,
|
|
125
|
+
.srte-editor [contenteditable] td {
|
|
126
|
+
padding: 8px;
|
|
127
|
+
border: 1px solid var(--srte-border);
|
|
128
|
+
vertical-align: top;
|
|
129
|
+
}
|
|
130
|
+
.srte-editor [contenteditable] th {
|
|
131
|
+
background: var(--srte-surface-subtle);
|
|
132
|
+
font-weight: 600;
|
|
133
|
+
text-align: left;
|
|
134
|
+
}
|
|
135
|
+
.srte-editor [contenteditable] td > h1,
|
|
136
|
+
.srte-editor [contenteditable] td > h2,
|
|
137
|
+
.srte-editor [contenteditable] td > h3,
|
|
138
|
+
.srte-editor [contenteditable] th > h1,
|
|
139
|
+
.srte-editor [contenteditable] th > h2,
|
|
140
|
+
.srte-editor [contenteditable] th > h3 {
|
|
141
|
+
margin: 0 0 0.4em;
|
|
142
|
+
overflow-wrap: anywhere;
|
|
143
|
+
}
|
|
144
|
+
.srte-editor [contenteditable] pre {
|
|
145
|
+
display: block;
|
|
146
|
+
margin: 0.75em 0;
|
|
147
|
+
padding: 12px 14px;
|
|
148
|
+
overflow-x: auto;
|
|
149
|
+
border: 1px solid var(--srte-border);
|
|
150
|
+
border-radius: 6px;
|
|
151
|
+
background: var(--srte-code-bg);
|
|
152
|
+
color: var(--srte-code-text);
|
|
153
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
154
|
+
font-size: 0.9em;
|
|
155
|
+
line-height: 1.55;
|
|
156
|
+
white-space: pre-wrap;
|
|
157
|
+
}
|
|
158
|
+
.srte-editor [contenteditable] pre code {
|
|
159
|
+
padding: 0;
|
|
160
|
+
border: 0;
|
|
161
|
+
background: transparent;
|
|
162
|
+
color: inherit;
|
|
163
|
+
font: inherit;
|
|
164
|
+
}
|
|
165
|
+
.srte-editor [contenteditable] code:not(pre code) {
|
|
166
|
+
padding: 0.1em 0.35em;
|
|
167
|
+
border-radius: 3px;
|
|
168
|
+
background: var(--srte-code-bg);
|
|
169
|
+
color: var(--srte-code-text);
|
|
170
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
171
|
+
font-size: 0.9em;
|
|
172
|
+
}
|
|
173
|
+
.srte-editor [contenteditable] a,
|
|
174
|
+
.srte-editor [contenteditable] a:visited {
|
|
175
|
+
color: var(--srte-primary) !important;
|
|
176
|
+
text-decoration: underline !important;
|
|
177
|
+
text-decoration-thickness: 1px !important;
|
|
178
|
+
text-underline-offset: 2px !important;
|
|
179
|
+
cursor: pointer;
|
|
180
|
+
}
|
|
181
|
+
.srte-editor [contenteditable] a:hover {
|
|
182
|
+
color: var(--srte-accent) !important;
|
|
183
|
+
}
|
|
184
|
+
.srte-editor [contenteditable] a:focus-visible {
|
|
185
|
+
outline: 2px solid var(--srte-accent);
|
|
186
|
+
outline-offset: 2px;
|
|
187
|
+
}
|
|
112
188
|
.srte-editor.srte-dark [contenteditable] [style*="color"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *),
|
|
113
189
|
.srte-editor.srte-dark [contenteditable] [style*="background"]:not(td):not(th):not(.srte-preserve-colors):not(.srte-preserve-colors *) {
|
|
114
190
|
color: var(--srte-text) !important;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "smartrte-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "A powerful, feature-rich Rich Text Editor for React with support for tables, mathematical formulas (LaTeX/KaTeX), and media management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
-
"
|
|
11
|
+
"!dist/**/*.test.js",
|
|
12
|
+
"!dist/**/*.test.d.ts",
|
|
13
|
+
"README.md",
|
|
14
|
+
"CHANGELOG.md"
|
|
12
15
|
],
|
|
13
16
|
"keywords": [
|
|
14
17
|
"react",
|
|
@@ -40,13 +43,13 @@
|
|
|
40
43
|
"license": "MIT",
|
|
41
44
|
"scripts": {
|
|
42
45
|
"build": "tsc -p tsconfig.json",
|
|
43
|
-
"prepublishOnly": "
|
|
46
|
+
"prepublishOnly": "npm run build",
|
|
44
47
|
"dev": "pnpm build",
|
|
45
|
-
"lint": "
|
|
46
|
-
"test": "vitest run
|
|
48
|
+
"lint": "tsc -p tsconfig.json --noEmit",
|
|
49
|
+
"test": "vitest run --passWithNoTests",
|
|
47
50
|
"storybook": "storybook dev -p 6006",
|
|
48
51
|
"build-storybook": "storybook build",
|
|
49
|
-
"e2e": "playwright test
|
|
52
|
+
"e2e": "playwright test --pass-with-no-tests"
|
|
50
53
|
},
|
|
51
54
|
"publishConfig": {
|
|
52
55
|
"access": "public"
|
|
@@ -66,6 +69,7 @@
|
|
|
66
69
|
"@types/react-dom": "^18.3.0",
|
|
67
70
|
"react": "18.3.1",
|
|
68
71
|
"react-dom": "18.3.1",
|
|
72
|
+
"jsdom": "^25.0.1",
|
|
69
73
|
"storybook": "^8.6.14",
|
|
70
74
|
"typescript": "^5.6.2",
|
|
71
75
|
"vite": "^5.4.8",
|
|
@@ -74,6 +78,7 @@
|
|
|
74
78
|
"dependencies": {
|
|
75
79
|
"jszip": "^3.10.1",
|
|
76
80
|
"mammoth": "^1.11.0",
|
|
77
|
-
"pdfjs-dist": "^5.4.530"
|
|
81
|
+
"pdfjs-dist": "^5.4.530",
|
|
82
|
+
"smartrte-core": "^0.2.0"
|
|
78
83
|
}
|
|
79
84
|
}
|