@openleaf-editor/ui 0.1.0-beta.2 → 0.1.0-beta.4

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 (78) hide show
  1. package/README.md +85 -0
  2. package/dist/block-type.d.ts +5 -0
  3. package/dist/block-type.d.ts.map +1 -0
  4. package/dist/block-type.js +133 -0
  5. package/dist/block-type.js.map +1 -0
  6. package/dist/content-css.d.ts +18 -0
  7. package/dist/content-css.d.ts.map +1 -1
  8. package/dist/content-css.js +231 -16
  9. package/dist/content-css.js.map +1 -1
  10. package/dist/css.d.ts +23 -0
  11. package/dist/css.d.ts.map +1 -0
  12. package/dist/css.js +846 -0
  13. package/dist/css.js.map +1 -0
  14. package/dist/dialog.d.ts +93 -0
  15. package/dist/dialog.d.ts.map +1 -1
  16. package/dist/dialog.js +414 -86
  17. package/dist/dialog.js.map +1 -1
  18. package/dist/floating.d.ts +4 -0
  19. package/dist/floating.d.ts.map +1 -1
  20. package/dist/floating.js +50 -2
  21. package/dist/floating.js.map +1 -1
  22. package/dist/help.d.ts +1 -1
  23. package/dist/help.d.ts.map +1 -1
  24. package/dist/help.js +29 -5
  25. package/dist/help.js.map +1 -1
  26. package/dist/i18n.d.ts +8 -0
  27. package/dist/i18n.d.ts.map +1 -1
  28. package/dist/i18n.js +32 -7
  29. package/dist/i18n.js.map +1 -1
  30. package/dist/icons.d.ts +7 -1
  31. package/dist/icons.d.ts.map +1 -1
  32. package/dist/icons.js +6 -2
  33. package/dist/icons.js.map +1 -1
  34. package/dist/index.d.ts +10 -8
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +8 -6
  37. package/dist/index.js.map +1 -1
  38. package/dist/items.d.ts +0 -1
  39. package/dist/items.d.ts.map +1 -1
  40. package/dist/items.js +211 -20
  41. package/dist/items.js.map +1 -1
  42. package/dist/live.d.ts +42 -0
  43. package/dist/live.d.ts.map +1 -0
  44. package/dist/live.js +83 -0
  45. package/dist/live.js.map +1 -0
  46. package/dist/menu.d.ts +31 -2
  47. package/dist/menu.d.ts.map +1 -1
  48. package/dist/menu.js +163 -23
  49. package/dist/menu.js.map +1 -1
  50. package/dist/openleaf.css +147 -12
  51. package/dist/overflow.d.ts +47 -4
  52. package/dist/overflow.d.ts.map +1 -1
  53. package/dist/overflow.js +338 -83
  54. package/dist/overflow.js.map +1 -1
  55. package/dist/registry.d.ts +72 -18
  56. package/dist/registry.d.ts.map +1 -1
  57. package/dist/registry.js +7 -6
  58. package/dist/registry.js.map +1 -1
  59. package/dist/skins.d.ts.map +1 -1
  60. package/dist/skins.js +48 -14
  61. package/dist/skins.js.map +1 -1
  62. package/dist/styles.d.ts +61 -1
  63. package/dist/styles.d.ts.map +1 -1
  64. package/dist/styles.js +77 -637
  65. package/dist/styles.js.map +1 -1
  66. package/dist/testing.d.ts +3 -0
  67. package/dist/testing.d.ts.map +1 -0
  68. package/dist/testing.js +3 -0
  69. package/dist/testing.js.map +1 -0
  70. package/dist/toolbar.d.ts +71 -12
  71. package/dist/toolbar.d.ts.map +1 -1
  72. package/dist/toolbar.js +410 -166
  73. package/dist/toolbar.js.map +1 -1
  74. package/dist/upload.d.ts +32 -7
  75. package/dist/upload.d.ts.map +1 -1
  76. package/dist/upload.js +64 -8
  77. package/dist/upload.js.map +1 -1
  78. package/package.json +17 -3
