@openleaf-editor/ui 0.1.0-beta.1 → 0.1.0-beta.3
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.
- package/README.md +85 -0
- package/dist/block-type.d.ts +5 -0
- package/dist/block-type.d.ts.map +1 -0
- package/dist/block-type.js +133 -0
- package/dist/block-type.js.map +1 -0
- package/dist/content-css.d.ts +31 -0
- package/dist/content-css.d.ts.map +1 -0
- package/dist/content-css.js +272 -0
- package/dist/content-css.js.map +1 -0
- package/dist/css.d.ts +23 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +813 -0
- package/dist/css.js.map +1 -0
- package/dist/dialog.d.ts +158 -18
- package/dist/dialog.d.ts.map +1 -1
- package/dist/dialog.js +605 -130
- package/dist/dialog.js.map +1 -1
- package/dist/floating.d.ts +29 -0
- package/dist/floating.d.ts.map +1 -0
- package/dist/floating.js +130 -0
- package/dist/floating.js.map +1 -0
- package/dist/help.d.ts +9 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +97 -0
- package/dist/help.js.map +1 -0
- package/dist/i18n.d.ts +39 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +114 -0
- package/dist/i18n.js.map +1 -0
- package/dist/icons.d.ts +7 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +10 -2
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/items.d.ts +2 -1
- package/dist/items.d.ts.map +1 -1
- package/dist/items.js +263 -17
- package/dist/items.js.map +1 -1
- package/dist/live.d.ts +42 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +83 -0
- package/dist/live.js.map +1 -0
- package/dist/menu.d.ts +85 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +500 -0
- package/dist/menu.js.map +1 -0
- package/dist/openleaf.css +325 -7
- package/dist/overflow.d.ts +44 -0
- package/dist/overflow.d.ts.map +1 -0
- package/dist/overflow.js +323 -0
- package/dist/overflow.js.map +1 -0
- package/dist/pickers.d.ts +43 -0
- package/dist/pickers.d.ts.map +1 -0
- package/dist/pickers.js +52 -0
- package/dist/pickers.js.map +1 -0
- package/dist/registry.d.ts +72 -18
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -6
- package/dist/registry.js.map +1 -1
- package/dist/skins.d.ts.map +1 -1
- package/dist/skins.js +48 -14
- package/dist/skins.js.map +1 -1
- package/dist/styles.d.ts +61 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +77 -421
- package/dist/styles.js.map +1 -1
- package/dist/testing.d.ts +3 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +3 -0
- package/dist/testing.js.map +1 -0
- package/dist/toolbar.d.ts +91 -12
- package/dist/toolbar.d.ts.map +1 -1
- package/dist/toolbar.js +459 -127
- package/dist/toolbar.js.map +1 -1
- package/dist/upload.d.ts +11 -0
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +15 -1
- package/dist/upload.js.map +1 -1
- package/package.json +17 -3
package/dist/css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,MAAM,WAAW,GAAG;;;;;;;;;;;CAWnB,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mEAiDgD,WAAW;;;0DAGpB,WAAW;;qCAEhC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkpB/C,CAAA"}
|
package/dist/dialog.d.ts
CHANGED
|
@@ -22,42 +22,182 @@
|
|
|
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;
|
|
28
|
+
id: string | null;
|
|
27
29
|
}
|
|
28
30
|
export interface ImageResult {
|
|
29
31
|
src: string;
|
|
30
32
|
/** `''` means explicitly decorative. `null` is never returned. */
|
|
31
33
|
alt: string;
|
|
34
|
+
title: string | null;
|
|
32
35
|
/** Intrinsic size, when an uploader reported one. */
|
|
33
36
|
width: string | null;
|
|
34
37
|
height: string | null;
|
|
38
|
+
className: string | null;
|
|
39
|
+
align: 'left' | 'right' | 'center' | null;
|
|
40
|
+
caption: string | null;
|
|
35
41
|
}
|
|
42
|
+
export interface FieldOption {
|
|
43
|
+
value: string;
|
|
44
|
+
label: string;
|
|
45
|
+
}
|
|
46
|
+
export interface FieldSpec {
|
|
47
|
+
name: string;
|
|
48
|
+
label: string;
|
|
49
|
+
type?: string;
|
|
50
|
+
value?: string;
|
|
51
|
+
required?: boolean;
|
|
52
|
+
hint?: string;
|
|
53
|
+
/** For `type: 'file'`: the accept list. */
|
|
54
|
+
accept?: string;
|
|
55
|
+
/** When set, the field is a `<select>` rather than an input. */
|
|
56
|
+
options?: readonly FieldOption[];
|
|
57
|
+
/**
|
|
58
|
+
* The field this control writes into when it changes.
|
|
59
|
+
*
|
|
60
|
+
* A chooser that only *contributed* its value could never change a field that
|
|
61
|
+
* was already filled in: editing a link or an image prefills the address, so
|
|
62
|
+
* picking from the list lost to it every time and the list worked only for new
|
|
63
|
+
* insertions. Writing into the field it fills keeps one source of truth, and
|
|
64
|
+
* shows the author what they picked so they can still edit it.
|
|
65
|
+
*/
|
|
66
|
+
fills?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A commit failure.
|
|
70
|
+
*
|
|
71
|
+
* `field` names the control the message is about, when there is one. Without it
|
|
72
|
+
* a failed submit could only mark the FIRST field invalid and focus it, which is
|
|
73
|
+
* a guess -- and a wrong `aria-invalid` is worse for a screen reader user than
|
|
74
|
+
* none, because it sends them to correct a field that was already right.
|
|
75
|
+
*/
|
|
76
|
+
export interface CommitError {
|
|
77
|
+
error: string;
|
|
78
|
+
field?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Install the dialog sheet.
|
|
82
|
+
*
|
|
83
|
+
* Delegates to `registerStyles` rather than repeating the constructable-sheet
|
|
84
|
+
* dance, which also removes this file's `<style>`-element fallback. That
|
|
85
|
+
* fallback contradicted the invariant argued at the top of `styles.ts`: a
|
|
86
|
+
* `<style>` element is blocked by exactly the `style-src 'self'` policies that
|
|
87
|
+
* would need it, and it fails silently. `registerStyles` warns instead, once,
|
|
88
|
+
* naming the stylesheet to link.
|
|
89
|
+
*
|
|
90
|
+
* It also deduplicates per *document* by the CSS text, where the flag this used
|
|
91
|
+
* to keep was module-global -- so a second document (an iframe, a print view)
|
|
92
|
+
* previously got the dialog markup with none of its styles.
|
|
93
|
+
*/
|
|
94
|
+
export declare function ensureDialogStyles(doc: Document): void;
|
|
95
|
+
export interface PromptFormOptions {
|
|
96
|
+
extraCheckbox?: {
|
|
97
|
+
name: string;
|
|
98
|
+
label: string;
|
|
99
|
+
hint?: string;
|
|
100
|
+
checked?: boolean;
|
|
101
|
+
};
|
|
102
|
+
note?: string;
|
|
103
|
+
busyLabel?: string;
|
|
104
|
+
/** The editor's own `lang`, so two editors on a page do not share a language. */
|
|
105
|
+
locale?: string | null;
|
|
106
|
+
/**
|
|
107
|
+
* The editor the dialog belongs to. Pass it: the dialog is mounted inside
|
|
108
|
+
* this element so the skin's tokens reach it, and without it the dialog is
|
|
109
|
+
* painted in the default light palette whatever the editor looks like.
|
|
110
|
+
*/
|
|
111
|
+
host?: HTMLElement;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A generic modal form, used by table property dialogs and anything else that
|
|
115
|
+
* is a handful of labelled fields rather than a specialised prompt.
|
|
116
|
+
*/
|
|
117
|
+
export declare function promptFields<T>(doc: Document, title: string, fields: FieldSpec[], options: PromptFormOptions, commit: (values: Record<string, string>, files: Record<string, File | undefined>) => Promise<{
|
|
118
|
+
value: T;
|
|
119
|
+
} | {
|
|
120
|
+
error: string;
|
|
121
|
+
}> | {
|
|
122
|
+
value: T;
|
|
123
|
+
} | {
|
|
124
|
+
error: string;
|
|
125
|
+
}): Promise<T | null>;
|
|
36
126
|
export declare function promptForLink(doc: Document, existing?: {
|
|
37
127
|
href?: string;
|
|
128
|
+
title?: string | null;
|
|
38
129
|
target?: string | null;
|
|
39
|
-
|
|
130
|
+
rel?: string | null;
|
|
131
|
+
id?: string | null;
|
|
132
|
+
}, host?: HTMLElement): Promise<LinkResult | null>;
|
|
40
133
|
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
134
|
file?: File;
|
|
48
|
-
/** Uploads a file and reports where it landed. Absent means URL-only. */
|
|
49
135
|
upload?: (file: File) => Promise<ImageUploadResult>;
|
|
136
|
+
host?: HTMLElement;
|
|
137
|
+
existing?: {
|
|
138
|
+
src?: string;
|
|
139
|
+
alt?: string | null;
|
|
140
|
+
title?: string | null;
|
|
141
|
+
className?: string | null;
|
|
142
|
+
align?: 'left' | 'right' | 'center' | null;
|
|
143
|
+
caption?: string | null;
|
|
144
|
+
width?: string | null;
|
|
145
|
+
height?: string | null;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export declare function promptForImage(doc: Document, options?: ImagePromptOptions): Promise<ImageResult | null>;
|
|
149
|
+
/** One alternative address the author gave the player. */
|
|
150
|
+
export interface MediaSourceResult {
|
|
151
|
+
src: string;
|
|
152
|
+
type: string | null;
|
|
153
|
+
}
|
|
154
|
+
export interface MediaResult {
|
|
155
|
+
/** Empty when the player carries all its addresses in `sources`. */
|
|
156
|
+
src: string;
|
|
157
|
+
title: string | null;
|
|
158
|
+
poster: string | null;
|
|
159
|
+
width: string | null;
|
|
160
|
+
height: string | null;
|
|
161
|
+
sources: MediaSourceResult[];
|
|
162
|
+
}
|
|
163
|
+
export interface MediaPromptOptions {
|
|
164
|
+
host?: HTMLElement;
|
|
165
|
+
/** Prefilled state, when editing a player already in the document. */
|
|
166
|
+
existing?: {
|
|
167
|
+
/**
|
|
168
|
+
* What the selected node is. An `<iframe>` accepts only the addresses the
|
|
169
|
+
* embed allowlist permits, and the form has to say so itself: the update
|
|
170
|
+
* command declines anything else, and by then this dialog has closed, so a
|
|
171
|
+
* rejected address looked like a save that did nothing.
|
|
172
|
+
*/
|
|
173
|
+
kind?: 'video' | 'audio' | 'iframe';
|
|
174
|
+
src?: string | null;
|
|
175
|
+
title?: string | null;
|
|
176
|
+
poster?: string | null;
|
|
177
|
+
width?: string | null;
|
|
178
|
+
height?: string | null;
|
|
179
|
+
sources?: readonly MediaSourceResult[];
|
|
180
|
+
};
|
|
50
181
|
}
|
|
51
182
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* never
|
|
183
|
+
* The insert-media dialog.
|
|
184
|
+
*
|
|
185
|
+
* Two spare alternative-source rows, because that is the shape the format is
|
|
186
|
+
* actually used in: a `<video>` with a `.webm` and an `.mp4` covers every
|
|
187
|
+
* current browser, and offering a single alternative makes the common case the
|
|
188
|
+
* one the author has to work around. Not a growable list with add and remove
|
|
189
|
+
* controls, which would owe keyboard semantics and a reordering story.
|
|
190
|
+
*
|
|
191
|
+
* But the rows are spare capacity *on top of* what the player already has, never
|
|
192
|
+
* a cap on it. A fixed two rows silently deleted the third and later encodings
|
|
193
|
+
* of any player that had them, on a save the author made to change the title --
|
|
194
|
+
* because what this form returns is what replaces the stored sources. Every
|
|
195
|
+
* existing source gets a row, so the form cannot lose one it was never shown.
|
|
196
|
+
*
|
|
197
|
+
* The type hints are separate fields rather than guessed from the extension. A
|
|
198
|
+
* guess is wrong for exactly the addresses that need it -- a signed URL, or a
|
|
199
|
+
* stream with no extension at all -- and being wrong here means the browser
|
|
200
|
+
* downloads a format it cannot play before finding out.
|
|
61
201
|
*/
|
|
62
|
-
export declare function
|
|
202
|
+
export declare function promptForMedia(doc: Document, options?: MediaPromptOptions): Promise<MediaResult | null>;
|
|
63
203
|
//# sourceMappingURL=dialog.d.ts.map
|
package/dist/dialog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"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"}
|