@shelamkoff/rector 1.0.0 → 1.0.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 (94) hide show
  1. package/README.md +25 -23
  2. package/dist/core/clipboard/Clipboard.d.ts +2 -0
  3. package/dist/core/clipboard/Clipboard.js +52 -24
  4. package/dist/core/index.js +195 -194
  5. package/dist/core/locale/en.d.ts +1 -0
  6. package/dist/core/locale/en.js +1 -0
  7. package/dist/core/locale/ru.d.ts +1 -0
  8. package/dist/core/locale/ru.js +1 -0
  9. package/dist/core/themes/light.css +1 -1
  10. package/dist/core/themes/variables.css +72 -10
  11. package/dist/inline-plugins/mention/index.js +1 -2
  12. package/dist/locale/en.d.ts +41 -0
  13. package/dist/locale/ru.d.ts +41 -0
  14. package/dist/plugins/attaches/attaches.css +16 -14
  15. package/dist/plugins/attaches/index.js +997 -921
  16. package/dist/plugins/attaches/locale/en.d.ts +9 -0
  17. package/dist/plugins/attaches/locale/en.js +11 -2
  18. package/dist/plugins/attaches/locale/ru.d.ts +9 -0
  19. package/dist/plugins/attaches/locale/ru.js +11 -2
  20. package/dist/plugins/carousel/carousel.css +213 -49
  21. package/dist/plugins/carousel/index.js +918 -859
  22. package/dist/plugins/carousel/locale/en.d.ts +15 -0
  23. package/dist/plugins/carousel/locale/en.js +18 -3
  24. package/dist/plugins/carousel/locale/ru.d.ts +15 -0
  25. package/dist/plugins/carousel/locale/ru.js +18 -3
  26. package/dist/plugins/checklist/index.js +1 -2
  27. package/dist/plugins/code/index.js +1 -2
  28. package/dist/plugins/columns/index.js +1 -2
  29. package/dist/plugins/delimiter/index.js +1 -2
  30. package/dist/plugins/embed/index.js +1 -2
  31. package/dist/plugins/gallery/gallery.css +6 -1
  32. package/dist/plugins/gallery/index.js +375 -355
  33. package/dist/plugins/gallery/locale/en.d.ts +8 -0
  34. package/dist/plugins/gallery/locale/en.js +11 -3
  35. package/dist/plugins/gallery/locale/ru.d.ts +8 -0
  36. package/dist/plugins/gallery/locale/ru.js +11 -3
  37. package/dist/plugins/gallery/view-empty.d.ts +2 -0
  38. package/dist/plugins/gallery/view-empty.js +21 -15
  39. package/dist/plugins/gallery/view-filled.d.ts +2 -2
  40. package/dist/plugins/gallery/view-filled.js +61 -56
  41. package/dist/plugins/heading/index.js +1 -2
  42. package/dist/plugins/image/image.css +7 -2
  43. package/dist/plugins/image/index.js +365 -346
  44. package/dist/plugins/image/locale/en.d.ts +8 -0
  45. package/dist/plugins/image/locale/en.js +11 -3
  46. package/dist/plugins/image/locale/ru.d.ts +8 -0
  47. package/dist/plugins/image/locale/ru.js +11 -3
  48. package/dist/plugins/image/view-empty.d.ts +2 -0
  49. package/dist/plugins/image/view-empty.js +21 -15
  50. package/dist/plugins/image/view-filled.d.ts +2 -2
  51. package/dist/plugins/image/view-filled.js +77 -72
  52. package/dist/plugins/link-preview/index.js +1 -2
  53. package/dist/plugins/list/index.js +1 -2
  54. package/dist/plugins/paragraph/index.js +1 -2
  55. package/dist/plugins/person/index.js +1 -2
  56. package/dist/plugins/poll/index.js +1 -2
  57. package/dist/plugins/quote/index.js +1 -2
  58. package/dist/plugins/raw/index.js +1 -2
  59. package/dist/plugins/shared/dropzone.d.ts +6 -0
  60. package/dist/plugins/shared/dropzone.js +47 -36
  61. package/dist/plugins/shared/layer.d.ts +13 -0
  62. package/dist/plugins/shared/layer.js +45 -0
  63. package/dist/plugins/shared/sourceEditor.css +165 -0
  64. package/dist/plugins/shared/sourceEditor.d.ts +97 -0
  65. package/dist/plugins/shared/sourceEditor.js +260 -0
  66. package/dist/plugins/spoiler/index.js +1 -2
  67. package/dist/plugins/table/index.js +1 -2
  68. package/dist/plugins/toggle/index.js +1 -2
  69. package/dist/plugins/warning/index.js +1 -2
  70. package/dist/renderer/index.js +1 -2
  71. package/dist/renderer/renderers/attaches/index.js +1 -2
  72. package/dist/renderer/renderers/carousel/index.js +24 -24
  73. package/dist/renderer/renderers/carousel/styles.css +8 -2
  74. package/dist/renderer/renderers/checklist/index.js +1 -2
  75. package/dist/renderer/renderers/code/index.js +1 -2
  76. package/dist/renderer/renderers/columns/index.js +1 -2
  77. package/dist/renderer/renderers/delimiter/index.js +1 -2
  78. package/dist/renderer/renderers/embed/index.js +1 -2
  79. package/dist/renderer/renderers/gallery/index.js +1 -2
  80. package/dist/renderer/renderers/heading/index.js +1 -2
  81. package/dist/renderer/renderers/image/index.js +1 -2
  82. package/dist/renderer/renderers/link-preview/index.js +1 -2
  83. package/dist/renderer/renderers/list/index.js +1 -2
  84. package/dist/renderer/renderers/paragraph/index.js +1 -2
  85. package/dist/renderer/renderers/person/index.js +1 -2
  86. package/dist/renderer/renderers/poll/index.js +1 -2
  87. package/dist/renderer/renderers/quote/index.js +1 -2
  88. package/dist/renderer/renderers/spoiler/index.js +1 -2
  89. package/dist/renderer/renderers/table/index.js +1 -2
  90. package/dist/renderer/renderers/toggle/index.js +1 -2
  91. package/dist/renderer/renderers/warning/index.js +1 -2
  92. package/package.json +27 -29
  93. package/dist/shared/resolvePath.d.ts +0 -8
  94. package/dist/shared/resolvePath.js +0 -10
