@openleaf-editor/ui 0.1.0-beta.0 → 0.1.0-beta.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 (62) hide show
  1. package/dist/content-css.d.ts +13 -0
  2. package/dist/content-css.d.ts.map +1 -0
  3. package/dist/content-css.js +57 -0
  4. package/dist/content-css.js.map +1 -0
  5. package/dist/dialog.d.ts +87 -2
  6. package/dist/dialog.d.ts.map +1 -1
  7. package/dist/dialog.js +358 -68
  8. package/dist/dialog.js.map +1 -1
  9. package/dist/floating.d.ts +25 -0
  10. package/dist/floating.d.ts.map +1 -0
  11. package/dist/floating.js +82 -0
  12. package/dist/floating.js.map +1 -0
  13. package/dist/help.d.ts +9 -0
  14. package/dist/help.d.ts.map +1 -0
  15. package/dist/help.js +73 -0
  16. package/dist/help.js.map +1 -0
  17. package/dist/i18n.d.ts +31 -0
  18. package/dist/i18n.d.ts.map +1 -0
  19. package/dist/i18n.js +89 -0
  20. package/dist/i18n.js.map +1 -0
  21. package/dist/icons.d.ts +1 -1
  22. package/dist/icons.d.ts.map +1 -1
  23. package/dist/icons.js +17 -1
  24. package/dist/icons.js.map +1 -1
  25. package/dist/index.d.ts +10 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +10 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/items.d.ts +2 -0
  30. package/dist/items.d.ts.map +1 -1
  31. package/dist/items.js +81 -4
  32. package/dist/items.js.map +1 -1
  33. package/dist/menu.d.ts +56 -0
  34. package/dist/menu.d.ts.map +1 -0
  35. package/dist/menu.js +360 -0
  36. package/dist/menu.js.map +1 -0
  37. package/dist/openleaf.css +216 -0
  38. package/dist/overflow.d.ts +17 -0
  39. package/dist/overflow.d.ts.map +1 -0
  40. package/dist/overflow.js +138 -0
  41. package/dist/overflow.js.map +1 -0
  42. package/dist/pickers.d.ts +43 -0
  43. package/dist/pickers.d.ts.map +1 -0
  44. package/dist/pickers.js +52 -0
  45. package/dist/pickers.js.map +1 -0
  46. package/dist/registry.d.ts +49 -8
  47. package/dist/registry.d.ts.map +1 -1
  48. package/dist/registry.js +14 -0
  49. package/dist/registry.js.map +1 -1
  50. package/dist/styles.d.ts +1 -1
  51. package/dist/styles.d.ts.map +1 -1
  52. package/dist/styles.js +216 -0
  53. package/dist/styles.js.map +1 -1
  54. package/dist/toolbar.d.ts +20 -0
  55. package/dist/toolbar.d.ts.map +1 -1
  56. package/dist/toolbar.js +181 -21
  57. package/dist/toolbar.js.map +1 -1
  58. package/dist/upload.d.ts +95 -0
  59. package/dist/upload.d.ts.map +1 -0
  60. package/dist/upload.js +104 -0
  61. package/dist/upload.js.map +1 -0
  62. package/package.json +2 -2
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Floating toolbars: one for a non-empty selection, one for an empty block
3
+ * that is waiting to be filled.
4
+ *
5
+ * They reuse the same `Toolbar` class as the main bar so the keyboard model,
6
+ * live region and item registry stay in one place. Positioning is the only
7
+ * extra job, and it is deliberately pointer-driven: a keyboard user already
8
+ * has Alt+F10 for the main toolbar, and a second bar that jumps around under
9
+ * arrow keys is a focus trap waiting to happen.
10
+ */
11
+ import { Toolbar } from './toolbar.js';
12
+ export const DEFAULT_SELECTION_LAYOUT = 'bold italic underline | link';
13
+ export const DEFAULT_INSERT_LAYOUT = 'link image horizontalRule';
14
+ export class FloatingToolbars {
15
+ #host;
16
+ #doc;
17
+ #view = null;
18
+ #selection;
19
+ #insert;
20
+ constructor(host, doc, options) {
21
+ this.#host = host;
22
+ this.#doc = doc;
23
+ this.#selection = options.selectionLayout
24
+ ? new Toolbar(host, doc, { layout: options.selectionLayout, label: 'Selection formatting' })
25
+ : null;
26
+ this.#insert = options.insertLayout
27
+ ? new Toolbar(host, doc, { layout: options.insertLayout, label: 'Insert' })
28
+ : null;
29
+ if (this.#selection) {
30
+ this.#selection.el.classList.add('ol-floating');
31
+ this.#selection.el.hidden = true;
32
+ host.appendChild(this.#selection.el);
33
+ }
34
+ if (this.#insert) {
35
+ this.#insert.el.classList.add('ol-floating');
36
+ this.#insert.el.hidden = true;
37
+ host.appendChild(this.#insert.el);
38
+ }
39
+ }
40
+ mount(view) {
41
+ this.#view = view;
42
+ this.#selection?.mount(view);
43
+ this.#insert?.mount(view);
44
+ }
45
+ update(state) {
46
+ this.#selection?.update(state);
47
+ this.#insert?.update(state);
48
+ this.#position(state);
49
+ }
50
+ destroy() {
51
+ this.#selection?.destroy();
52
+ this.#insert?.destroy();
53
+ this.#selection?.el.remove();
54
+ this.#insert?.el.remove();
55
+ }
56
+ #position(state) {
57
+ const view = this.#view;
58
+ if (!view)
59
+ return;
60
+ const empty = state.selection.empty;
61
+ if (this.#selection) {
62
+ this.#selection.el.hidden = empty;
63
+ if (!empty)
64
+ this.#place(this.#selection.el, view, state.selection.from);
65
+ }
66
+ if (this.#insert) {
67
+ const $from = state.selection.$from;
68
+ const showInsert = empty && $from.parent.isTextblock && $from.parent.content.size === 0;
69
+ this.#insert.el.hidden = !showInsert;
70
+ if (showInsert)
71
+ this.#place(this.#insert.el, view, state.selection.from);
72
+ }
73
+ }
74
+ #place(el, view, pos) {
75
+ const coords = view.coordsAtPos(pos);
76
+ const hostBox = this.#host.getBoundingClientRect();
77
+ el.style.left = `${coords.left - hostBox.left}px`;
78
+ el.style.top = `${coords.bottom - hostBox.top + 8}px`;
79
+ void this.#doc;
80
+ }
81
+ }
82
+ //# sourceMappingURL=floating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating.js","sourceRoot":"","sources":["../src/floating.ts"],"names":[],"mappings":"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"}
package/dist/help.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * In-editor help: the shortcut table plus the chrome controls that have no
3
+ * key of their own.
4
+ *
5
+ * The shortcut list is the same array `buildKeymap` reads. A hand-maintained
6
+ * help page that drifted from the keymap would be worse than no help at all.
7
+ */
8
+ export declare function promptHelp(doc: Document): void;
9
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CA2D9C"}
package/dist/help.js ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * In-editor help: the shortcut table plus the chrome controls that have no
3
+ * key of their own.
4
+ *
5
+ * The shortcut list is the same array `buildKeymap` reads. A hand-maintained
6
+ * help page that drifted from the keymap would be worse than no help at all.
7
+ */
8
+ import { shortcutFor, shortcuts } from '@openleaf-editor/core';
9
+ import { ensureDialogStyles } from './dialog.js';
10
+ import { t } from './i18n.js';
11
+ import { ensureStyles } from './styles.js';
12
+ const HELP_CHROME = [
13
+ ['Alt+F10', 'Move focus to the formatting toolbar'],
14
+ ['Escape', 'Return focus to the document'],
15
+ ['F1', 'Open this help dialog'],
16
+ ];
17
+ export function promptHelp(doc) {
18
+ ensureStyles(doc);
19
+ ensureDialogStyles(doc);
20
+ const previouslyFocused = doc.activeElement;
21
+ const dialog = doc.createElement('dialog');
22
+ dialog.className = 'ol-dialog ol-help';
23
+ dialog.setAttribute('aria-labelledby', 'ol-help-title');
24
+ const form = doc.createElement('form');
25
+ form.method = 'dialog';
26
+ const heading = doc.createElement('h2');
27
+ heading.id = 'ol-help-title';
28
+ heading.textContent = t('Keyboard shortcuts');
29
+ form.appendChild(heading);
30
+ const table = doc.createElement('table');
31
+ table.className = 'ol-help-table';
32
+ const body = doc.createElement('tbody');
33
+ for (const shortcut of shortcuts) {
34
+ const row = doc.createElement('tr');
35
+ const keys = doc.createElement('th');
36
+ keys.scope = 'row';
37
+ keys.textContent = shortcutFor(shortcut.label) ?? shortcut.keys;
38
+ const label = doc.createElement('td');
39
+ label.textContent = t(shortcut.label);
40
+ row.appendChild(keys);
41
+ row.appendChild(label);
42
+ body.appendChild(row);
43
+ }
44
+ for (const [keys, label] of HELP_CHROME) {
45
+ const row = doc.createElement('tr');
46
+ const keyCell = doc.createElement('th');
47
+ keyCell.scope = 'row';
48
+ keyCell.textContent = keys;
49
+ const labelCell = doc.createElement('td');
50
+ labelCell.textContent = t(label);
51
+ row.appendChild(keyCell);
52
+ row.appendChild(labelCell);
53
+ body.appendChild(row);
54
+ }
55
+ table.appendChild(body);
56
+ form.appendChild(table);
57
+ const actions = doc.createElement('div');
58
+ actions.className = 'ol-actions';
59
+ const close = doc.createElement('button');
60
+ close.type = 'submit';
61
+ close.value = 'ok';
62
+ close.textContent = t('Close');
63
+ actions.appendChild(close);
64
+ form.appendChild(actions);
65
+ dialog.appendChild(form);
66
+ doc.body.appendChild(dialog);
67
+ dialog.addEventListener('close', () => {
68
+ dialog.remove();
69
+ previouslyFocused?.focus();
70
+ });
71
+ dialog.showModal();
72
+ }
73
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,GAA4B;IAC3C,CAAC,SAAS,EAAE,sCAAsC,CAAC;IACnD,CAAC,QAAQ,EAAE,8BAA8B,CAAC;IAC1C,CAAC,IAAI,EAAE,uBAAuB,CAAC;CAChC,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,GAAa;IACtC,YAAY,CAAC,GAAG,CAAC,CAAA;IACjB,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACvB,MAAM,iBAAiB,GAAG,GAAG,CAAC,aAAmC,CAAA;IACjE,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAA;IACtC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;IAEvD,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;IAEtB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAA;IAC5B,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAA;IAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IAEzB,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACxC,KAAK,CAAC,SAAS,GAAG,eAAe,CAAA;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACvC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAA;QAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACrC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACrC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACrB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QACrB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;QAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACzC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACxB,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAEvB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAA;IACrB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;IAClB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,iBAAiB,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,SAAS,EAAE,CAAA;AACpB,CAAC"}
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * UI strings.
3
+ *
4
+ * English source text is the lookup key, so a missing translation still shows
5
+ * something an author can read, and a new button does not require a coordinated
6
+ * catalog bump before it can ship. `registerTranslations` overlays a locale;
7
+ * last registration for a key wins, which is how a host replaces one phrase
8
+ * without forking the catalog.
9
+ */
10
+ /**
11
+ * Run `render` with `forLocale` in force, then put the previous one back.
12
+ *
13
+ * Each editor carries its own `lang`, and the document-wide locale cannot serve
14
+ * that: two editors with different languages on one page would both end up in
15
+ * whichever built last. Threading a locale argument through every label in every
16
+ * component would say the same thing far more loudly, so the scope is a
17
+ * synchronous one instead -- labels produced while rendering see their own
18
+ * editor's locale.
19
+ *
20
+ * Synchronous is the constraint worth knowing: a label built later, outside any
21
+ * render, falls back to the document locale.
22
+ */
23
+ export declare function withLocale<T>(forLocale: string | null | undefined, render: () => T): T;
24
+ export declare function onLocaleChange(listener: () => void): () => void;
25
+ /** The document-wide locale. Inside `withLocale` the scoped one wins. */
26
+ export declare function uiLocale(): string;
27
+ export declare function setUiLocale(next: string): void;
28
+ export declare function registerTranslations(forLocale: string, messages: Record<string, string>): void;
29
+ /** Translate a source string. Falls back to the string itself. */
30
+ export declare function t(source: string): string;
31
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAStF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAK/D;AAYD,yEAAyE;AACzE,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK9C;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQ9F;AAED,kEAAkE;AAClE,wBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUxC"}
package/dist/i18n.js ADDED
@@ -0,0 +1,89 @@
1
+ /**
2
+ * UI strings.
3
+ *
4
+ * English source text is the lookup key, so a missing translation still shows
5
+ * something an author can read, and a new button does not require a coordinated
6
+ * catalog bump before it can ship. `registerTranslations` overlays a locale;
7
+ * last registration for a key wins, which is how a host replaces one phrase
8
+ * without forking the catalog.
9
+ */
10
+ const catalogs = new Map();
11
+ const listeners = new Set();
12
+ let locale = 'en';
13
+ let scoped = null;
14
+ /**
15
+ * Run `render` with `forLocale` in force, then put the previous one back.
16
+ *
17
+ * Each editor carries its own `lang`, and the document-wide locale cannot serve
18
+ * that: two editors with different languages on one page would both end up in
19
+ * whichever built last. Threading a locale argument through every label in every
20
+ * component would say the same thing far more loudly, so the scope is a
21
+ * synchronous one instead -- labels produced while rendering see their own
22
+ * editor's locale.
23
+ *
24
+ * Synchronous is the constraint worth knowing: a label built later, outside any
25
+ * render, falls back to the document locale.
26
+ */
27
+ export function withLocale(forLocale, render) {
28
+ if (!forLocale)
29
+ return render();
30
+ const previous = scoped;
31
+ scoped = forLocale;
32
+ try {
33
+ return render();
34
+ }
35
+ finally {
36
+ scoped = previous;
37
+ }
38
+ }
39
+ export function onLocaleChange(listener) {
40
+ listeners.add(listener);
41
+ return () => {
42
+ listeners.delete(listener);
43
+ };
44
+ }
45
+ function notify() {
46
+ for (const listener of listeners) {
47
+ try {
48
+ listener();
49
+ }
50
+ catch (error) {
51
+ console.error('@openleaf-editor/ui: a locale listener threw', error);
52
+ }
53
+ }
54
+ }
55
+ /** The document-wide locale. Inside `withLocale` the scoped one wins. */
56
+ export function uiLocale() {
57
+ return scoped ?? locale;
58
+ }
59
+ export function setUiLocale(next) {
60
+ const value = next.trim() || 'en';
61
+ if (value === locale)
62
+ return;
63
+ locale = value;
64
+ notify();
65
+ }
66
+ export function registerTranslations(forLocale, messages) {
67
+ const existing = catalogs.get(forLocale) ?? {};
68
+ catalogs.set(forLocale, { ...existing, ...messages });
69
+ // Notified whatever locale this is for. Each editor now carries its own, so
70
+ // "does this match the document locale" no longer answers "does anybody care":
71
+ // a catalog registered after the editors were built -- the ordinary case for a
72
+ // script tag -- would otherwise never reach the editor it was meant for.
73
+ notify();
74
+ }
75
+ /** Translate a source string. Falls back to the string itself. */
76
+ export function t(source) {
77
+ const current = scoped ?? locale;
78
+ const exact = catalogs.get(current)?.[source];
79
+ if (exact)
80
+ return exact;
81
+ const language = current.split('-')[0];
82
+ if (language && language !== current) {
83
+ const regional = catalogs.get(language)?.[source];
84
+ if (regional)
85
+ return regional;
86
+ }
87
+ return catalogs.get('en')?.[source] ?? source;
88
+ }
89
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAA;AAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;AACvC,IAAI,MAAM,GAAG,IAAI,CAAA;AACjB,IAAI,MAAM,GAAkB,IAAI,CAAA;AAEhC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAI,SAAoC,EAAE,MAAe;IACjF,IAAI,CAAC,SAAS;QAAE,OAAO,MAAM,EAAE,CAAA;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAA;IACvB,MAAM,GAAG,SAAS,CAAA;IAClB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAoB;IACjD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,SAAS,MAAM;IACb,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,QAAQ,EAAE,CAAA;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,QAAQ;IACtB,OAAO,MAAM,IAAI,MAAM,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;IACjC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAM;IAC5B,MAAM,GAAG,KAAK,CAAA;IACd,MAAM,EAAE,CAAA;AACV,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,QAAgC;IACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAC9C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAA;IACrD,4EAA4E;IAC5E,+EAA+E;IAC/E,+EAA+E;IAC/E,yEAAyE;IACzE,MAAM,EAAE,CAAA;AACV,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,CAAC,CAAC,MAAc;IAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAA;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC7C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QACjD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,CAAA;AAC/C,CAAC"}
package/dist/icons.d.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  * is *gras* in French, *fett* in German; a "B" icon is a
13
13
  * translation bug wearing a costume.
