@fiduswriter/editor 0.1.52 → 0.1.54

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 (57) hide show
  1. package/css/access_rights_dialog.css +75 -0
  2. package/css/carets.css +17 -0
  3. package/css/chat.css +70 -0
  4. package/css/citation_dialog.css +71 -0
  5. package/css/colors.css +97 -0
  6. package/css/contributors.css +13 -0
  7. package/css/document.css +286 -0
  8. package/css/dot_menu.css +42 -0
  9. package/css/e2ee.css +331 -0
  10. package/css/editor.css +1484 -0
  11. package/css/footnotes.css +81 -0
  12. package/css/margin_boxes.css +514 -0
  13. package/css/merge.css +197 -0
  14. package/css/review.css +7 -0
  15. package/css/table.css +13 -0
  16. package/css/tags.css +36 -0
  17. package/css/tracking.css +63 -0
  18. package/locale/ar/messages.json +558 -0
  19. package/locale/bg/messages.json +558 -0
  20. package/locale/cs/messages.json +558 -0
  21. package/locale/da/messages.json +558 -0
  22. package/locale/de/messages.json +558 -0
  23. package/locale/en/messages.json +558 -0
  24. package/locale/en_US/messages.json +558 -0
  25. package/locale/es/messages.json +558 -0
  26. package/locale/fr/messages.json +558 -0
  27. package/locale/it/messages.json +558 -0
  28. package/locale/ja/messages.json +558 -0
  29. package/locale/ko/messages.json +558 -0
  30. package/locale/nb/messages.json +558 -0
  31. package/locale/nl/messages.json +558 -0
  32. package/locale/pl/messages.json +558 -0
  33. package/locale/pt_BR/messages.json +558 -0
  34. package/locale/pt_PT/messages.json +558 -0
  35. package/locale/ru/messages.json +558 -0
  36. package/locale/sv/messages.json +558 -0
  37. package/locale/tr/messages.json +558 -0
  38. package/locale/zh_Hans/messages.json +558 -0
  39. package/package.json +57 -10
  40. package/static/fonts/document/Cardo-Bold.woff +0 -0
  41. package/static/fonts/document/Cardo-Italic.woff +0 -0
  42. package/static/fonts/document/Cardo-Regular.woff +0 -0
  43. package/static/fonts/document/CrimsonText-Bold.woff +0 -0
  44. package/static/fonts/document/CrimsonText-BoldItalic.woff +0 -0
  45. package/static/fonts/document/CrimsonText-Italic.woff +0 -0
  46. package/static/fonts/document/CrimsonText-Roman.woff +0 -0
  47. package/static/fonts/document/Lobster-1.4.woff +0 -0
  48. package/static/fonts/document/NoticiaText-Bold.woff +0 -0
  49. package/static/fonts/document/NoticiaText-BoldItalic.woff +0 -0
  50. package/static/fonts/document/NoticiaText-Italic.woff +0 -0
  51. package/static/fonts/document/NoticiaText-Regular.woff +0 -0
  52. package/static/fonts/document/OpenSans-Bold.woff +0 -0
  53. package/static/fonts/document/OpenSans-Regular.woff +0 -0
  54. package/static/fonts/document/SourceSansPro-Bold.woff +0 -0
  55. package/static/img/accept_change.avif +0 -0
  56. package/static/img/fidus_face.avif +0 -0
  57. package/static/ogg/chat_notification.ogg +0 -0