@@ -49,6 +49,16 @@
49
49
  --oe-overlay: rgba(0, 0, 0, 0.55);
50
50
  --oe-overlay-dark: rgba(0, 0, 0, 0.7);
51
51
 
52
+ /*
53
+ * Blocks form low, isolated stacking contexts. Editor-owned menus start at
54
+ * z-index 15, so even an active plugin block stays below global UI.
55
+ */
56
+ --oe-z-focused-block: 1;
57
+ --oe-z-active-block: 2;
58
+ --oe-plugin-panel-z-index: 1100;
59
+ --oe-plugin-popover-z-index: 1120;
60
+ --oe-plugin-dialog-z-index: 1200;
61
+
52
62
  position: relative;
53
63
  display: flex;
54
64
  flex-direction: column;
@@ -92,18 +102,23 @@
92
102
 
93
103
  .oe-block {
94
104
  position: relative;
105
+ z-index: 0;
95
106
  margin-bottom: var(--oe-block-spacing);
96
107
  transition: background-color var(--oe-transition);
97
108
  border-radius: var(--oe-radius-sm);
98
109
  transform-origin: top center;
99
110
  }
100
111
 
112
+ .oe-block[data-oe-layer-open='true'] {
113
+ z-index: var(--oe-z-active-block, 2);
114
+ }
115
+
101
116
  .oe-block:last-child {
102
117
  margin-bottom: 0;
103
118
  }
104
119
 
105
120
  .oe-block--focused {
106
-
121
+ z-index: var(--oe-z-focused-block, 1);
107
122
  }