14
14
  *
15
- * All 16 icons are a 24x24 viewBox with `stroke="currentColor"`, so they inherit
15
+ * All 20 icons are a 24x24 viewBox with `stroke="currentColor"`, so they inherit
16
16
  * text colour for free and need no separate dark-mode set. Roughly 2 KB raw,
17
17
  * under 1 KB gzipped.
18
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA4BH;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAkB7B,wBAAgB,SAAS,IAAI,QAAQ,EAAE,CAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAgBjF;AAKD,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAchD;AAiBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,CAYxE"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAoCH;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AA2B7B,wBAAgB,SAAS,IAAI,QAAQ,EAAE,CAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAgBjF;AAKD,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAchD;AAiBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,CAYxE"}
package/dist/icons.js CHANGED
@@ -12,7 +12,7 @@
12
12
  * is *gras* in French, *fett* in German; a "B" icon is a
13
13
  * translation bug wearing a costume.
14
14
  *
15
- * All 16 icons are a 24x24 viewBox with `stroke="currentColor"`, so they inherit
15
+ * All 20 icons are a 24x24 viewBox with `stroke="currentColor"`, so they inherit
16
16
  * text colour for free and need no separate dark-mode set. Roughly 2 KB raw,
17
17
  * under 1 KB gzipped.
