@openleaf-editor/ui 0.1.0-beta.1 → 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 (53) 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 +66 -19
  6. package/dist/dialog.d.ts.map +1 -1
  7. package/dist/dialog.js +198 -51
  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.map +1 -1
  22. package/dist/icons.js +4 -0
  23. package/dist/icons.js.map +1 -1
  24. package/dist/index.d.ts +8 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +8 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/items.d.ts +2 -0
  29. package/dist/items.d.ts.map +1 -1
  30. package/dist/items.js +43 -3
  31. package/dist/items.js.map +1 -1
  32. package/dist/menu.d.ts +56 -0
  33. package/dist/menu.d.ts.map +1 -0
  34. package/dist/menu.js +360 -0
  35. package/dist/menu.js.map +1 -0
  36. package/dist/openleaf.css +216 -0
  37. package/dist/overflow.d.ts +17 -0
  38. package/dist/overflow.d.ts.map +1 -0
  39. package/dist/overflow.js +138 -0
  40. package/dist/overflow.js.map +1 -0
  41. package/dist/pickers.d.ts +43 -0
  42. package/dist/pickers.d.ts.map +1 -0
  43. package/dist/pickers.js +52 -0
  44. package/dist/pickers.js.map +1 -0
  45. package/dist/styles.d.ts +1 -1
  46. package/dist/styles.d.ts.map +1 -1
  47. package/dist/styles.js +216 -0
  48. package/dist/styles.js.map +1 -1
  49. package/dist/toolbar.d.ts +20 -0
  50. package/dist/toolbar.d.ts.map +1 -1
  51. package/dist/toolbar.js +105 -17
  52. package/dist/toolbar.js.map +1 -1
  53. package/package.json +2 -2
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Load content CSS so the canvas matches the published site.
3
+ *
4
+ * OpenLeaf has no iframe. Host typography already inherits into the document,
5
+ * which is the point of skipping Shadow DOM. This helper is for an extra
6
+ * stylesheet the published template uses -- a CMS "styles.css" -- that is not
7
+ * on the admin page. Selectors are scoped under the editor canvas so a rule
8
+ * written for `p.lead` cannot restyle the rest of the admin chrome.
9
+ */
10
+ export declare function scopeContentCss(css: string): string;
11
+ export declare function loadContentCss(doc: Document, urls: readonly string[]): Promise<void>;
12
+ export declare function contentCssUrls(value: string | null): string[];
13
+ //# sourceMappingURL=content-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-css.d.ts","sourceRoot":"","sources":["../src/content-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcnD;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB1F;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAM7D"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Load content CSS so the canvas matches the published site.
3
+ *
4
+ * OpenLeaf has no iframe. Host typography already inherits into the document,
5
+ * which is the point of skipping Shadow DOM. This helper is for an extra
6
+ * stylesheet the published template uses -- a CMS "styles.css" -- that is not
7
+ * on the admin page. Selectors are scoped under the editor canvas so a rule
8
+ * written for `p.lead` cannot restyle the rest of the admin chrome.
9
+ */
10
+ export function scopeContentCss(css) {
11
+ return css.replace(/(^|})(\s*)([^@{}][^{]*)\{/g, (full, brace, space, selector) => {
12
+ if (selector.trim().startsWith('@'))
13
+ return full;
14
+ const scoped = selector
15
+ .split(',')
16
+ .map((part) => {
17
+ const trimmed = part.trim();
18
+ if (!trimmed)
19
+ return part;
20
+ if (trimmed.startsWith('.ol-editor') || trimmed.startsWith('.ol-content'))
21
+ return trimmed;
22
+ return `.ol-editor .ol-content .ProseMirror ${trimmed}`;
23
+ })
24
+ .join(', ');
25
+ return `${brace}${space}${scoped}{`;
26
+ });
27
+ }
28
+ export async function loadContentCss(doc, urls) {
29
+ if (typeof CSSStyleSheet === 'undefined' || !('adoptedStyleSheets' in Document.prototype)) {
30
+ console.warn('@openleaf-editor/ui: content CSS could not be adopted in this browser. ' +
31
+ 'Link the published stylesheet on the host page instead.');
32
+ return;
33
+ }
34
+ for (const url of urls) {
35
+ try {
36
+ const response = await fetch(url);
37
+ if (!response.ok)
38
+ throw new Error(`HTTP ${response.status}`);
39
+ const css = scopeContentCss(await response.text());
40
+ const sheet = new CSSStyleSheet();
41
+ sheet.replaceSync(css);
42
+ doc.adoptedStyleSheets = [...doc.adoptedStyleSheets, sheet];
43
+ }
44
+ catch (error) {
45
+ console.warn(`@openleaf-editor/ui: content CSS at "${url}" could not be loaded.`, error);
46
+ }
47
+ }
48
+ }
49
+ export function contentCssUrls(value) {
50
+ if (!value)
51
+ return [];
52
+ return value
53
+ .split(/[, ]+/)
54
+ .map((part) => part.trim())
55
+ .filter(Boolean);
56
+ }
57
+ //# sourceMappingURL=content-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-css.js","sourceRoot":"","sources":["../src/content-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,IAAI,EAAE,KAAa,EAAE,KAAa,EAAE,QAAgB,EAAE,EAAE;QACxG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAChD,MAAM,MAAM,GAAG,QAAQ;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3B,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YACzB,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;gBAAE,OAAO,OAAO,CAAA;YACzF,OAAO,uCAAuC,OAAO,EAAE,CAAA;QACzD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAa,EAAE,IAAuB;IACzE,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,CAAC,oBAAoB,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1F,OAAO,CAAC,IAAI,CACV,yEAAyE;YACvE,yDAAyD,CAC5D,CAAA;QACD,OAAM;IACR,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;YACjC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACtB,GAAG,CAAC,kBAAkB,GAAG,CAAC,GAAG,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,wCAAwC,GAAG,wBAAwB,EACnE,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,OAAO,KAAK;SACT,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC"}
package/dist/dialog.d.ts CHANGED
@@ -22,6 +22,7 @@
22
22
  import { type ImageUploadResult } from './upload.js';
23
23
  export interface LinkResult {
24
24
  href: string;
25
+ title: string | null;
25
26
  target: string | null;
26
27
  rel: string | null;
27
28
  }
@@ -29,35 +30,81 @@ export interface ImageResult {
29
30
  src: string;
30
31
  /** `''` means explicitly decorative. `null` is never returned. */
31
32
  alt: string;
33
+ title: string | null;
32
34
  /** Intrinsic size, when an uploader reported one. */
33
35
  width: string | null;
34
36
  height: string | null;
37
+ className: string | null;
38
+ align: 'left' | 'right' | 'center' | null;
39
+ caption: string | null;
35
40
  }
41
+ export interface FieldOption {
42
+ value: string;
43
+ label: string;
44
+ }
45
+ export interface FieldSpec {
46
+ name: string;
47
+ label: string;
48
+ type?: string;
49
+ value?: string;
50
+ required?: boolean;
51
+ hint?: string;
52
+ /** For `type: 'file'`: the accept list. */
53
+ accept?: string;
54
+ /** When set, the field is a `<select>` rather than an input. */
55
+ options?: readonly FieldOption[];
56
+ /**
57
+ * The field this control writes into when it changes.
58
+ *
59
+ * A chooser that only *contributed* its value could never change a field that
60
+ * was already filled in: editing a link or an image prefills the address, so
61
+ * picking from the list lost to it every time and the list worked only for new
62
+ * insertions. Writing into the field it fills keeps one source of truth, and
63
+ * shows the author what they picked so they can still edit it.
64
+ */
65
+ fills?: string;
66
+ }
67
+ export declare function ensureDialogStyles(doc: Document): void;
68
+ export interface PromptFormOptions {
69
+ extraCheckbox?: {
70
+ name: string;
71
+ label: string;
72
+ hint?: string;
73
+ checked?: boolean;
74
+ };
75
+ note?: string;
76
+ busyLabel?: string;
77
+ }
78
+ /**
79
+ * A generic modal form, used by table property dialogs and anything else that
80
+ * is a handful of labelled fields rather than a specialised prompt.
81
+ */
82
+ export declare function promptFields<T>(doc: Document, title: string, fields: FieldSpec[], options: PromptFormOptions, commit: (values: Record<string, string>, files: Record<string, File | undefined>) => Promise<{
83
+ value: T;
84
+ } | {
85
+ error: string;
86
+ }> | {
87
+ value: T;
88
+ } | {
89
+ error: string;
90
+ }): Promise<T | null>;
36
91
  export declare function promptForLink(doc: Document, existing?: {
37
92
  href?: string;
93
+ title?: string | null;
38
94
  target?: string | null;
39
- }): Promise<LinkResult | null>;
95
+ }, host?: HTMLElement): Promise<LinkResult | null>;
40
96
  export interface ImagePromptOptions {
41
- /**
42
- * A file the author has already chosen, by dropping or pasting it.
43
- *
44
- * When present the dialog does not offer a picker or an address field: the
45
- * source is settled and the only open question is the description.
46
- */
47
97
  file?: File;
48
- /** Uploads a file and reports where it landed. Absent means URL-only. */
49
98
  upload?: (file: File) => Promise<ImageUploadResult>;
99
+ host?: HTMLElement;
100
+ existing?: {
101
+ src?: string;
102
+ alt?: string | null;
103
+ title?: string | null;
104
+ className?: string | null;
105
+ align?: 'left' | 'right' | 'center' | null;
106
+ caption?: string | null;
107
+ };
50
108
  }