108
123
 
109
124
 
@@ -111,6 +126,53 @@
111
126
  opacity: 0.4;
112
127
  }
113
128
 
129
+ .oe-pending-pastes {
130
+ display: grid;
131
+ gap: var(--oe-block-spacing);
132
+ }
133
+
134
+ .oe-block--pending-paste {
135
+ display: grid;
136
+ min-height: 10rem;
137
+ place-items: center;
138
+ }
139
+
140
+ .oe-block--pending-paste > [hidden] {
141
+ display: none !important;
142
+ }
143
+
144
+ .oe-pending-paste__indicator {
145
+ display: grid;
146
+ place-items: center;
147
+ width: 100%;
148
+ min-height: inherit;
149
+ color: var(--oe-text-2);
150
+ pointer-events: none;
151
+ }
152
+
153
+ .oe-pending-paste__spinner {
154
+ display: block;
155
+ box-sizing: border-box;
156
+ width: 40px;
157
+ height: 40px;
158
+ border: 3px solid var(--oe-border-hover);
159
+ border-top-color: currentColor;
160
+ border-radius: 50%;
161
+ animation: oe-pending-paste-spin 0.8s linear infinite;
162
+ }
163
+
164
+ @keyframes oe-pending-paste-spin {
165
+ to {
166
+ transform: rotate(360deg);
167
+ }
168
+ }
169
+
170
+ @media (prefers-reduced-motion: reduce) {
171
+ .oe-pending-paste__spinner {
172
+ animation-duration: 1.8s;
173
+ }
174
+ }
175
+
114
176
 
115
177
  .oe-block code {
116
178
  padding: 2px 6px;
@@ -558,15 +620,15 @@
558
620
  border-radius: 2px;
559
621
  }
560
622
 