18
18
  *
@@ -43,9 +43,17 @@ const PATHS = {
43
43
  unlink: 'M18.84 12.25l1.72-1.71a5 5 0 0 0-7.07-7.07l-1.72 1.71M5.17 11.75l-1.71 1.71a5 5 0 0 0 7.07 7.07l1.71-1.71M2 2l20 20',
44
44
  image: 'M3 3h18v18H3zM8.5 9.5a1.5 1.5 0 1 0 .01 0M21 15l-5-5L5 21',
45
45
  horizontalRule: 'M4 12h16',
46
+ alignLeft: 'M3 6h18M3 12h10M3 18h14',
47
+ alignCenter: 'M3 6h18M7 12h10M5 18h14',
48
+ alignRight: 'M3 6h18M11 12h10M7 18h14',
49
+ alignJustify: 'M3 6h18M3 12h18M3 18h18',
46
50
  undo: 'M3 7v6h6M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13',
47
51
  redo: 'M21 7v6h-6M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3L21 13',
48
52
  source: 'M18 16l4-4-4-4M6 8l-4 4 4 4M14.5 4l-5 16',
53
+ more: 'M6 12h.01M12 12h.01M18 12h.01',
54
+ fullscreen: 'M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5',
55
+ help: 'M12 18h.01M9.1 9a3 3 0 1 1 5.8 1c0 2-3 2-3 4',
56
+ visualAids: 'M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12zM12 12a2 2 0 1 0 .01 0',
49
57
  };