51
- /**
52
- * Ask for an image.
53
- *
54
- * The alternative text is asked for in the same dialog as the file, and this is
55
- * the reason the upload happens on submit rather than on selection: one dialog
56
- * means one decision point, and there is no path through it that inserts an
57
- * image nobody described. A drop that uploaded immediately and asked afterwards
58
- * would leave an undescribed image in the document every time somebody cancelled
59
- * -- and OpenLeaf has no image-editing dialog yet, so "afterwards" would mean
60
- * never.
61
- */
62
109
  export declare function promptForImage(doc: Document, options?: ImagePromptOptions): Promise<ImageResult | null>;
63
110
  //# sourceMappingURL=dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE7E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AA8TD,wBAAsB,aAAa,CACjC,GAAG,EAAE,QAAQ,EACb,QAAQ,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAuC5B;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACpD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,QAAQ,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgF7B"}
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}
package/dist/dialog.js CHANGED
@@ -21,6 +21,7 @@
21
21
  */
22
22
  import { ensureStyles } from './styles.js';
23
23
  import { IMAGE_ACCEPT, dimension } from './upload.js';
24
+ import { filePickerFor, listedImageClasses, listedImages, listedLinks, } from './pickers.js';
24
25
  const DIALOG_CSS = `
25
26
  .ol-dialog {
26
27
  box-sizing: border-box;
@@ -38,13 +39,15 @@ const DIALOG_CSS = `
38
39
  .ol-dialog h2 { margin: 0; font-size: 1.1em; }