561
- .oe-font-size-item {
562
- display: block;
563
- width: 100%;
564
- padding: 6px 8px;
565
- border: 0;
566
- border-radius: var(--oe-radius-sm);
567
- background: transparent;
568
- color: var(--oe-text-1);
569
- text-align: left;
623
+ .oe-font-size-item {
624
+ display: block;
625
+ width: 100%;
626
+ padding: 6px 8px;
627
+ border: 0;
628
+ border-radius: var(--oe-radius-sm);
629
+ background: transparent;
630
+ color: var(--oe-text-1);
631
+ text-align: left;
570
632
  font-size: 13px;
571
633
  font-family: var(--oe-font), sans-serif;
572
634
  cursor: pointer;
@@ -33,13 +33,12 @@
33
33
  * @typedef {import('../../core/types').InlinePluginContext} InlinePluginContext
34
34
  */
35
35
 
36
- import { resolvePath } from '../../shared/resolvePath.js'
37
36
  import { injectStyleUrls } from '../../core/StyleInjector.js'
38
37
  import { createMentionWidget } from './widget.js'
39
38
  import { setSafeUrlAttribute } from '../../shared/sanitize/sanitizeUrl.js'
40
39
 
41
40
  /** Absolute URL to the plugin's stylesheet. Ref-counted via `injectStyleUrls`. */
42
- const STYLES_URL = resolvePath('./styles.css', import.meta.url)
41
+ const STYLES_URL = new URL('./styles.css', import.meta.url).href
43
42
 
44
43
  const DEFAULTS = Object.freeze({
45
44
  trigger: '@',
@@ -68,6 +68,15 @@ declare const _default: {
68
68
  'plugin.attaches.upload': string;
69
69
  'plugin.attaches.dropzoneUpload': string;
70
70
  'plugin.attaches.dropzoneText': string;
71
+ 'plugin.attaches.dropzoneUrlPrefix': string;
72
+ 'plugin.attaches.dropzoneUrl': string;
73
+ 'plugin.attaches.urlEditorTitle': string;
74
+ 'plugin.attaches.urlEditorLabel': string;
75
+ 'plugin.attaches.urlEditorPlaceholder': string;
76
+ 'plugin.attaches.sourceSubmit': string;
77
+ 'plugin.attaches.sourceCancel': string;
78
+ 'plugin.attaches.invalidUrl': string;
79
+ 'plugin.attaches.urlFileName': string;
71
80
  'plugin.attaches.emptyReadonly': string;
72
81
  'plugin.attaches.addFiles': string;
73
82
  'plugin.attaches.delete': string;
@@ -136,10 +145,25 @@ declare const _default: {
136
145
  'plugin.carousel.upload': string;
137
146
  'plugin.carousel.back': string;
138
147
  'plugin.carousel.dropzoneText': string;
148
+ 'plugin.carousel.dropzoneUrlPrefix': string;
149
+ 'plugin.carousel.dropzoneUrl': string;
150
+ 'plugin.carousel.dropzoneHtmlPrefix': string;
151
+ 'plugin.carousel.dropzoneHtml': string;
152
+ 'plugin.carousel.urlEditorTitle': string;
153
+ 'plugin.carousel.urlEditorLabel': string;
154
+ 'plugin.carousel.urlEditorPlaceholder': string;
155
+ 'plugin.carousel.htmlEditorTitle': string;
156
+ 'plugin.carousel.htmlEditorLabel': string;
157
+ 'plugin.carousel.htmlEditorPlaceholder': string;
158
+ 'plugin.carousel.sourceSubmit': string;
159
+ 'plugin.carousel.sourceCancel': string;
160
+ 'plugin.carousel.invalidUrl': string;
161
+ 'plugin.carousel.invalidHtml': string;
139
162
  'plugin.carousel.empty': string;
140
163
  'plugin.carousel.emptyReadonly': string;
141
164
  'plugin.carousel.html': string;
142
165
  'plugin.carousel.source': string;
166
+ 'plugin.carousel.embeddedSource': string;
143
167
  'plugin.carousel.alt': string;
144
168
  'plugin.carousel.poster': string;
145
169
  'plugin.carousel.caption': string;
@@ -173,6 +197,14 @@ declare const _default: {
173
197
  'plugin.gallery.dropzone': string;
174
198
  'plugin.gallery.dropzoneUpload': string;
175
199
  'plugin.gallery.dropzoneText': string;
200
+ 'plugin.gallery.dropzoneUrlPrefix': string;
201
+ 'plugin.gallery.dropzoneUrl': string;
202
+ 'plugin.gallery.urlEditorTitle': string;
203
+ 'plugin.gallery.urlEditorLabel': string;
204
+ 'plugin.gallery.urlEditorPlaceholder': string;
205
+ 'plugin.gallery.sourceSubmit': string;
206
+ 'plugin.gallery.sourceCancel': string;
207
+ 'plugin.gallery.invalidUrl': string;
176
208
  'plugin.gallery.addMore': string;
177
209
  'plugin.gallery.delete': string;
178
210
  'plugin.gallery.deleteAll': string;
@@ -223,6 +255,14 @@ declare const _default: {
223
255
  'plugin.image.dropzone': string;
224
256
  'plugin.image.dropzoneUpload': string;
225
257
  'plugin.image.dropzoneText': string;
258
+ 'plugin.image.dropzoneUrlPrefix': string;
259
+ 'plugin.image.dropzoneUrl': string;
260
+ 'plugin.image.urlEditorTitle': string;
261
+ 'plugin.image.urlEditorLabel': string;
262
+ 'plugin.image.urlEditorPlaceholder': string;
263
+ 'plugin.image.sourceSubmit': string;
264
+ 'plugin.image.sourceCancel': string;
265
+ 'plugin.image.invalidUrl': string;
226
266
  'plugin.image.replace': string;
227
267
  'plugin.image.delete': string;
228
268
  'plugin.image.caption': string;
@@ -306,6 +346,7 @@ declare const _default: {
306
346
  'block.convertTo': string;
307
347
  'block.back': string;
308
348
  'block.unsupported': string;
349
+ 'clipboard.processingFile': string;
309
350
  'slash.noResults': string;
310
351
  };
311
352
  export default _default;
@@ -70,6 +70,15 @@ declare const _default: {
70
70
  'plugin.attaches.upload': string;
71
71
  'plugin.attaches.dropzoneUpload': string;
72
72
  'plugin.attaches.dropzoneText': string;
73
+ 'plugin.attaches.dropzoneUrlPrefix': string;
74
+ 'plugin.attaches.dropzoneUrl': string;
75
+ 'plugin.attaches.urlEditorTitle': string;
76
+ 'plugin.attaches.urlEditorLabel': string;
77
+ 'plugin.attaches.urlEditorPlaceholder': string;
78
+ 'plugin.attaches.sourceSubmit': string;
79
+ 'plugin.attaches.sourceCancel': string;
80
+ 'plugin.attaches.invalidUrl': string;
81
+ 'plugin.attaches.urlFileName': string;
73
82
  'plugin.attaches.emptyReadonly': string;
74
83
  'plugin.attaches.addFiles': string;
75
84
  'plugin.attaches.delete': string;
@@ -140,10 +149,25 @@ declare const _default: {
140
149
  'plugin.carousel.upload': string;
141
150
  'plugin.carousel.back': string;
142
151
  'plugin.carousel.dropzoneText': string;
152
+ 'plugin.carousel.dropzoneUrlPrefix': string;
153
+ 'plugin.carousel.dropzoneUrl': string;
154
+ 'plugin.carousel.dropzoneHtmlPrefix': string;
155
+ 'plugin.carousel.dropzoneHtml': string;
156
+ 'plugin.carousel.urlEditorTitle': string;
157
+ 'plugin.carousel.urlEditorLabel': string;
158
+ 'plugin.carousel.urlEditorPlaceholder': string;
159
+ 'plugin.carousel.htmlEditorTitle': string;
160
+ 'plugin.carousel.htmlEditorLabel': string;
161
+ 'plugin.carousel.htmlEditorPlaceholder': string;
162
+ 'plugin.carousel.sourceSubmit': string;
163
+ 'plugin.carousel.sourceCancel': string;
164
+ 'plugin.carousel.invalidUrl': string;
165
+ 'plugin.carousel.invalidHtml': string;
143
166
  'plugin.carousel.empty': string;
144
167
  'plugin.carousel.emptyReadonly': string;
145
168
  'plugin.carousel.html': string;
146
169
  'plugin.carousel.source': string;
170
+ 'plugin.carousel.embeddedSource': string;
147
171
  'plugin.carousel.alt': string;
148
172
  'plugin.carousel.poster': string;
149
173
  'plugin.carousel.caption': string;
@@ -177,6 +201,14 @@ declare const _default: {
177
201
  'plugin.gallery.dropzone': string;
178
202
  'plugin.gallery.dropzoneUpload': string;
179
203
  'plugin.gallery.dropzoneText': string;
204
+ 'plugin.gallery.dropzoneUrlPrefix': string;
205
+ 'plugin.gallery.dropzoneUrl': string;
206
+ 'plugin.gallery.urlEditorTitle': string;
207
+ 'plugin.gallery.urlEditorLabel': string;
208
+ 'plugin.gallery.urlEditorPlaceholder': string;
209
+ 'plugin.gallery.sourceSubmit': string;
210
+ 'plugin.gallery.sourceCancel': string;
211
+ 'plugin.gallery.invalidUrl': string;
180
212
  'plugin.gallery.addMore': string;
181
213
  'plugin.gallery.delete': string;
182
214
  'plugin.gallery.deleteAll': string;
@@ -227,6 +259,14 @@ declare const _default: {
227
259
  'plugin.image.dropzone': string;
228
260
  'plugin.image.dropzoneUpload': string;
229
261
  'plugin.image.dropzoneText': string;
262
+ 'plugin.image.dropzoneUrlPrefix': string;
263
+ 'plugin.image.dropzoneUrl': string;
264
+ 'plugin.image.urlEditorTitle': string;
265
+ 'plugin.image.urlEditorLabel': string;
266
+ 'plugin.image.urlEditorPlaceholder': string;
267
+ 'plugin.image.sourceSubmit': string;
268
+ 'plugin.image.sourceCancel': string;
269
+ 'plugin.image.invalidUrl': string;
230
270
  'plugin.image.replace': string;
231
271
  'plugin.image.delete': string;
232
272
  'plugin.image.caption': string;
@@ -310,6 +350,7 @@ declare const _default: {
310
350
  'block.convertTo': string;
311
351
  'block.back': string;
312
352
  'block.unsupported': string;
353
+ 'clipboard.processingFile': string;
313
354
  'slash.noResults': string;
314
355
  };
315
356
  export default _default;
@@ -3,6 +3,7 @@
3
3
  ============================================================================= */
4
4
 
5
5
  .oe-attaches {
6
+ position: relative;
6
7
  border-radius: 0.5rem;
7
8
  overflow-anchor: none;
8
9
  text-align: center;
@@ -67,19 +68,19 @@
67
68
  }
68
69
  .oe-attaches__group-header:hover { background: var(--oe-card-hover, rgba(255,255,255,0.03)); }
69
70
 
70
- .oe-attaches__chevron {
71
- appearance: none;
72
- border: 0;
73
- padding: 0;
74
- background: transparent;
75
- font: inherit;
76
- cursor: pointer;
77
- flex-shrink: 0;
78
- color: var(--oe-text-3, #6e6e78);
79
- transition: transform 0.2s;
80
- }
81
- .oe-attaches__chevron:focus-visible { outline: 2px solid var(--oe-accent, #4357b4); outline-offset: 2px; }
82
- .oe-attaches__chevron--open { transform: rotate(180deg); }
71
+ .oe-attaches__chevron {
72
+ appearance: none;
73
+ border: 0;
74
+ padding: 0;
75
+ background: transparent;
76
+ font: inherit;
77
+ cursor: pointer;
78
+ flex-shrink: 0;
79
+ color: var(--oe-text-3, #6e6e78);
80
+ transition: transform 0.2s;
81
+ }
82
+ .oe-attaches__chevron:focus-visible { outline: 2px solid var(--oe-accent, #4357b4); outline-offset: 2px; }
83
+ .oe-attaches__chevron--open { transform: rotate(180deg); }
83
84
 
84
85
  .oe-attaches__group-body {
85
86
  display: none;
@@ -213,7 +214,7 @@
213
214
  border: 1px solid var(--oe-toolbar-border, var(--oe-border, #1a1a1f));
214
215
  border-radius: var(--oe-radius, 0.5rem);
215
216
  box-shadow: var(--oe-toolbar-shadow, 0 8px 24px rgba(0,0,0,0.4));
216
- z-index: 100;
217
+ z-index: var(--oe-plugin-panel-z-index, 1100);
217
218
  }
218
219
  .oe-attaches__dropdown--open .oe-attaches__dropdown-panel { display: block; }
219
220
 
@@ -364,6 +365,7 @@
364
365
  .oe-theme-light .oe-attaches__name { color: var(--oe-text-1, #1a1a1a); }
365
366
  .oe-theme-light .oe-attaches__actions { background: var(--oe-surface, #fafafa); border-color: var(--oe-border, #e0e0e0); }
366
367
  .oe-theme-light .oe-attaches__action-btn { color: var(--oe-text-1, #1a1a1a); }
368
+ .oe-theme-light .oe-attaches__action-btn:hover { color: var(--oe-text-on-accent, #fff); }
367
369
  .oe-theme-light .oe-attaches__pill { background: var(--oe-surface, #fafafa); border-color: var(--oe-border, #e0e0e0); }
368
370
  .oe-theme-light .oe-attaches__pill:hover { background: var(--oe-card-hover, #f5f5f5); }
369
371
  .oe-theme-light .oe-attaches__notion { border-color: var(--oe-border, #e0e0e0); }