package/dist/menu.js CHANGED
@@ -42,6 +42,9 @@ export const DEFAULT_MENUBAR = [
42
42
  { id: 'alignRight' },
43
43
  { id: 'alignJustify' },
44
44
  '|',
45
+ { id: 'indent' },
46
+ { id: 'outdent' },
47
+ '|',
45
48
  { id: 'bulletList' },
46
49
  { id: 'orderedList' },
47
50
  { id: 'blockquote' },
@@ -104,6 +107,18 @@ function enabled(spec, state, host) {
104
107
  return spec.command(state);
105
108
  return true;
106
109
  }
110
+ /** Menus are named after the trigger that opened them, which needs an id. */
111
+ let menuCounter = 0;
112
+ /**
113
+ * Separate from `menuCounter`, because one menu is opened by MANY triggers.
114
+ *
115
+ * A menubar shares a single `PopupMenu` across every menu on it, so an id
116
+ * derived from the popup's own name was the same string for every trigger:
117
+ * open Edit, then Insert, and two buttons carried one DOM id. `aria-labelledby`
118
+ * resolves to the first match in tree order, so every menu after the first was
119
+ * announced under the first one's name.
120
+ */
121
+ let triggerCounter = 0;
107
122
  export class PopupMenu {
108
123
  el;
109
124
  #doc;
@@ -111,12 +126,14 @@ export class PopupMenu {
111
126
  #view = null;
112
127
  #items = [];
113
128
  #onClose;
129
+ #trigger = null;
114
130
  constructor(host, doc) {
115
131
  this.#host = host;
116
132
  this.#doc = doc;
117
133
  ensureStyles(doc);
118
134
  this.el = doc.createElement('div');
119
135
  this.el.className = 'ol-menu';
136
+ this.el.id = `ol-menu-${(menuCounter += 1)}`;
120
137
  this.el.setAttribute('role', 'menu');
121
138
  this.el.hidden = true;
122
139
  this.el.addEventListener('keydown', this.#onKeydown);
@@ -134,26 +151,98 @@ export class PopupMenu {
134
151
  get open() {
135
152
  return !this.el.hidden;
136
153
  }
137
- show(items, x, y, onClose) {
154
+ /**
155
+ * Open at a point, named by whatever opened it.
156
+ *
157
+ * `trigger` is not optional decoration: without it the menu has no accessible
158
+ * name at all -- a screen reader announces "menu", with nothing to say which
159
+ * one -- and Escape has nowhere to put focus back, so it lands on the document
160
+ * and the author is out of the menubar entirely.
161
+ */
162
+ show(items, x, y, options = {}) {
138
163
  this.#items = items;
139
- this.#onClose = onClose;
164
+ this.#onClose = options.onClose;
165
+ const trigger = options.trigger ?? null;
166
+ this.#trigger = trigger;
167
+ if (trigger) {
168
+ if (!trigger.id)
169
+ trigger.id = `${this.el.id}-trigger-${(triggerCounter += 1)}`;
170
+ this.el.setAttribute('aria-labelledby', trigger.id);
171
+ this.el.removeAttribute('aria-label');
172
+ trigger.setAttribute('aria-controls', this.el.id);
173
+ }
174
+ else {
175
+ this.el.removeAttribute('aria-labelledby');
176
+ this.el.setAttribute('aria-label', t(options.label ?? 'Editor menu'));
177
+ }
140
178
  this.#render();
141
179
  this.el.hidden = false;
180
+ this.#place(x, y);
181
+ this.#focusItem(this.el.querySelector('[role="menuitem"]'));
182
+ }
183
+ /**
184
+ * Keep the menu on screen.
185
+ *
186
+ * A right-click near the bottom of the viewport otherwise renders it below the
187
+ * fold, where the item the author asked for cannot be seen or scrolled to --
188
+ * the menu is positioned, so the page does not grow to contain it.
189
+ *
190
+ * Flipping is measured against the TRIGGER, not against the point the menu was
191
+ * asked to open at. Those differ by the height of the trigger, and using the
192
+ * point puts a flipped menu on top of the menubar it came from -- covering the
193
+ * next menu along, which is exactly where the pointer is going.
194
+ */
195
+ #place(x, y) {
142
196
  const hostBox = this.#host.getBoundingClientRect();
143
- this.el.style.left = `${Math.max(0, x - hostBox.left)}px`;
144
- this.el.style.top = `${Math.max(0, y - hostBox.top)}px`;
145
- const first = this.el.querySelector('[role="menuitem"]');
146
- first?.focus();
197
+ const box = this.el.getBoundingClientRect();
198
+ const win = this.#doc.defaultView;
199
+ const vw = win?.innerWidth ?? 0;
200
+ const vh = win?.innerHeight ?? 0;
201
+ const left = vw > 0 ? Math.max(4, Math.min(x, vw - box.width - 4)) : x;
202
+ let top = y;
203
+ if (vh > 0 && y + box.height > vh) {
204
+ const above = (this.#trigger?.getBoundingClientRect().top ?? y) - 4 - box.height;
205
+ // Above only when it genuinely fits there. Sliding a menu that fits
206
+ // NEITHER side up to the viewport edge lands it on its own menubar, which
207
+ // trades a menu below the fold for a menubar that cannot be clicked. The
208
+ // stylesheet caps the height, so this is the rare deep menu on a short
209
+ // window rather than the normal case.
210
+ if (above >= 4)
211
+ top = above;
212
+ }
213
+ this.el.style.left = `${Math.round(left - hostBox.left)}px`;
214
+ this.el.style.top = `${Math.round(top - hostBox.top)}px`;
147
215
  }
148
- close() {
216
+ /**
217
+ * Close, and put focus somewhere real.
218
+ *
219
+ * `replaceChildren()` removes the node that currently has focus, and a browser
220
+ * whose focused element disappears falls back to `<body>` -- so without the
221
+ * return the author's next Tab starts from the top of the page.
222
+ */
223
+ close(returnFocus = false) {
149
224
  if (this.el.hidden)
150
225
  return;
226
+ const trigger = this.#trigger;
227
+ if (returnFocus && trigger?.isConnected)
228
+ trigger.focus();
151
229
  this.el.hidden = true;
152
230
  this.el.replaceChildren();
231
+ trigger?.removeAttribute('aria-controls');
232
+ this.#trigger = null;
153
233
  const close = this.#onClose;
154
234
  this.#onClose = undefined;
155
235
  close?.();
156
236
  }
237
+ #focusItem(next) {
238
+ if (!next)
239
+ return;
240
+ // Roving, so Tab leaves the menu instead of walking through every item in it.
241
+ for (const item of this.el.querySelectorAll('[role="menuitem"]')) {
242
+ item.tabIndex = item === next ? 0 : -1;
243
+ }
244
+ next.focus();
245
+ }
157
246
  #render() {
158
247
  this.el.replaceChildren();
159
248
  const view = this.#view;
@@ -175,9 +264,10 @@ export class PopupMenu {
175
264
  button.className = 'ol-menu-item';
176
265
  button.setAttribute('role', 'menuitem');
177
266
  button.dataset['olId'] = spec.id;
178
- button.textContent = t(entry.label ?? spec.label);
267
+ button.textContent = t(entry.label ?? spec.labelFor?.(view.state) ?? spec.label);
179
268
  const isEnabled = enabled(spec, view.state, this.#host);
180
269
  button.setAttribute('aria-disabled', isEnabled ? 'false' : 'true');
270
+ button.tabIndex = -1;
181
271
  this.el.appendChild(button);
182
272
  }
183
273
  }
@@ -189,16 +279,23 @@ export class PopupMenu {
189
279
  const view = this.#view;
190
280
  if (!spec || !view)
191
281
  return;
192
- this.close();
282
+ // Closed first, but with focus put back on the trigger before the item is
283
+ // removed. Running the command first instead would let `close()` steal focus
284
+ // from a dialog the command had just opened.
285
+ this.close(true);
193
286
  invoke(spec, view, this.#host);
194
287
  };
195
288
  #onKeydown = (event) => {
196
289
  const items = [...this.el.querySelectorAll('[role="menuitem"]')];
197
290
  const index = items.indexOf(event.target);
198
- if (event.key === 'Escape') {
291
+ // Tab closes rather than walking on through the menu: a menu left open
292
+ // behind a keyboard user is a widget with no exit.
293
+ if (event.key === 'Escape' || event.key === 'Tab') {
199
294
  event.preventDefault();
200
- this.close();
201
- this.#view?.focus();
295
+ const trigger = this.#trigger;
296
+ this.close(true);
297
+ if (!trigger)
298
+ this.#view?.focus();
202
299
  return;
203
300
  }
204
301
  if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
@@ -206,12 +303,29 @@ export class PopupMenu {
206
303
  if (items.length === 0)
207
304
  return;
208
305
  const delta = event.key === 'ArrowDown' ? 1 : -1;
209
- const next = items[(index + delta + items.length) % items.length];
210
- next?.focus();
306
+ this.#focusItem(items[(index + delta + items.length) % items.length]);
307
+ return;
308
+ }
309
+ if (event.key === 'Home' || event.key === 'End') {
310
+ event.preventDefault();
311
+ this.#focusItem(event.key === 'Home' ? items[0] : items[items.length - 1]);
312
+ return;
211
313
  }
212
314
  if (event.key === 'Enter' || event.key === ' ') {
213
315
  event.preventDefault();
214
316
  event.target.click();
317
+ return;
318
+ }
319
+ // Typeahead. A menubar user looking for "Italic" presses I, the way they do
320
+ // in every other menu they have ever used.
321
+ if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
322
+ const char = event.key.toLowerCase();
323
+ const from = index + 1;
324
+ const found = [...items.slice(from), ...items.slice(0, Math.max(0, from))].find((item) => (item.textContent ?? '').trim().toLowerCase().startsWith(char));
325
+ if (found) {
326
+ event.preventDefault();
327
+ this.#focusItem(found);
328
+ }
215
329
  }
216
330
  };
217
331
  }
@@ -272,10 +386,18 @@ export class MenuBar {
272
386
  if (!this.#popup.el.isConnected)
273
387
  this.#host.appendChild(this.#popup.el);
274
388
  }
389
+ /**
390
+ * Detach the menubar AND take its DOM with it -- see `Toolbar.destroy()`.
391
+ * The host reads its own `innerHTML` back as content when it rebuilds, so a
392
+ * menubar row left behind here would become the author's document.
393
+ *
394
+ * Idempotent: `.remove()` on a detached node is a no-op.
395
+ */
275
396
  destroy() {
276
397
  this.#doc.removeEventListener('pointerdown', this.#onPointerDown, true);
277
398
  this.el.removeEventListener('keydown', this.#onKeydown);
278
399
  this.#popup.destroy();
400
+ this.el.remove();
279
401
  }
280
402
  #render() {
281
403
  withLocale(this.#locale, () => this.#renderScoped());
@@ -291,10 +413,22 @@ export class MenuBar {
291
413
  button.setAttribute('aria-expanded', 'false');
292
414
  button.dataset['olMenu'] = menu.id;
293
415
  button.textContent = t(menu.label);
416
+ // Roving: `role="menubar"` is ONE tab stop, and five native buttons at the
417
+ // default tabindex made it five -- so Tab from the content walked the
418
+ // author through every menu before reaching anything they wanted.
419
+ button.tabIndex = this.el.childElementCount === 0 ? 0 : -1;
294
420
  button.addEventListener('click', () => this.#toggle(menu, button));
295
421
  this.el.appendChild(button);
296
422
  }
297
423
  }
424
+ #focusTrigger(next) {
425
+ if (!next)
426
+ return;
427
+ for (const button of this.el.querySelectorAll('.ol-menu-trigger')) {
428
+ button.tabIndex = button === next ? 0 : -1;
429
+ }
430
+ next.focus();
431
+ }
298
432
  #toggle(menu, trigger) {
299
433
  if (this.#openId === menu.id && this.#popup.open) {
300
434
  this.#close();
@@ -307,13 +441,16 @@ export class MenuBar {
307
441
  this.#openId = menu.id;
308
442
  trigger.setAttribute('aria-expanded', 'true');
309
443
  const rect = trigger.getBoundingClientRect();
310
- this.#popup.show(menu.items, rect.left, rect.bottom + 2, () => {
311
- trigger.setAttribute('aria-expanded', 'false');
312
- this.#openId = null;
444
+ this.#popup.show(menu.items, rect.left, rect.bottom + 2, {
445
+ trigger,
446
+ onClose: () => {
447
+ trigger.setAttribute('aria-expanded', 'false');
448
+ this.#openId = null;
449
+ },
313
450
  });
314
451
  }
315
- #close() {
316
- this.#popup.close();
452
+ #close(returnFocus = false) {
453
+ this.#popup.close(returnFocus);
317
454
  for (const button of this.el.querySelectorAll('[aria-expanded]')) {
318
455
  button.setAttribute('aria-expanded', 'false');
319
456
  }
@@ -324,11 +461,14 @@ export class MenuBar {
324
461
  const index = triggers.indexOf(event.target);
325
462
  if (index < 0)
326
463
  return;
327
- if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {
464
+ if (event.key === 'ArrowRight' || event.key === 'ArrowLeft' || event.key === 'Home' || event.key === 'End') {
328
465
  event.preventDefault();
329
- const delta = event.key === 'ArrowRight' ? 1 : -1;
330
- const next = triggers[(index + delta + triggers.length) % triggers.length];
331
- next?.focus();
466
+ const next = event.key === 'Home'
467
+ ? triggers[0]
468
+ : event.key === 'End'
469
+ ? triggers[triggers.length - 1]
470
+ : triggers[(index + (event.key === 'ArrowRight' ? 1 : -1) + triggers.length) % triggers.length];
471
+ this.#focusTrigger(next);
332
472
  if (this.#popup.open && next) {
333
473
  const menu = this.#menus.find((m) => m.id === next.dataset['olMenu']);
334
474
  if (menu)
package/dist/menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
package/dist/openleaf.css CHANGED
@@ -14,8 +14,11 @@
14
14
  --ol-surface-hover: var(--openleaf-color-surface-hover, #f0f1f3);
15
15
  --ol-surface-active: var(--openleaf-color-surface-active, #dbe9ff);
16
16
  --ol-border: var(--openleaf-color-border, #d1d9e0);
17
+ /* Control boundaries, not decoration. See "Two border tokens" above. */
18
+ --ol-border-strong: var(--openleaf-color-border-strong, #6e7781);
17
19
  --ol-accent: var(--openleaf-color-accent, #0550ae);
18
20
  --ol-focus: var(--openleaf-color-focus, #0969da);
21
+ --ol-danger: var(--openleaf-color-danger, #cf222e);
19
22
  --ol-button-size: var(--openleaf-button-size, 32px);
20
23
  --ol-icon-size: var(--openleaf-icon-size, 16px);
21
24
  --ol-gap: var(--openleaf-gap, 2px);
@@ -50,8 +53,10 @@
50
53
  --ol-surface-hover: var(--openleaf-color-surface-hover, #21262d);
51
54
  --ol-surface-active: var(--openleaf-color-surface-active, #1f3a5f);
52
55
  --ol-border: var(--openleaf-color-border, #3d444d);
56
+ --ol-border-strong: var(--openleaf-color-border-strong, #8b949e);
53
57
  --ol-accent: var(--openleaf-color-accent, #79c0ff);
54
58
  --ol-focus: var(--openleaf-color-focus, #79c0ff);
59
+ --ol-danger: var(--openleaf-color-danger, #ff8182);
55
60
  }
56
61
  }
57
62
 
@@ -62,8 +67,10 @@
62
67
  --ol-surface-hover: var(--openleaf-color-surface-hover, #21262d);
63
68
  --ol-surface-active: var(--openleaf-color-surface-active, #1f3a5f);
64
69
  --ol-border: var(--openleaf-color-border, #3d444d);
70
+ --ol-border-strong: var(--openleaf-color-border-strong, #8b949e);
65
71
  --ol-accent: var(--openleaf-color-accent, #79c0ff);
66
72
  --ol-focus: var(--openleaf-color-focus, #79c0ff);
73
+ --ol-danger: var(--openleaf-color-danger, #ff8182);
67
74
  }
68
75
 
69
76
  .ol-editor[data-ol-scheme="dark"] {
@@ -73,8 +80,10 @@
73
80
  --ol-surface-hover: var(--openleaf-color-surface-hover, #21262d);
74
81
  --ol-surface-active: var(--openleaf-color-surface-active, #1f3a5f);
75
82
  --ol-border: var(--openleaf-color-border, #3d444d);
83
+ --ol-border-strong: var(--openleaf-color-border-strong, #8b949e);
76
84
  --ol-accent: var(--openleaf-color-accent, #79c0ff);
77
85
  --ol-focus: var(--openleaf-color-focus, #79c0ff);
86
+ --ol-danger: var(--openleaf-color-danger, #ff8182);
78
87
  }
79
88
 
80
89
  /* Native widget chrome -- the popup a `select` opens, scrollbars, the caret,
@@ -100,7 +109,7 @@
100
109
  box-sizing: border-box;
101
110
  margin: 0;
102
111
  padding: 4px;
103
- border: 1px solid var(--ol-border);
112
+ border: 1px solid var(--ol-border-strong);
104
113
  border-bottom: 0;
105
114
  border-radius: var(--ol-radius) var(--ol-radius) 0 0;
106
115
  background: var(--ol-surface);
@@ -121,7 +130,12 @@
121
130
  after it -- a stranded line floating at the end of a row. Wrapping begins
122
131
  around 690-740px, well inside ordinary desktop widths (a CMS sidebar, a
123
132
  half-width split pane), so this was not a 360px-only edge case.
124
- border-inline-start rather than border-left, so it flips under RTL. */
133
+ border-inline-start rather than border-left, so it flips under RTL.
134
+
135
+ This selector is why the renderer emits NO element between groups. It used to
136
+ emit an .ol-sep div, which made the two groups non-adjacent and stopped this
137
+ rule from ever matching -- so no divider rendered in any theme, and every bar
138
+ carried inert empty divs. Adding a separator element back here breaks this. */
125
139
  .ol-editor .ol-group + .ol-group {
126
140
  border-inline-start: 1px solid var(--ol-border);
127
141
  padding-inline-start: 5px;
@@ -200,7 +214,7 @@
200
214
  removed from the roving tabindex and cannot be reached or announced, so an
201
215
  author using a screen reader cannot discover that the control exists. */
202
216
  .ol-editor .ol-btn[aria-disabled="true"] {
203
- opacity: 0.4;
217
+ opacity: 0.55;
204
218
  cursor: default;
205
219
  }
206
220
 
@@ -226,7 +240,7 @@
226
240
  max-width: 11em;
227
241
  padding: 0 22px 0 6px;
228
242
  margin: 0;
229
- border: 1px solid var(--ol-border);
243
+ border: 1px solid var(--ol-border-strong);
230
244
  border-radius: var(--ol-radius);
231
245
  background-color: transparent;
232
246
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
@@ -247,6 +261,10 @@
247
261
  -webkit-appearance: none;
248
262
  }
249
263
 
264
+ .ol-editor .ol-select--wide {
265
+ max-width: 14em;
266
+ }
267
+
250
268
  .ol-editor .ol-select:hover {
251
269
  background-color: var(--ol-surface-hover);
252
270
  }
@@ -265,7 +283,7 @@
265
283
 
266
284
  .ol-editor .ol-content {
267
285
  box-sizing: border-box;
268
- border: 1px solid var(--ol-border);
286
+ border: 1px solid var(--ol-border-strong);
269
287
  border-radius: 0 0 var(--ol-radius) var(--ol-radius);
270
288
  background: var(--ol-surface);
271
289
  }
@@ -324,7 +342,13 @@
324
342
 
325
343
  /* prosemirror-tables marks cells in a rectangular selection with this class.
326
344
  An ::after overlay rather than a background so it composes with a cell that
327
- already has one, and so a header cell still reads as a header. */
345
+ already has one, and so a header cell still reads as a header.
346
+
347
+ The ring, not the tint, is the indicator -- see "Cell selection" above. */
348
+ .ol-editor .ol-content .ProseMirror .selectedCell {
349
+ outline: 2px solid var(--ol-accent);
350
+ outline-offset: -2px;
351
+ }
328
352
  .ol-editor .ol-content .ProseMirror .selectedCell::after {
329
353
  content: "";
330
354
  position: absolute;
@@ -398,13 +422,37 @@
398
422
  border-radius: 2px;
399
423
  }
400
424
 
425
+ /* Gap cursor: the caret beside a block atom or isolating node, where no
426
+ textblock exists. Hidden until the view is focused so it cannot paint over
427
+ an inactive canvas. */
428
+ .ol-editor .ol-content .ProseMirror-gapcursor {
429
+ display: none;
430
+ pointer-events: none;
431
+ position: absolute;
432
+ }
433
+ .ol-editor .ol-content .ProseMirror-gapcursor:after {
434
+ content: "";
435
+ display: block;
436
+ position: absolute;
437
+ top: -2px;
438
+ width: 20px;
439
+ border-top: 1px solid var(--ol-text);
440
+ animation: ol-gapcursor-blink 1.1s steps(2, start) infinite;
441
+ }
442
+ @keyframes ol-gapcursor-blink {
443
+ to { visibility: hidden; }
444
+ }
445
+ .ol-editor .ol-content .ProseMirror-focused .ProseMirror-gapcursor {
446
+ display: block;
447
+ }
448
+
401
449
  .ol-editor .ol-source {
402
450
  box-sizing: border-box;
403
451
  display: block;
404
452
  width: 100%;
405
453
  min-height: 12rem;
406
454
  padding: 12px;
407
- border: 1px solid var(--ol-border);
455
+ border: 1px solid var(--ol-border-strong);
408
456
  border-radius: 0 0 var(--ol-radius) var(--ol-radius);
409
457
  background: var(--ol-surface);
410
458
  color: var(--ol-text);
@@ -447,7 +495,7 @@
447
495
  box-sizing: border-box;
448
496
  margin: 0;
449
497
  padding: 2px 4px;
450
- border: 1px solid var(--ol-border);
498
+ border: 1px solid var(--ol-border-strong);
451
499
  border-bottom: 0;
452
500
  border-radius: var(--ol-radius) var(--ol-radius) 0 0;
453
501
  background: var(--ol-surface);
@@ -483,9 +531,13 @@
483
531
  position: absolute;
484
532
  z-index: calc(var(--ol-z) + 20);
485
533
  min-width: 12rem;
534
+ /* Capped, so a deep menu opened low on a short window can be flipped above
535
+ its trigger instead of running off the bottom of the page. */
536
+ max-height: 60vh;
537
+ overflow-y: auto;
486
538
  margin: 0;
487
539
  padding: 4px;
488
- border: 1px solid var(--ol-border);
540
+ border: 1px solid var(--ol-border-strong);
489
541
  border-radius: var(--ol-radius);
490
542
  background: var(--ol-surface);
491
543
  box-shadow: 0 8px 24px rgb(0 0 0 / 12%);
@@ -507,20 +559,42 @@
507
559
  cursor: pointer;
508
560
  appearance: none;
509
561
  }
510
- .ol-editor .ol-menu-item:hover,
562
+ .ol-editor .ol-menu-item:hover {
563
+ background: var(--ol-surface-hover);
564
+ }
565
+ /* Was outline:none plus a 1.13:1 background swap. See "Menu focus" above. */
511
566
  .ol-editor .ol-menu-item:focus-visible {
512
567
  background: var(--ol-surface-hover);
513
- outline: none;
568
+ outline: var(--ol-focus-width) solid var(--ol-focus);
569
+ outline-offset: -2px;
514
570
  }
571
+ /* 0.55, not 0.4: see "Disabled is not invisible" above. */
515
572
  .ol-editor .ol-menu-item[aria-disabled="true"] {
516
- opacity: 0.4;
573
+ opacity: 0.55;
517
574
  cursor: default;
518
575
  }
576
+ /* Third time for the same specificity trap, after the floating bar and the
577
+ overflow panel below: `.ol-editor .ol-btn` is (0,2,0) and its
578
+ `display: inline-flex` outranks the UA's `[hidden]` rule, so
579
+ `button.hidden = true` set the attribute and painted the button anyway. A bar
580
+ wide enough to need no overflow still showed its More trigger, and pressing
581
+ it opened an empty panel. */
582
+ .ol-editor .ol-btn[hidden] {
583
+ display: none;
584
+ }
519
585
  .ol-editor .ol-menu-sep {
520
586
  height: 1px;
521
587
  margin: 4px 0;
522
588
  background: var(--ol-border);
523
589
  }
590
+ /* `display: flex` on .ol-toolbar above outranks the UA's `[hidden]` rule --
591
+ a class selector beats an attribute selector on specificity -- so setting
592
+ `el.hidden = true` in floating.ts styled a hidden bar and showed it anyway.
593
+ Both floating bars sat over the prose at rest, with no selection to format.
594
+ The overflow panel needed the same rule for the same reason; see below. */
595
+ .ol-editor .ol-toolbar.ol-floating[hidden] {
596
+ display: none;
597
+ }
524
598
  .ol-editor .ol-toolbar.ol-floating {
525
599
  position: absolute;
526
600
  flex-wrap: nowrap;
@@ -533,6 +607,33 @@
533
607
  flex-wrap: nowrap;
534
608
  overflow: hidden;
535
609
  }
610
+ /* The More panel. Positioned in viewport coordinates from script, because the
611
+ bar it belongs to may live inside a host with `overflow: hidden` -- which is
612
+ the situation the whole feature exists for. */
613
+ .ol-editor .ol-overflow-menu {
614
+ display: flex;
615
+ flex-direction: column;
616
+ align-items: stretch;
617
+ gap: var(--ol-gap);
618
+ max-height: 70vh;
619
+ overflow-y: auto;
620
+ }
621
+ .ol-editor .ol-overflow-menu[hidden] {
622
+ display: none;
623
+ }
624
+ /* Vertical: the panel exists because there is no horizontal room left. */
625
+ .ol-editor .ol-overflow-menu .ol-group {
626
+ flex-direction: column;
627
+ align-items: stretch;
628
+ }
629
+ .ol-editor .ol-overflow-menu .ol-group + .ol-group {
630
+ border-inline-start: 0;
631
+ border-block-start: 1px solid var(--ol-border);
632
+ padding-inline-start: 0;
633
+ margin-inline-start: 0;
634
+ padding-block-start: 4px;
635
+ margin-block-start: 3px;
636
+ }
536
637
  .ol-editor.ol-visual-aids .ol-empty-block {
537
638
  outline: 1px dashed var(--ol-border);
538
639
  outline-offset: 2px;
@@ -639,4 +740,38 @@
639
740
  color: GrayText;
640
741
  opacity: 1;
641
742
  }
743
+ .ol-editor .ol-menu-item:focus-visible {
744
+ outline-color: Highlight;
745
+ }
746
+ .ol-editor .ol-menu-item[aria-disabled="true"] {
747
+ color: GrayText;
748
+ opacity: 1;
749
+ }
750
+ .ol-editor .ol-menu-trigger[aria-expanded="true"] {
751
+ border-color: Highlight;
752
+ color: Highlight;
753
+ }
754
+ .ol-editor .ol-content .ProseMirror .selectedCell {
755
+ outline-color: Highlight;
756
+ }
757
+ .ol-editor .ol-content .ProseMirror .selectedCell::after {
758
+ background: transparent;
759
+ }
760
+ .ol-editor .ol-content .ProseMirror .column-resize-handle {
761
+ background: Highlight;
762
+ }
763
+ .ol-editor.ol-visual-aids .ol-nbsp {
764
+ background: transparent;
765
+ box-shadow: inset 0 -2px 0 Highlight;
766
+ }
767
+ .ol-editor.ol-visual-aids .ol-hidden-structure {
768
+ outline-color: Highlight;
769
+ }
770
+ .ol-editor.ol-visual-aids .ol-empty-block {
771
+ outline-color: GrayText;
772
+ }
773
+ .ol-editor .ol-noneditable {
774
+ background: transparent;
775
+ outline: 1px dashed GrayText;
776
+ }
642
777
  }