50
58
  /**
51
59
  * Icons whose meaning depends on reading direction, and which must therefore be
@@ -62,6 +70,14 @@ const DIRECTIONAL = new Set([
62
70
  'bulletList',
63
71
  'orderedList',
64
72
  ]);
73
+ /*
74
+ * The alignment icons are deliberately absent from that set, and it is the
75
+ * counter-intuitive case. They look like the mirroring candidates -- a glyph of
76
+ * short lines ragged on the left -- but `text-align: left` means the left edge in
77
+ * an RTL document too. Mirroring them would show a right-ragged icon on the
78
+ * button that aligns text left, which is not localisation, it is a lie about
79
+ * what the control does.
80
+ */
65
81
  export function iconNames() {
66
82
  return Object.keys(PATHS);
67
83
  }
package/dist/icons.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,15 @@
1
1
  export { Toolbar, type ToolbarOptions } from './toolbar.js';
2
- export { DEFAULT_LAYOUT, allToolbarItems, clearToolbarItems, getToolbarItem, onRegistryChange, registerToolbarItem, type ToolbarContext, type ToolbarItemSpec, } from './registry.js';
3
- export { SOURCE_TOGGLE_EVENT, registerDefaultItems } from './items.js';
2
+ export { DEFAULT_LAYOUT, LAYOUT_WITH_COLOUR, allToolbarItems, clearToolbarItems, getToolbarItem, onRegistryChange, registerToolbarItem, type ToolbarContext, type ToolbarControl, type ToolbarItemSpec, } from './registry.js';
3
+ export { SOURCE_TOGGLE_EVENT, FULLSCREEN_TOGGLE_EVENT, VISUAL_AIDS_TOGGLE_EVENT, registerDefaultItems } from './items.js';
4
+ export { t, setUiLocale, uiLocale, registerTranslations, onLocaleChange, withLocale, } from './i18n.js';
5
+ export { MenuBar, PopupMenu, DEFAULT_MENUBAR, selectMenus, LINK_CONTEXT_ITEMS, IMAGE_CONTEXT_ITEMS, TABLE_CONTEXT_ITEMS, type MenuSpec, type MenuEntry, } from './menu.js';
6
+ export { promptHelp } from './help.js';
7
+ export { FloatingToolbars, DEFAULT_SELECTION_LAYOUT, DEFAULT_INSERT_LAYOUT, } from './floating.js';
8
+ export { loadContentCss, contentCssUrls, scopeContentCss } from './content-css.js';
4
9
  export { CSS, ensureStyles, markStylesExternal, registerStyles } from './styles.js';