@@ -0,0 +1,75 @@
1
+ #access-rights-dialog .fw-green-title {
2
+ margin-bottom: 25px;
3
+ }
4
+
5
+ #access-rights-dialog .edit-right {
6
+ cursor: pointer;
7
+ }
8
+
9
+ /* People tab: keep existing side-by-side layout */
10
+ #access-rights-dialog #people {
11
+ display: flex;
12
+ align-items: flex-start;
13
+ }
14
+
15
+ /* Share-link tab */
16
+ #access-rights-dialog #sharelink {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 8px;
20
+ }
21
+
22
+ #access-rights-dialog .share-token-row {
23
+ border: 1px solid #dddddd;
24
+ border-radius: 4px;
25
+ padding: 8px 10px;
26
+ margin-bottom: 6px;
27
+ background: #fafafa;
28
+ }
29
+
30
+ #access-rights-dialog .share-token-meta {
31
+ margin-bottom: 5px;
32
+ font-size: 0.9em;
33
+ }
34
+
35
+ #access-rights-dialog .share-token-url-row {
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 6px;
39
+ }
40
+
41
+ #access-rights-dialog .share-token-url-input {
42
+ flex: 1;
43
+ font-size: 0.82em;
44
+ padding: 3px 6px;
45
+ border: 1px solid #cccccc;
46
+ border-radius: 3px;
47
+ background: #ffffff;
48
+ color: #444444;
49
+ overflow: hidden;
50
+ text-overflow: ellipsis;
51
+ white-space: nowrap;
52
+ }
53
+
54
+ #access-rights-dialog .fw-ar-loading,
55
+ #access-rights-dialog .fw-ar-error,
56
+ #access-rights-dialog .fw-ar-no-tokens {
57
+ color: #888888;
58
+ font-style: italic;
59
+ margin: 8px 0;
60
+ }
61
+
62
+ #access-rights-dialog .fw-ar-error {
63
+ color: #c0392b;
64
+ }
65
+
66
+ /* Allow overflow in create share token dialog so focus outlines aren't clipped */
67
+ #create-share-token-dialog.fw-dialog {
68
+ overflow: visible;
69
+ }
70
+
71
+ #create-share-token-dialog .fw-button:focus,
72
+ #create-share-token-dialog .fw-button:active {
73
+ outline: 5px solid var(--cs-6-background-focus);
74
+ outline-offset: 2px;
75
+ }
package/css/carets.css ADDED
@@ -0,0 +1,17 @@
1
+ div.caret {
2
+ display: inline;
3
+ border-style: solid;
4
+ border-width: 1px;
5
+ margin: 0 -1px;
6
+ position: relative;
7
+ }
8
+
9
+ div.caret-head {
10
+ position: absolute;
11
+ top: -2px;
12
+ left: -3px;
13
+ width: 2px;
14
+ height: 2px;
15
+ border-width: 2px;
16
+ border-style: solid;
17
+ }
package/css/chat.css ADDED
@@ -0,0 +1,70 @@
1
+ /* For profile list */
2
+
3
+ .avatar {
4
+ border-bottom-width: 4px;
5
+ border-bottom-style: solid;
6
+ }
7
+
8
+ #chat {
9
+ position: fixed;
10
+ bottom: 0;
11
+ right: 5px;
12
+ background-color: var(--cs-white-background);
13
+ width: 250px;
14
+ padding: 10px;
15
+ border: 1px solid var(--cs-white-border);
16
+ border-bottom: 0;
17
+ display: none;
18
+ z-index: 100;
19
+ transition: top 2s ease;
20
+ }
21
+
22
+ #chat.highlighted {
23
+ background-color: var(--chat-highlight-background-color);
24
+ }
25
+
26
+ #chat .resize-button {
27
+ text-align: right;
28
+ cursor: pointer;
29
+ display: block;
30
+ }
31
+
32
+ #chat-container {
33
+ max-height: 300px;
34
+ overflow-y: auto;
35
+ }
36
+
37
+ #chat-container .fw-message {
38
+ padding-top: 5px;
39
+ }
40
+
41
+ #chat-container .fw-message:last-child {
42
+ border-bottom: 1px solid var(--cs-white-border);
43
+ margin-bottom: 6px;
44
+ padding-bottom: 6px;
45
+ }
46
+
47
+ #connected-collaborators {
48
+ position: fixed;
49
+ right: 85px;
50
+ top: 16px;
51
+ }
52
+
53
+ #connected-collaborators .fw-string-avatar,
54
+ #connected-collaborators img {
55
+ box-sizing: border-box;
56
+ width: 35px;
57
+ height: 35px;
58
+ margin-left: -10px;
59
+ display: inline-block;
60
+ vertical-align: middle;
61
+ }
62
+
63
+ #connected-collaborators .fw-string-avatar:first-child,
64
+ #connected-collaborators img:first-child {
65
+ margin-left: 0;
66
+ }
67
+
68
+ #messageform.empty::before {
69
+ color: var(--cs-white-placeholder-text);
70
+ }
@@ -0,0 +1,71 @@
1
+ #configure-citation .fw-ar-container {
2
+ width: 430px;
3
+ }
4
+
5
+ #cited-items h3,
6
+ #my-sources h3 {
7
+ margin-bottom: 15px;
8
+ }
9
+
10
+ #cited-items {
11
+ overflow-y: auto;
12
+ }
13
+
14
+ /* stylelint-disable selector-id-pattern */
15
+ #cite-source-table_filter {
16
+ text-align: left;
17
+ }
18
+
19
+ #cite-source-table_filter input[type="text"] {
20
+ width: 332px;
21
+ height: 33px;
22
+ }
23
+ /* stylelint-enable selector-id-pattern */
24
+
25
+ #selected-cite-source-table .fw-data-table-title > span {
26
+ width: 80px;
27
+ }
28
+
29
+ #cite-source-table .fw-data-table-title > span {
30
+ width: 128px;
31
+ }
32
+
33
+ #configure-citation .datatable-container tbody tr {
34
+ cursor: pointer;
35
+ }
36
+
37
+ #configure-citation .datatable-container tbody tr:nth-child(2n + 1) {
38
+ background-color: var(--table-row-background-color);
39
+ }
40
+
41
+ .fw-cite-parts-table td {
42
+ border: none;
43
+ padding: 0;
44
+ }
45
+
46
+ .fw-cite-parts-table .cite-extra-fields {
47
+ padding-bottom: 5px;
48
+ }
49
+
50
+ .cite-extra-fields > div {
51
+ margin-top: 10px;
52
+ }
53
+
54
+ .cite-extra-fields label {
55
+ display: inline-block;
56
+ width: 40px;
57
+ vertical-align: middle;
58
+ }
59
+
60
+ .cite-extra-fields input {
61
+ width: 230px;
62
+ border-radius: 4px;
63
+ }
64
+
65
+ .selected-source:first-child .order-up {
66
+ display: none;
67
+ }
68
+
69
+ .selected-source:last-child .order-down {
70
+ display: none;
71
+ }
package/css/colors.css ADDED
@@ -0,0 +1,97 @@
1
+ /*
2
+ * Editor-specific custom properties — load after fwtoolkit/css/colors.css
3
+ * and @fiduswriter/frontend/css/colors.css.
4
+ * Does NOT duplicate fwtoolkit's base; only adds editor-related variables.
5
+ */
6
+
7
+ :root {
8
+ /* -----------------------------------------------------------------
9
+ * Chat
10
+ * ----------------------------------------------------------------- */
11
+ --chat-highlight-background-color: #6495ed;
12
+
13
+ /* -----------------------------------------------------------------
14
+ * Input error state
15
+ * ----------------------------------------------------------------- */
16
+ --input-error-background-color: #f34141;
17
+
18
+ /* -----------------------------------------------------------------
19
+ * Track changes
20
+ * ----------------------------------------------------------------- */
21
+ --editor-track-background-color: 45 82 144 / 0.63;
22
+ --editor-track-active-background-color: #788fb4;
23
+ --editor-track-text-color: #ffffff;
24
+
25
+ /* -----------------------------------------------------------------
26
+ * Review
27
+ * ----------------------------------------------------------------- */
28
+ --editor-reviewed: #81f781;
29
+ --editor-text-content-item-background-color: #d3d3d3;
30
+ --editor-text-content-item-hover-background-color: #808080;
31
+ --editor-navigator-background-color: 0 0 0 / 0.8;
32
+ --editor-navigator-color: #ffffff;
33
+ --editor-navigator-scrollbar-background-color: #181818;
34
+ --editor-navigator-scrollbar-background-color-hover: #0f0f0f;
35
+ --editor-navigator-checkbox-color: #444444;
36
+ --editor-navigator-focus-color: #dddddd;
37
+
38
+ /* -----------------------------------------------------------------
39
+ * Comments
40
+ * ----------------------------------------------------------------- */
41
+ --editor-active-comment-background-color: #fffacf;
42
+ --editor-active-help-background-color: #fafafa;
43
+ --editor-active-help-arrow-color: #fafafa;
44
+ --editor-active-track-background-color: #afbed4;
45
+ --editor-major-comment-background-color: #f4c9d9;
46
+ --editor-resolved-comment-icon-color: #3c3c3c;
47
+ --editor-major-comment-icon-color: #af3515;
48
+ --editor-comment-resolved-opacity: 0.7;
49
+ --editor-comment-resolved-text-color: #ffffff;
50
+ --editor-comment-resolved-border-color: #ffffff;
51
+
52
+ /* -----------------------------------------------------------------
53
+ * E2EE — strength meter, badges, banners, info/warning panels
54
+ * ----------------------------------------------------------------- */
55
+
56
+ /* Strength meter */
57
+ --e2ee-strength-very-weak-color: var(--error-border-color, #af3515);
58
+ --e2ee-strength-weak-color: var(--cs-3-background-from, #d3421c);
59
+ --e2ee-strength-fair-color: var(
60
+ --warning-background-color,
61
+ rgb(221 208 63 / 80%)
62
+ );
63
+ --e2ee-strength-strong-color: var(--cs-6-background, #5a7e73);
64
+ --e2ee-strength-very-strong-color: var(--cs-5-background, #4c6860);
65
+
66
+ /* Badge / indicator */
67
+ --e2ee-badge-text-color: var(--cs-4-text, #4c6860);
68
+ --e2ee-badge-icon-color: var(--cs-6-background, #5a7e73);
69
+ --e2ee-badge-encrypted-background-color: var(
70
+ --cs-6-background-hover,
71
+ #96c6b8
72
+ );
73
+ --e2ee-badge-encrypted-text-color: var(--cs-6-background, #5a7e73);
74
+
75
+ /* Warning (share link) */
76
+ --e2ee-warning-background-color: var(--cs-light-background, #f9f9f9);
77
+ --e2ee-warning-border-color: var(--cs-3-background-from, #d3421c);
78
+ --e2ee-warning-text-color: var(--cs-3-background-to, #b13615);
79
+
80
+ /* Info (password reminder) */
81
+ --e2ee-info-background-color: var(--cs-light-background, #f9f9f9);
82
+ --e2ee-info-border-color: var(--cs-2-box-shadow, #3c9fdf);
83
+ --e2ee-info-text-color: var(--cs-2-background, #0d78be);
84
+
85
+ /* Mode banner */
86
+ --e2ee-banner-background-color: var(--cs-6-background-hover, #96c6b8);
87
+ --e2ee-banner-border-color: var(--cs-6-border, #7d948e);
88
+ --e2ee-banner-text-color: var(--cs-6-background, #5a7e73);
89
+ --e2ee-banner-link-color: var(--cs-2-background, #0d78be);
90
+
91
+ /* Encrypted placeholder */
92
+ --e2ee-encrypted-title-color: var(--cs-light-text-secondary, #6e6e6e);
93
+
94
+ /* Input focus */
95
+ --e2ee-input-focus-border-color: var(--cs-2-background, #0d78be);
96
+ --e2ee-input-focus-shadow-color: var(--cs-2-box-shadow, #3c9fdf);
97
+ }
@@ -0,0 +1,13 @@
1
+ .contributor {
2
+ margin-right: 5px;
3
+ margin-bottom: 5px;
4
+ padding: 0 12px;
5
+ height: 34px;
6
+ display: inline-block;
7
+ border-radius: 3px;
8
+ line-height: 34px;
9
+ cursor: pointer;
10
+ color: var(--cs-6-text);
11
+ background: var(--cs-6-background);
12
+ border: 1px solid var(--cs-6-border);
13
+ }
@@ -0,0 +1,286 @@
1
+ #document-editable,
2
+ #footnote-box-container {
3
+ counter-reset: cat-figure cat-equation cat-photo cat-table footnote-counter
4
+ footnote-marker-counter;
5
+ }
6
+
7
+ sup {
8
+ vertical-align: super;
9
+ font-size: smaller;
10
+ }
11
+
12
+ sub {
13
+ vertical-align: sub;
14
+ font-size: smaller;
15
+ }
16
+
17
+ code {
18
+ font-family: monospace;
19
+ background-color: #f0f0f0;
20
+ padding: 2px 4px;
21
+ border-radius: 3px;
22
+ }
23
+
24
+ /* CSL */
25
+
26
+ .csl-bib-body {
27
+ padding-top: 0.5em;
28
+ padding-bottom: 0.5em;
29
+ }
30
+
31
+ .csl-left-margin {
32
+ padding-right: 1ch;
33
+ clear: left;
34
+ float: left;
35
+ white-space: pre;
36
+ }
37
+
38
+ .csl-entry i,
39
+ .citation i {
40
+ font-style: italic;
41
+ }
42
+
43
+ .csl-entry b,
44
+ .citation b {
45
+ font-weight: bold;
46
+ }
47
+
48
+ .csl-entry sup,
49
+ .citation sup {
50
+ vertical-align: super;
51
+ font-size: smaller;
52
+ }
53
+
54
+ .csl-entry sub,
55
+ .citation sub {
56
+ vertical-align: sub;
57
+ font-size: smaller;
58
+ }
59
+
60
+ .csl-indent {
61
+ padding-left: 0.5in;
62
+ }
63
+
64
+ .csl-entry {
65
+ clear: left;
66
+ }
67
+
68
+ .csl-right-inline {
69
+ padding-left: 20px;
70
+ }
71
+
72
+ span.anchor {
73
+ text-decoration: underline;
74
+ color: var(--cs-4-text);
75
+ }
76
+
77
+ figure figcaption {
78
+ margin-top: 10px;
79
+ font-size: 0.9em;
80
+ }
81
+
82
+ figure img {
83
+ max-width: 100%;
84
+ }
85
+
86
+ figure {
87
+ width: calc(80% - 12px);
88
+ border: 1px solid black;
89
+ padding: 5px;
90
+ text-align: center;
91
+ break-inside: avoid;
92
+ cursor: pointer;
93
+ margin: 10%;
94
+ clear: none;
95
+ }
96
+
97
+ .aligned-right {
98
+ float: right;
99
+ }
100
+
101
+ .aligned-left {
102
+ float: left;
103
+ }
104
+
105
+ .aligned-center {
106
+ float: none;
107
+ display: block;
108
+ margin-left: auto;
109
+ margin-right: auto;
110
+ align-content: center;
111
+ }
112
+
113
+ .image-width-100 {
114
+ width: 80%;
115
+ box-sizing: border-box;
116
+ }
117
+
118
+ .image-width-75 {
119
+ width: 55%;
120
+ box-sizing: border-box;
121
+ }
122
+
123
+ .image-width-50 {
124
+ width: 40%;
125
+ box-sizing: border-box;
126
+ }
127
+
128
+ .image-width-25 {
129
+ width: 21%;
130
+ box-sizing: border-box;
131
+ }
132
+
133
+ figure[data-category="figure"] figcaption span.label::after {
134
+ counter-increment: cat-figure;
135
+ content: " " counter(cat-figure);
136
+ }
137
+
138
+ figure[data-category="equation"] figcaption span.label::after {
139
+ counter-increment: cat-equation;
140
+ content: " " counter(cat-equation);
141
+ }
142
+
143
+ figure[data-category="photo"] figcaption span.label::after {
144
+ counter-increment: cat-photo;
145
+ content: " " counter(cat-photo);
146
+ }
147
+
148
+ figure[data-category="table"] figcaption span.label::after,
149
+ table[data-category="table"] caption span.label::after {
150
+ counter-increment: cat-table;
151
+ content: " " counter(cat-table);
152
+ }
153
+
154
+ #footnote-box-container
155
+ figure[data-category="figure"]
156
+ figcaption
157
+ span.label::after {
158
+ content: " " counter(cat-figure) "A";
159
+ }
160
+
161
+ #footnote-box-container
162
+ figure[data-category="photo"]
163
+ figcaption
164
+ span.label::after {
165
+ content: " " counter(cat-photo) "A";
166
+ }
167
+
168
+ #footnote-box-container
169
+ figure[data-category="table"]
170
+ figcaption
171
+ span.label::after,
172
+ #footnote-box-container table[data-category="table"] caption span.label::after {
173
+ content: " " counter(cat-table) "A";
174
+ }
175
+
176
+ figure[data-category="table"] figcaption span.text::before,
177
+ figure[data-category="photo"] figcaption span.text::before,
178
+ figure[data-category="figure"] figcaption span.text::before,
179
+ table[data-category="table"] caption span.text::before {
180
+ content: ": ";
181
+ }
182
+
183
+ table {
184
+ clear: both;
185
+ }
186
+
187
+ .table-25 {
188
+ width: 25%;
189
+ }
190
+
191
+ .table-50 {
192
+ width: 50%;
193
+ }
194
+
195
+ .table-75 {
196
+ width: 75%;
197
+ }
198
+
199
+ .table-100 {
200
+ width: 100%;
201
+ }
202
+
203
+ .table-center {
204
+ margin-left: auto !important;
205
+ margin-right: auto !important;
206
+ clear: both;
207
+ }
208
+
209
+ .table-left {
210
+ float: left;
211
+ }
212
+
213
+ .table-right {
214
+ float: right;
215
+ }
216
+
217
+ .user-contents a {
218
+ text-decoration: underline;
219
+ }
220
+
221
+ .doc table[data-layout="fixed"] {
222
+ table-layout: fixed !important;
223
+ }
224
+
225
+ .doc table[data-layout="auto"] {
226
+ table-layout: auto !important;
227
+ }
228
+
229
+ .doc-title {
230
+ font-size: 48px;
231
+ }
232
+
233
+ .doc .table-of-contents h1,
234
+ .doc .table-of-contents h2,
235
+ .doc .table-of-contents h3,
236
+ .doc .table-of-contents h4,
237
+ .doc .table-of-contents h5,
238
+ .doc .table-of-contents h6 {
239
+ font-size: 1em;
240
+ font-weight: normal;
241
+ margin-bottom: unset;
242
+ }
243
+
244
+ .doc .table-of-contents h2 {
245
+ padding-left: 1em;
246
+ }
247
+
248
+ .doc .table-of-contents h3 {
249
+ padding-left: 2em;
250
+ }
251
+
252
+ .doc .table-of-contents h4 {
253
+ padding-left: 3em;
254
+ }
255
+
256
+ .doc .table-of-contents h5 {
257
+ padding-left: 4em;
258
+ }
259
+
260
+ .doc .table-of-contents h6 {
261
+ padding-left: 5em;
262
+ }
263
+
264
+ .doc .table-of-contents h1.toc {
265
+ font-style: italic;
266
+ }
267
+
268
+ .underline {
269
+ text-decoration: underline;
270
+ }
271
+
272
+ /* Ensure inline code marks stay inline even with higher specificity selectors */
273
+
274
+ /* Cover all block-level elements that can contain inline content */
275
+
276
+ .user-contents p code,
277
+ .user-contents h1 code,
278
+ .user-contents h2 code,
279
+ .user-contents h3 code,
280
+ .user-contents h4 code,
281
+ .user-contents h5 code,
282
+ .user-contents h6 code,
283
+ .user-contents figcaption code,
284
+ .user-contents caption code {
285
+ display: inline;
286
+ }
@@ -0,0 +1,42 @@
1
+ .content-container {
2
+ position: relative;
3
+ z-index: 5;
4
+ }
5
+
6
+ .fw-content-menu-btn {
7
+ background-color: transparent;
8
+ background-repeat: no-repeat;
9
+ border: 1px;
10
+ cursor: pointer;
11
+ overflow: hidden;
12
+ outline: none;
13
+ position: absolute;
14
+ right: -15px;
15
+ top: 0;
16
+ }
17
+
18
+ table .fw-content-menu-btn {
19
+ right: -7px;
20
+ }
21
+
22
+ .figure-menu-btn {
23
+ background-color: transparent;
24
+ background-repeat: no-repeat;
25
+ border: 1px;
26
+ cursor: pointer;
27
+ overflow: hidden;
28
+ outline: none;
29
+ right: -22px;
30
+ top: -7px;
31
+ float: right;
32
+ position: relative;
33
+ }
34
+
35
+ .dot-menu-icon {
36
+ font-size: 18px;
37
+ color: var(--cs-white-text-secondary);
38
+ }
39
+
40
+ .dot-menu-icon:hover {
41
+ color: var(--cs-white-text);
42
+ }