39
40
  .ol-dialog label { display: grid; gap: 4px; font-weight: 500; }
40
41
  .ol-dialog .ol-hint { font-weight: 400; font-size: .9em; opacity: .75; }
41
- .ol-dialog input[type="text"], .ol-dialog input[type="url"], .ol-dialog input[type="file"] {
42
+ .ol-dialog input[type="text"], .ol-dialog input[type="url"], .ol-dialog input[type="file"],
43
+ .ol-dialog input[type="color"], .ol-dialog input[type="number"], .ol-dialog select {
42
44
  box-sizing: border-box; width: 100%; padding: 6px 8px;
43
45
  border: 1px solid var(--openleaf-color-border, #d1d9e0);
44
46
  border-radius: var(--openleaf-radius, 4px);
45
47
  background: var(--openleaf-color-surface, #fff);
46
48
  color: inherit; font: inherit;
47
49
  }
50
+ .ol-dialog input[type="color"] { height: 2.25rem; padding: 2px; }
48
51
  .ol-dialog .ol-check { display: flex; align-items: center; gap: 8px; font-weight: 400; }
49
52
  .ol-dialog .ol-check input { margin: 0; }
50
53
  .ol-dialog .ol-actions { display: flex; justify-content: flex-end; gap: 8px; }
@@ -68,7 +71,7 @@ const DIALOG_CSS = `
68
71
  .ol-dialog .ol-progress { font-size: .9em; opacity: .8; min-height: 1.2em; }
69
72
  `;
70
73
  let dialogStylesReady = false;
71
- function ensureDialogStyles(doc) {
74
+ export function ensureDialogStyles(doc) {
72
75
  ensureStyles(doc);
73
76
  if (dialogStylesReady)
74
77
  return;
@@ -129,24 +132,75 @@ function showForm(doc, title, fields, options = {}, commit = () => ({ error: 'Th
129
132
  hint.textContent = field.hint;
130
133
  label.appendChild(hint);
131
134
  }
132
- const input = doc.createElement('input');
133
- input.type = field.type ?? 'text';
134
- input.name = field.name;
135
- if (field.type === 'file') {
136
- if (field.accept)
137
- input.accept = field.accept;
135
+ let control;
136
+ if (field.options) {
137
+ const select = doc.createElement('select');
138
+ select.name = field.name;
139
+ for (const option of field.options) {
140
+ const item = doc.createElement('option');
141
+ item.value = option.value;
142
+ item.textContent = option.label;
143
+ if (option.value === (field.value ?? ''))
144
+ item.selected = true;
145
+ select.appendChild(item);
146
+ }
147
+ control = select;
138
148
  }
139
149
  else {
140
- input.value = field.value ?? '';
150
+ const input = doc.createElement('input');
151
+ input.type = field.type ?? 'text';
152
+ input.name = field.name;
153
+ if (field.type === 'file') {
154
+ if (field.accept)
155
+ input.accept = field.accept;
156
+ }
157
+ else {
158
+ input.value = field.value ?? '';
159
+ }
160
+ control = input;
141
161
  }
142
162
  // `required` is deliberately not set on the element. The browser's own
143
163
  // validation bubble cannot be read by a screen reader in every engine and
144
164
  // cannot express "one of these two fields"; the commit step reports into a
145
165
  // live region instead.
146
- label.appendChild(input);
147
- inputs.set(field.name, input);
166
+ label.appendChild(control);
167
+ inputs.set(field.name, control);
148
168
  form.appendChild(label);
149
169
  }
170
+ // Wired after the loop, so a chooser can fill a field declared after it.
171
+ for (const field of fields) {
172
+ if (!field.fills)
173
+ continue;
174
+ const source = inputs.get(field.name);
175
+ const target = inputs.get(field.fills);
176
+ if (!source || !target)
177
+ continue;
178
+ source.addEventListener('change', () => {
179
+ if (source.value !== '')
180
+ target.value = source.value;
181
+ });
182
+ }
183
+ if (options.browse) {
184
+ const browse = doc.createElement('button');
185
+ browse.type = 'button';
186
+ browse.textContent = options.browse.label;
187
+ browse.addEventListener('click', () => {
188
+ void options.browse?.fill().then((filled) => {
189
+ if (!filled)
190
+ return;
191
+ for (const [name, value] of Object.entries(filled)) {
192
+ const control = inputs.get(name);
193
+ if (control && control instanceof HTMLInputElement && control.type !== 'file') {
194
+ control.value = value;
195
+ }
196
+ else if (control) {
197
+ control.value = value;
198
+ }
199
+ }
200
+ });
201
+ });
202
+ form.appendChild(browse);
203
+ }
150
204
  let checkbox = null;
151
205
  if (options.extraCheckbox) {
152
206
  const wrap = doc.createElement('label');
@@ -231,7 +285,7 @@ function showForm(doc, title, fields, options = {}, commit = () => ({ error: 'Th
231
285
  const values = {};
232
286
  const files = {};
233
287
  for (const [name, input] of inputs) {
234
- if (input.type === 'file')
288
+ if (input instanceof HTMLInputElement && input.type === 'file')
235
289
  files[name] = input.files?.[0];
236
290
  else
237
291
  values[name] = input.value.trim();
@@ -279,7 +333,7 @@ function showForm(doc, title, fields, options = {}, commit = () => ({ error: 'Th
279
333
  dialog.showModal();
280
334
  focusFirst();
281
335
  const first = fields[0] ? inputs.get(fields[0].name) : undefined;
282
- if (first && first.type !== 'file')
336
+ if (first instanceof HTMLInputElement && first.type !== 'file')
283
337
  first.select();
284
338
  });
285
339
  }
@@ -294,8 +348,27 @@ function hash(value) {
294
348
  out = (out * 31 + value.charCodeAt(i)) | 0;
295
349
  return out;
296
350
  }
297
- export async function promptForLink(doc, existing) {
298
- return showForm(doc, existing?.href ? 'Edit link' : 'Insert link', [
351
+ /**
352
+ * A generic modal form, used by table property dialogs and anything else that
353
+ * is a handful of labelled fields rather than a specialised prompt.
354
+ */
355
+ export function promptFields(doc, title, fields, options, commit) {
356
+ return showForm(doc, title, fields, options, commit);
357
+ }
358
+ export async function promptForLink(doc, existing, host) {
359
+ const listed = listedLinks();
360
+ const picker = host ? filePickerFor(host) : null;
361
+ const fields = [
362
+ ...(listed.length > 0
363
+ ? [
364
+ {
365
+ name: 'listed',
366
+ label: 'Choose a page',
367
+ options: [{ value: '', label: 'Type an address instead' }, ...listed.map((item) => ({ value: item.value, label: item.title }))],
368
+ fills: 'href',
369
+ },
370
+ ]
371
+ : []),
299
372
  {
300
373
  name: 'href',
301
374
  label: 'Address',
@@ -304,7 +377,15 @@ export async function promptForLink(doc, existing) {
304
377
  required: true,
305
378
  hint: 'For example https://example.org, /about, or mailto:someone@example.org',
306
379
  },
307
- ], {
380
+ {
381
+ name: 'title',
382
+ label: 'Title',
383
+ type: 'text',
384
+ value: existing?.title ?? '',
385
+ hint: 'Shown as a tooltip. Optional.',
386
+ },
387
+ ];
388
+ return showForm(doc, existing?.href ? 'Edit link' : 'Insert link', fields, {
308
389
  extraCheckbox: {
309
390
  name: 'newWindow',
310
391
  label: 'Open in a new window',
@@ -312,44 +393,95 @@ export async function promptForLink(doc, existing) {
312
393
  hint: 'Opening in a new window without warning can disorient people using ' +
313
394
  'screen readers or magnification. Leave this off unless you have a reason.',
314
395
  },
396
+ ...(picker && host
397
+ ? {
398
+ browse: {
399
+ label: 'Browse files',
400
+ fill: async () => {
401
+ const picked = await picker({ kind: 'file', host });
402
+ if (!picked)
403
+ return null;
404
+ return { href: picked.url, title: picked.title ?? '' };
405
+ },
406
+ },
407
+ }
408
+ : {}),
315
409
  }, (values) => {
316
- const href = values['href'] ?? '';
410
+ // The address field alone: choosing from the list writes into it, so there
411
+ // is no second place a destination can hide.
412
+ const href = values['href'] || '';
317
413
  if (!href)
318
414
  return { error: 'Enter an address for the link.' };
319
415
  const newWindow = values['newWindow'] === 'on';
320
416
  return {
321
417
  value: {
322
418
  href,
419
+ title: values['title'] || null,
323
420
  target: newWindow ? '_blank' : null,
324
- // rel="noopener" is not optional with target=_blank: without it the
325
- // opened page gets a handle on this window.
326
421
  rel: newWindow ? 'noopener noreferrer' : null,
327
422
  },
328
423
  };
329
424
  });
330
425
  }
331
- /**
332
- * Ask for an image.
333
- *
334
- * The alternative text is asked for in the same dialog as the file, and this is
335
- * the reason the upload happens on submit rather than on selection: one dialog
336
- * means one decision point, and there is no path through it that inserts an
337
- * image nobody described. A drop that uploaded immediately and asked afterwards
338
- * would leave an undescribed image in the document every time somebody cancelled
339
- * -- and OpenLeaf has no image-editing dialog yet, so "afterwards" would mean
340
- * never.
341
- */
342
426
  export async function promptForImage(doc, options = {}) {
343
- const { file, upload } = options;
427
+ const { file, upload, host, existing } = options;
428
+ const listed = listedImages();
429
+ const classes = listedImageClasses();
430
+ const picker = host ? filePickerFor(host) : null;
344
431
  const describe = {
345
432
  name: 'alt',
346
433
  label: 'Alternative text',
347
434
  type: 'text',
435
+ value: existing?.alt ?? '',
348
436
  hint: 'Describe what the image shows, for people who cannot see it.',
349
437
  };
438
+ const extras = [
439
+ {
440
+ name: 'title',
441
+ label: 'Title',
442
+ type: 'text',
443
+ value: existing?.title ?? '',
444
+ hint: 'Shown as a tooltip. Optional.',
445
+ },
446
+ {
447
+ name: 'align',
448
+ label: 'Alignment',
449
+ options: [
450
+ { value: '', label: 'None' },
451
+ { value: 'left', label: 'Float left' },
452
+ { value: 'center', label: 'Centre' },
453
+ { value: 'right', label: 'Float right' },
454
+ ],
455
+ value: existing?.align ?? '',
456
+ },
457
+ {
458
+ name: 'className',
459
+ label: 'CSS classes',
460
+ type: 'text',
461
+ value: existing?.className ?? '',
462
+ hint: classes.length > 0 ? `Suggested: ${classes.join(', ')}` : 'Optional class names, separated by spaces.',
463
+ },
464
+ {
465
+ name: 'caption',
466
+ label: 'Caption',
467
+ type: 'text',
468
+ value: existing?.caption ?? '',
469
+ hint: 'Wraps the image in a figure. Leave blank for no caption.',
470
+ },
471
+ ];
350
472
  const fields = file
351
- ? [describe]
473
+ ? [describe, ...extras]
352
474
  : [
475
+ ...(listed.length > 0
476
+ ? [
477
+ {
478
+ name: 'listed',
479
+ label: 'Choose an image',
480
+ options: [{ value: '', label: 'Type an address instead' }, ...listed.map((item) => ({ value: item.value, label: item.title }))],
481
+ fills: 'src',
482
+ },
483
+ ]
484
+ : []),
353
485
  ...(upload
354
486
  ? [
355
487
  {
@@ -365,44 +497,59 @@ export async function promptForImage(doc, options = {}) {
365
497
  name: 'src',
366
498
  label: upload ? 'Or paste an image address' : 'Image address',
367
499
  type: 'text',
500
+ value: existing?.src ?? '',
368
501
  required: !upload,
369
502
  },
370
503
  describe,
504
+ ...extras,
371
505
  ];
372
- const decorative = {
373
- name: 'decorative',
374
- label: 'This image is decorative and needs no description',
375
- };
506
+ const finish = (src, alt, width, height, values) => ({
507
+ src,
508
+ alt,
509
+ title: values['title'] || null,
510
+ width,
511
+ height,
512
+ className: values['className'] || null,
513
+ align: values['align'] === 'left' || values['align'] === 'right' || values['align'] === 'center'
514
+ ? values['align']
515
+ : null,
516
+ caption: values['caption'] ? values['caption'] : null,
517
+ });
376
518
  return showForm(doc, file ? 'Describe this image' : 'Insert image', fields, {
377
- extraCheckbox: decorative,
519
+ extraCheckbox: {
520
+ name: 'decorative',
521
+ label: 'This image is decorative and needs no description',
522
+ },
378
523
  ...(file ? { note: `Ready to upload: ${file.name}` } : {}),
379
524
  busyLabel: 'Uploading…',
525
+ ...(picker && host
526
+ ? {
527
+ browse: {
528
+ label: 'Browse files',
529
+ fill: async () => {
530
+ const picked = await picker({ kind: 'image', host });
531
+ if (!picked)
532
+ return null;
533
+ return { src: picked.url, alt: picked.alt ?? '', title: picked.title ?? '' };
534
+ },
535
+ },
536
+ }
537
+ : {}),
380
538
  }, (values, files) => {
381
539
  const chosen = file ?? files['file'];
382
- const src = values['src'] ?? '';
540
+ const src = values['src'] || '';
383
541
  if (!chosen && !src) {
384
542
  return { error: upload ? 'Choose a file or enter an image address.' : 'Enter an image address.' };
385
543
  }
386
- // Required unless explicitly marked decorative. The checkbox exists so
387
- // that the honest answer "this needs no description" is easier than
388
- // typing "image" to defeat a validator -- which is what a hard
389
- // requirement actually teaches people to do.
390
544
  if (!values['alt'] && values['decorative'] !== 'on') {
391
545
  return { error: 'Add alternative text, or tick the decorative box.' };
392
546
  }
393
547
  const alt = values['decorative'] === 'on' ? '' : (values['alt'] ?? '');
394
548
  if (!chosen || !upload) {
395
- return { value: { src, alt, width: null, height: null } };
549
+ return { value: finish(src, alt, null, null, values) };
396
550
  }
397
551
  return upload(chosen).then((result) => ({
398
- value: {
399
- src: result.src,
400
- // An uploader's description only pre-fills; what the author confirmed
401
- // in the dialog is what gets stored.
402
- alt,
403
- width: dimension(result.width),
404
- height: dimension(result.height),
405
- },
552
+ value: finish(result.src, alt, dimension(result.width), dimension(result.height), values),
406
553
  }));
407
554
  });
408
555
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}