5
10
  export { ensureSprite, iconElement, iconNames, registerIcons, type IconName } from './icons.js';
6
- export { promptForImage, promptForLink, type ImageResult, type LinkResult } from './dialog.js';
11
+ export { promptFields, promptForImage, promptForLink, type FieldOption, type FieldSpec, type ImagePromptOptions, type ImageResult, type LinkResult, type PromptFormOptions, } from './dialog.js';
12
+ export { filePickerFor, listedImageClasses, listedImages, listedLinks, registerFilePicker, registerImageClasses, registerImageList, registerLinkList, type FilePicker, type FilePickerKind, type ListedResource, type PickedResource, } from './pickers.js';
13
+ export { IMAGE_ACCEPT, canUploadImages, imageFilesFrom, imageUploaderFor, isUploadableImage, registerImageUploader, runUploader, type ImageUploadResult, type ImageUploader, } from './upload.js';
7
14
  export { BUILT_IN_SKINS, applyColourScheme, applySkin, availableSkins, ensureSkins, registerSkin, type ColourScheme, type Skin, } from './skins.js';
8
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/F,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,IAAI,GACV,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACzH,OAAO,EACL,CAAC,EACD,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,UAAU,GACX,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/F,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,IAAI,GACV,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,8 +1,15 @@
1
1
  export { Toolbar } from './toolbar.js';
2
- export { DEFAULT_LAYOUT, allToolbarItems, clearToolbarItems, getToolbarItem, onRegistryChange, registerToolbarItem, } from './registry.js';
3
- export { SOURCE_TOGGLE_EVENT, registerDefaultItems } from './items.js';
2
+ export { DEFAULT_LAYOUT, LAYOUT_WITH_COLOUR, allToolbarItems, clearToolbarItems, getToolbarItem, onRegistryChange, registerToolbarItem, } from './registry.js';
3
+ export { SOURCE_TOGGLE_EVENT, FULLSCREEN_TOGGLE_EVENT, VISUAL_AIDS_TOGGLE_EVENT, registerDefaultItems } from './items.js';
4
+ export { t, setUiLocale, uiLocale, registerTranslations, onLocaleChange, withLocale, } from './i18n.js';
5
+ export { MenuBar, PopupMenu, DEFAULT_MENUBAR, selectMenus, LINK_CONTEXT_ITEMS, IMAGE_CONTEXT_ITEMS, TABLE_CONTEXT_ITEMS, } from './menu.js';
6
+ export { promptHelp } from './help.js';
7
+ export { FloatingToolbars, DEFAULT_SELECTION_LAYOUT, DEFAULT_INSERT_LAYOUT, } from './floating.js';
8
+ export { loadContentCss, contentCssUrls, scopeContentCss } from './content-css.js';
4
9
  export { CSS, ensureStyles, markStylesExternal, registerStyles } from './styles.js';
5
10
  export { ensureSprite, iconElement, iconNames, registerIcons } from './icons.js';
6
- export { promptForImage, promptForLink } from './dialog.js';
11
+ export { promptFields, promptForImage, promptForLink, } from './dialog.js';
12
+ export { filePickerFor, listedImageClasses, listedImages, listedLinks, registerFilePicker, registerImageClasses, registerImageList, registerLinkList, } from './pickers.js';
13
+ export { IMAGE_ACCEPT, canUploadImages, imageFilesFrom, imageUploaderFor, isUploadableImage, registerImageUploader, runUploader, } from './upload.js';
7
14
  export { BUILT_IN_SKINS, applyColourScheme, applySkin, availableSkins, ensureSkins, registerSkin, } from './skins.js';
8
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GAGpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAC/F,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAA;AAC9F,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,GAGb,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GAIpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACzH,OAAO,EACL,CAAC,EACD,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,UAAU,GACX,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GAGpB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAC/F,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,GAOd,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GAKjB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,GAGZ,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,GAGb,MAAM,YAAY,CAAA"}
package/dist/items.d.ts CHANGED
@@ -8,6 +8,8 @@
8
8
  */
9
9
  /** Event the host listens for to switch between rich and source views. */
10
10
  export declare const SOURCE_TOGGLE_EVENT = "openleaf:toggle-source";
11
+ export declare const FULLSCREEN_TOGGLE_EVENT = "openleaf:toggle-fullscreen";
12
+ export declare const VISUAL_AIDS_TOGGLE_EVENT = "openleaf:toggle-visual-aids";
11
13
  /** Register the built-in items. Idempotent. */
12
14
  export declare function registerDefaultItems(): void;
13
15
  //# sourceMappingURL=items.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2BH,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,2BAA2B,CAAA;AAI3D,+CAA+C;AAC/C,wBAAgB,oBAAoB,IAAI,IAAI,CAuM3C"}
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,2BAA2B,CAAA;AAC3D,eAAO,MAAM,uBAAuB,+BAA+B,CAAA;AACnE,eAAO,MAAM,wBAAwB,gCAAgC,CAAA;AAIrE,+CAA+C;AAC/C,wBAAgB,oBAAoB,IAAI,IAAI,CAuR3C"}
package/dist/items.js CHANGED
@@ -6,11 +6,15 @@
6
6
  * document, that knowledge belongs in `@openleaf-editor/core` where a keyboard
7
7
  * shortcut and a test can reach it too.
8
8
  */
9
- import { activeLink, insertHorizontalRule, insertImage, isMarkActive, isNodeActive, redo, setLink, toggleBlockquote, toggleBold, toggleBulletList, toggleCodeBlock, toggleInlineCode, toggleItalic, toggleOrderedList, toggleStrike, toggleUnderline, undo, unsetLink, } from '@openleaf-editor/core';
9
+ import { activeLink, activeTextAlign, insertHorizontalRule, insertImage, isMarkActive, isNodeActive, redo, setLink, toggleBlockquote, toggleBold, toggleBulletList, toggleCodeBlock, toggleInlineCode, toggleItalic, toggleOrderedList, toggleStrike, toggleTextAlign, toggleUnderline, undo, unsetLink, } from '@openleaf-editor/core';
10
10
  import { promptForImage, promptForLink } from './dialog.js';
11
+ import { promptHelp } from './help.js';
11
12
  import { registerToolbarItem } from './registry.js';
13
+ import { imageUploaderFor, runUploader } from './upload.js';
12
14
  /** Event the host listens for to switch between rich and source views. */
13
15
  export const SOURCE_TOGGLE_EVENT = 'openleaf:toggle-source';
16
+ export const FULLSCREEN_TOGGLE_EVENT = 'openleaf:toggle-fullscreen';
17
+ export const VISUAL_AIDS_TOGGLE_EVENT = 'openleaf:toggle-visual-aids';
14
18
  let registered = false;
15
19
  /** Register the built-in items. Idempotent. */
16
20
  export function registerDefaultItems() {
@@ -111,6 +115,30 @@ export function registerDefaultItems() {
111
115
  isActive: (state) => isNodeActive(state, 'code_block'),
112
116
  shortcut: 'Code block',
113
117
  });
118
+ /* ---- alignment ----
119
+ Toggles, not actions, and the pressed state is the EXPLICIT alignment only.
120
+ A paragraph nobody has aligned follows the document's reading direction, so
121
+ lighting up the left button for it would be wrong in Arabic and Hebrew --
122
+ and `aria-pressed="true"` on a paragraph that is not left-aligned is a lie
123
+ a screen reader repeats. See activeTextAlign in core. */
124
+ const alignItems = [
125
+ { id: 'alignLeft', label: 'Align left', icon: 'alignLeft', align: 'left' },
126
+ { id: 'alignCenter', label: 'Align centre', icon: 'alignCenter', align: 'center' },
127
+ { id: 'alignRight', label: 'Align right', icon: 'alignRight', align: 'right' },
128
+ { id: 'alignJustify', label: 'Justify', icon: 'alignJustify', align: 'justify' },
129
+ ];
130
+ for (const item of alignItems) {
131
+ registerToolbarItem({
132
+ id: item.id,
133
+ type: 'button',
134
+ kind: 'toggle',
135
+ label: item.label,
136
+ icon: item.icon,
137
+ command: toggleTextAlign(item.align),
138
+ isActive: (state) => activeTextAlign(state) === item.align,
139
+ shortcut: item.label,
140
+ });
141
+ }
114
142
  /* ---- insertions ---- */
115
143
  registerToolbarItem({
116
144
  id: 'link',
@@ -126,8 +154,9 @@ export function registerDefaultItems() {
126
154
  const existing = activeLink(view.state);
127
155
  void promptForLink(host.ownerDocument, {
128
156
  href: existing?.['href'] ?? '',
157
+ title: existing?.['title'] ?? null,
129
158
  target: existing?.['target'] ?? null,
130
- }).then((result) => {
159
+ }, host).then((result) => {
131
160
  if (!result) {
132
161
  view.focus();
133
162
  return;
@@ -152,12 +181,28 @@ export function registerDefaultItems() {
152
181
  label: 'Insert image',
153
182
  icon: 'image',
154
183
  run: ({ view, host }) => {
155
- void promptForImage(host.ownerDocument).then((result) => {
184
+ // One item, two dialogs, decided by whether this page can upload. A file
185
+ // picker that appears and then fails because no uploader was registered is
186
+ // worse than no picker: the author has already chosen the file.
187
+ const uploader = imageUploaderFor(host);
188
+ const options = uploader
189
+ ? { upload: (file) => runUploader(uploader, file, host), host }
190
+ : { host };
191
+ void promptForImage(host.ownerDocument, options).then((result) => {
156
192
  if (!result) {
157
193
  view.focus();
158
194
  return;
159
195
  }
160
- insertImage({ src: result.src, alt: result.alt })(view.state, view.dispatch, view);
196
+ insertImage({
197
+ src: result.src,
198
+ alt: result.alt,
199
+ title: result.title,
200
+ width: result.width,
201
+ height: result.height,
202
+ align: result.align,
203
+ className: result.className,
204
+ ...(result.caption ? { caption: result.caption } : {}),
205
+ })(view.state, view.dispatch, view);
161
206
  view.focus();
162
207
  });
163
208
  },
@@ -186,5 +231,37 @@ export function registerDefaultItems() {
186
231
  host.dispatchEvent(new CustomEvent(SOURCE_TOGGLE_EVENT, { bubbles: true }));
187
232
  },
188
233
  });
234
+ registerToolbarItem({
235
+ id: 'fullscreen',
236
+ type: 'button',
237
+ kind: 'toggle',
238
+ label: 'Fullscreen',
239
+ icon: 'fullscreen',
240
+ isActive: () => false,
241
+ run: ({ host }) => {
242
+ host.dispatchEvent(new CustomEvent(FULLSCREEN_TOGGLE_EVENT, { bubbles: true }));
243
+ },
244
+ });
245
+ registerToolbarItem({
246
+ id: 'visualAids',
247
+ type: 'button',
248
+ kind: 'toggle',
249
+ label: 'Visual aids',
250
+ icon: 'visualAids',
251
+ isActive: () => false,
252
+ run: ({ host }) => {
253
+ host.dispatchEvent(new CustomEvent(VISUAL_AIDS_TOGGLE_EVENT, { bubbles: true }));
254
+ },
255
+ });
256
+ registerToolbarItem({
257
+ id: 'help',
258
+ type: 'button',
259
+ kind: 'action',
260
+ label: 'Help',
261
+ icon: 'help',
262
+ run: ({ host }) => {
263
+ promptHelp(host.ownerDocument);
264
+ },
265
+ });
189
266
  }
190
267
  //# sourceMappingURL=items.js.map
package/dist/items.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"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"}