@docmentis/udoc-editor 0.8.15 → 0.8.16
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/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +51 -9
- package/dist/commands.js.map +1 -1
- package/dist/components/PageControls.d.ts +13 -6
- package/dist/components/PageControls.d.ts.map +1 -1
- package/dist/components/PageControls.js +42 -33
- package/dist/components/PageControls.js.map +1 -1
- package/dist/components/PageSettingsModal.d.ts +0 -2
- package/dist/components/PageSettingsModal.d.ts.map +1 -1
- package/dist/components/PageSettingsModal.js +54 -56
- package/dist/components/PageSettingsModal.js.map +1 -1
- package/dist/components/{NewSlideModal.d.ts → SlideLayoutModal.d.ts} +15 -11
- package/dist/components/SlideLayoutModal.d.ts.map +1 -0
- package/dist/components/{NewSlideModal.js → SlideLayoutModal.js} +34 -18
- package/dist/components/SlideLayoutModal.js.map +1 -0
- package/dist/docmentis-theme.d.ts +4 -0
- package/dist/docmentis-theme.d.ts.map +1 -0
- package/dist/docmentis-theme.js +6 -0
- package/dist/docmentis-theme.js.map +1 -0
- package/dist/edit-client.d.ts +9 -1
- package/dist/edit-client.d.ts.map +1 -1
- package/dist/edit-client.js +10 -0
- package/dist/edit-client.js.map +1 -1
- package/dist/edit-command.d.ts +3 -1
- package/dist/edit-command.d.ts.map +1 -1
- package/dist/edit-command.js +7 -0
- package/dist/edit-command.js.map +1 -1
- package/dist/edit-mode.d.ts.map +1 -1
- package/dist/edit-mode.js +22 -10
- package/dist/edit-mode.js.map +1 -1
- package/dist/editor.d.ts +7 -6
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +6 -5
- package/dist/editor.js.map +1 -1
- package/dist/i18n/ar.js +10 -10
- package/dist/i18n/ar.js.map +1 -1
- package/dist/i18n/de.js +10 -10
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.js +10 -10
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.js +10 -10
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.js +10 -10
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/ja.js +10 -10
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ko.js +10 -10
- package/dist/i18n/ko.js.map +1 -1
- package/dist/i18n/messages.d.ts +18 -18
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/pt-BR.js +10 -10
- package/dist/i18n/pt-BR.js.map +1 -1
- package/dist/i18n/ru.js +10 -10
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/zh-CN.js +10 -10
- package/dist/i18n/zh-CN.js.map +1 -1
- package/dist/i18n/zh-TW.js +10 -10
- package/dist/i18n/zh-TW.js.map +1 -1
- package/dist/icons.d.ts +24 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +24 -0
- package/dist/icons.js.map +1 -1
- package/dist/image.d.ts +11 -7
- package/dist/image.d.ts.map +1 -1
- package/dist/image.js +44 -7
- package/dist/image.js.map +1 -1
- package/dist/insert.d.ts +24 -12
- package/dist/insert.d.ts.map +1 -1
- package/dist/insert.js +306 -51
- package/dist/insert.js.map +1 -1
- package/dist/line-edit.d.ts +30 -0
- package/dist/line-edit.d.ts.map +1 -0
- package/dist/line-edit.js +87 -0
- package/dist/line-edit.js.map +1 -0
- package/dist/markup.d.ts +25 -5
- package/dist/markup.d.ts.map +1 -1
- package/dist/markup.js +73 -15
- package/dist/markup.js.map +1 -1
- package/dist/opacity.d.ts +19 -0
- package/dist/opacity.d.ts.map +1 -0
- package/dist/opacity.js +45 -0
- package/dist/opacity.js.map +1 -0
- package/dist/page-commands.d.ts +16 -0
- package/dist/page-commands.d.ts.map +1 -0
- package/dist/page-commands.js +122 -0
- package/dist/page-commands.js.map +1 -0
- package/dist/page-controls.d.ts +27 -1
- package/dist/page-controls.d.ts.map +1 -1
- package/dist/page-controls.js +30 -14
- package/dist/page-controls.js.map +1 -1
- package/dist/paint.d.ts +59 -12
- package/dist/paint.d.ts.map +1 -1
- package/dist/paint.js +225 -104
- package/dist/paint.js.map +1 -1
- package/dist/ruler-controls.d.ts +6 -0
- package/dist/ruler-controls.d.ts.map +1 -1
- package/dist/ruler-controls.js +18 -3
- package/dist/ruler-controls.js.map +1 -1
- package/dist/ruler-edits.d.ts +2 -5
- package/dist/ruler-edits.d.ts.map +1 -1
- package/dist/ruler-edits.js +13 -20
- package/dist/ruler-edits.js.map +1 -1
- package/dist/ruler.d.ts +7 -1
- package/dist/ruler.d.ts.map +1 -1
- package/dist/ruler.js +41 -11
- package/dist/ruler.js.map +1 -1
- package/dist/shape-gallery.d.ts +9 -4
- package/dist/shape-gallery.d.ts.map +1 -1
- package/dist/shape-gallery.js +9 -16
- package/dist/shape-gallery.js.map +1 -1
- package/dist/slide-commands.d.ts +38 -0
- package/dist/slide-commands.d.ts.map +1 -0
- package/dist/slide-commands.js +191 -0
- package/dist/slide-commands.js.map +1 -0
- package/dist/slide-shape.d.ts +24 -3
- package/dist/slide-shape.d.ts.map +1 -1
- package/dist/slide-shape.js +65 -10
- package/dist/slide-shape.js.map +1 -1
- package/dist/state.d.ts +12 -5
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +1 -0
- package/dist/state.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +108 -63
- package/dist/styles.js.map +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.d.ts.map +1 -1
- package/dist/tabs.js +99 -40
- package/dist/tabs.js.map +1 -1
- package/dist/text-format.d.ts.map +1 -1
- package/dist/text-format.js +2 -2
- package/dist/text-format.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/handlers.d.ts.map +1 -1
- package/dist/worker/handlers.js +6 -0
- package/dist/worker/handlers.js.map +1 -1
- package/dist/worker/protocol.d.ts +13 -2
- package/dist/worker/protocol.d.ts.map +1 -1
- package/dist/worker/worker-source.js +1 -1
- package/package.json +3 -3
- package/dist/components/NewSlideModal.d.ts.map +0 -1
- package/dist/components/NewSlideModal.js.map +0 -1
- package/dist/new-slide.d.ts +0 -20
- package/dist/new-slide.d.ts.map +0 -1
- package/dist/new-slide.js +0 -90
- package/dist/new-slide.js.map +0 -1
package/dist/insert.js
CHANGED
|
@@ -1,24 +1,38 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
// and over an image's pages
|
|
4
|
-
//
|
|
5
|
-
|
|
1
|
+
// What goes on a page or a slide, placed by a pointer gesture the canvas carries
|
|
2
|
+
// out: Shapes — a PDF's four as page objects, from its Page tab, the gallery's on
|
|
3
|
+
// a deck's slides, from its Slide tab, and over an image's pages, from its Image
|
|
4
|
+
// tab — and Text Box on those and a PDF's page, a page object there; and Image on a
|
|
5
|
+
// slide deck or a PDF's page, asked for and inserted at once. A shape paints with
|
|
6
|
+
// what was last specified (`PaintMemory`), else its document's default: a deck's
|
|
7
|
+
// theme, or docMentis's colors on a PDF or an image.
|
|
8
|
+
import { ICON_SUBTOOL_ARROW, ICON_SUBTOOL_ELLIPSE, ICON_SUBTOOL_LINE, ICON_SUBTOOL_RECTANGLE, ICON_SUBTOOL_TEXTBOX, SHAPE_STROKE_WIDTH, segmentsFor, } from "@docmentis/udoc-ui/internal";
|
|
9
|
+
import { DOCMENTIS_FILL, DOCMENTIS_LINE } from "./docmentis-theme.js";
|
|
6
10
|
import { EditCommand } from "./edit-command.js";
|
|
7
11
|
import { ICON_IMAGE, ICON_SHAPES } from "./icons.js";
|
|
8
|
-
import { placeMarkup } from "./image.js";
|
|
9
|
-
import { galleryShape, SHAPE_GALLERY } from "./shape-gallery.js";
|
|
10
|
-
import {
|
|
12
|
+
import { markupPreview, placeMarkup, placeMarkupTextBox } from "./image.js";
|
|
13
|
+
import { galleryShape, PREVIEW_NODE_ID, PREVIEW_STORY_ID, SHAPE_GALLERY } from "./shape-gallery.js";
|
|
14
|
+
import { specifiedPaint, specifiedPortablePaint } from "./paint.js";
|
|
15
|
+
import { slideShape, slideShapeColors, slideTextBox } from "./slide-shape.js";
|
|
11
16
|
import { editStateOf } from "./state.js";
|
|
12
17
|
/** A large insert index that clamps to "on top" in the engine. */
|
|
13
18
|
const APPEND_INDEX = 0x7fff_ffff;
|
|
14
|
-
/**
|
|
15
|
-
const FILL = { components: [0.26, 0.55, 0.96], colorSpace: "srgb" };
|
|
16
|
-
/** A placed shape's fill opacity. */
|
|
17
|
-
const FILL_ALPHA = 0.18;
|
|
18
|
-
/** The shapes the Insert tab places on a PDF, as the shell carries their place
|
|
19
|
-
* tools. */
|
|
19
|
+
/** The shapes a PDF's Page tab places, as the shell carries their place tools. */
|
|
20
20
|
const PORTABLE_SHAPES = new Set(["rectangle", "ellipse", "line", "arrow"]);
|
|
21
|
-
/**
|
|
21
|
+
/** The tool Text Box arms, on a slide, an image or a PDF's page. */
|
|
22
|
+
const TEXT_BOX_TOOL = "textBox";
|
|
23
|
+
/** The standard font a PDF's text box is set in, and its size in points. */
|
|
24
|
+
const TEXT_BOX_FONT = "helvetica";
|
|
25
|
+
const TEXT_BOX_SIZE = 12;
|
|
26
|
+
/**
|
|
27
|
+
* What a text box holds until it is typed over, selected so the first key
|
|
28
|
+
* replaces it. One left untyped should still show, to be found and deleted: a
|
|
29
|
+
* slide's or an image's has no fill or outline to show by, and the engine sets no
|
|
30
|
+
* caret in a PDF's text object with nothing in it. ASCII, which the standard font's encoding
|
|
31
|
+
* holds byte for byte; the same in every language, as that font has no glyphs for
|
|
32
|
+
* most others.
|
|
33
|
+
*/
|
|
34
|
+
const TEXT_BOX_PLACEHOLDER = "Text";
|
|
35
|
+
/** Shapes offered by a PDF's Page tab's shape picker (`insertShape`). */
|
|
22
36
|
const SHAPE_OPTIONS = [
|
|
23
37
|
["rectangle", ICON_SUBTOOL_RECTANGLE, "shape.rectangle"],
|
|
24
38
|
["ellipse", ICON_SUBTOOL_ELLIPSE, "shape.ellipse"],
|
|
@@ -31,11 +45,14 @@ const SHAPE_OPTIONS = [
|
|
|
31
45
|
* `objects`. The object carries **no `id`** — the `InsertObjects` command mints
|
|
32
46
|
* one on insert, so the host never allocates ids. Rectangle and ellipse use the
|
|
33
47
|
* box of the two points; line and arrow run `p0 → p1`, so the direction is
|
|
34
|
-
* preserved. Filled shapes (rectangle / ellipse) get
|
|
35
|
-
*
|
|
48
|
+
* preserved. Filled shapes (rectangle / ellipse) get a fill and a stroke; open
|
|
49
|
+
* shapes (line / arrow) are stroke only. Each paints with what was last specified
|
|
50
|
+
* for it, else docMentis's colors at full opacity.
|
|
36
51
|
*/
|
|
37
|
-
function shapeObject(shape, p0, p1) {
|
|
52
|
+
function shapeObject(memory, shape, p0, p1) {
|
|
38
53
|
const filled = shape === "rectangle" || shape === "ellipse";
|
|
54
|
+
const fill = specifiedPortablePaint(memory, "fill", DOCMENTIS_FILL);
|
|
55
|
+
const stroke = specifiedPortablePaint(memory, "stroke", DOCMENTIS_LINE);
|
|
39
56
|
const object = {
|
|
40
57
|
transform: { scaleX: 1, skewY: 0, skewX: 0, scaleY: 1, translateX: 0, translateY: 0 },
|
|
41
58
|
clips: [],
|
|
@@ -44,10 +61,10 @@ function shapeObject(shape, p0, p1) {
|
|
|
44
61
|
path: {
|
|
45
62
|
path: { segments: segmentsFor(shape, p0, p1) },
|
|
46
63
|
windingRule: "nonZero",
|
|
47
|
-
nonstrokingStyle: { brush: { solid:
|
|
64
|
+
nonstrokingStyle: { brush: { solid: fill.color }, alpha: fill.alpha, overprint: false },
|
|
48
65
|
strokingStyle: {
|
|
49
|
-
brush: { solid:
|
|
50
|
-
alpha:
|
|
66
|
+
brush: { solid: stroke.color },
|
|
67
|
+
alpha: stroke.alpha,
|
|
51
68
|
overprint: false,
|
|
52
69
|
line: {
|
|
53
70
|
width: SHAPE_STROKE_WIDTH,
|
|
@@ -72,49 +89,243 @@ function shapeObject(shape, p0, p1) {
|
|
|
72
89
|
};
|
|
73
90
|
return object;
|
|
74
91
|
}
|
|
75
|
-
/**
|
|
76
|
-
|
|
92
|
+
/** What {@link shapeObject} draws from `p0` to `p1`, as the sketch layer shows it. */
|
|
93
|
+
function shapeObjectPreview(memory, shape, p0, p1) {
|
|
94
|
+
const filled = shape === "rectangle" || shape === "ellipse";
|
|
95
|
+
const fill = specifiedPortablePaint(memory, "fill", DOCMENTIS_FILL);
|
|
96
|
+
const stroke = specifiedPortablePaint(memory, "stroke", DOCMENTIS_LINE);
|
|
97
|
+
return {
|
|
98
|
+
paths: [
|
|
99
|
+
{
|
|
100
|
+
segments: segmentsFor(shape, p0, p1),
|
|
101
|
+
fill: filled ? { color: fill.color, opacity: fill.alpha } : null,
|
|
102
|
+
stroke: {
|
|
103
|
+
paint: { color: stroke.color, opacity: stroke.alpha },
|
|
104
|
+
style: {
|
|
105
|
+
width: SHAPE_STROKE_WIDTH,
|
|
106
|
+
lineCap: "butt",
|
|
107
|
+
lineJoin: "miter",
|
|
108
|
+
miterLimit: 10,
|
|
109
|
+
dashArray: null,
|
|
110
|
+
dashOffset: 0,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** A quarter turn's cosine and sine, by quarter turns clockwise. */
|
|
118
|
+
const QUARTER_TURNS = [
|
|
119
|
+
[1, 0],
|
|
120
|
+
[0, 1],
|
|
121
|
+
[-1, 0],
|
|
122
|
+
[0, -1],
|
|
123
|
+
];
|
|
124
|
+
/**
|
|
125
|
+
* The model `GraphicsObject` for a new text box: one show op of
|
|
126
|
+
* {@link TEXT_BOX_PLACEHOLDER}, its first line's baseline a font size below `at`
|
|
127
|
+
* (page-local document points), its baseline running along `(cos, sin)`. Under
|
|
128
|
+
* its minted `id`, so the placeholder can be selected straight after the insert.
|
|
129
|
+
*/
|
|
130
|
+
function textBoxObject(id, font, at, cos, sin) {
|
|
131
|
+
return {
|
|
132
|
+
id,
|
|
133
|
+
transform: { scaleX: cos, skewY: sin, skewX: -sin, scaleY: cos, translateX: at.x, translateY: at.y },
|
|
134
|
+
clips: [],
|
|
135
|
+
optionalContent: [],
|
|
136
|
+
content: {
|
|
137
|
+
text: {
|
|
138
|
+
runs: [
|
|
139
|
+
{
|
|
140
|
+
regular: {
|
|
141
|
+
textStyle: {
|
|
142
|
+
font,
|
|
143
|
+
fontSize: TEXT_BOX_SIZE,
|
|
144
|
+
charSpacing: 0,
|
|
145
|
+
wordSpacing: 0,
|
|
146
|
+
horizontalScaling: 100,
|
|
147
|
+
leading: 0,
|
|
148
|
+
rise: 0,
|
|
149
|
+
renderMode: "fill",
|
|
150
|
+
knockout: true,
|
|
151
|
+
},
|
|
152
|
+
nonstrokingStyle: {
|
|
153
|
+
brush: { solid: { components: [0], colorSpace: "deviceGray" } },
|
|
154
|
+
alpha: 1,
|
|
155
|
+
overprint: false,
|
|
156
|
+
},
|
|
157
|
+
strokingStyle: {
|
|
158
|
+
brush: { solid: { components: [0], colorSpace: "deviceGray" } },
|
|
159
|
+
alpha: 1,
|
|
160
|
+
overprint: false,
|
|
161
|
+
line: {
|
|
162
|
+
width: 1,
|
|
163
|
+
lineCap: "butt",
|
|
164
|
+
lineJoin: "miter",
|
|
165
|
+
miterLimit: 10,
|
|
166
|
+
dashArray: null,
|
|
167
|
+
dashOffset: 0,
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
renderStyle: {
|
|
171
|
+
blendMode: "normal",
|
|
172
|
+
alphaIsShape: false,
|
|
173
|
+
overprintMode: "default",
|
|
174
|
+
renderingIntent: "relativeColorimetric",
|
|
175
|
+
},
|
|
176
|
+
softMask: null,
|
|
177
|
+
chunks: [{ text: [...TEXT_BOX_PLACEHOLDER].map((char) => char.charCodeAt(0)) }],
|
|
178
|
+
textMatrix: {
|
|
179
|
+
scaleX: 1,
|
|
180
|
+
skewY: 0,
|
|
181
|
+
skewX: 0,
|
|
182
|
+
scaleY: 1,
|
|
183
|
+
translateX: 0,
|
|
184
|
+
translateY: TEXT_BOX_SIZE,
|
|
185
|
+
},
|
|
186
|
+
markedContent: null,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/** Each shell's text box font, and the open document it was minted for. */
|
|
195
|
+
const textBoxFonts = new WeakMap();
|
|
196
|
+
/**
|
|
197
|
+
* The font list's id for {@link TEXT_BOX_FONT}, added under an id minted once per
|
|
198
|
+
* document — an undo step of its own the first time, and again after that step is
|
|
199
|
+
* undone. Its own, not a Helvetica the document holds: the engine composes text
|
|
200
|
+
* only in a font it has loaded, and that one may be on a page it hasn't. Null with
|
|
201
|
+
* no ids to mint.
|
|
202
|
+
*/
|
|
203
|
+
async function textBoxFont(host) {
|
|
204
|
+
const generation = host.store.getState().docGeneration;
|
|
205
|
+
const known = textBoxFonts.get(host);
|
|
206
|
+
const id = known?.generation === generation ? known.id : await host.client.mintId();
|
|
207
|
+
if (id === null)
|
|
208
|
+
return null;
|
|
209
|
+
textBoxFonts.set(host, { generation, id });
|
|
210
|
+
await host.commit(() => host.client.execute({ portable: { addStandardFont: { id, font: TEXT_BOX_FONT } } }));
|
|
211
|
+
return id;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Put a text box on page `page` — `pageId` — on top of the page, flowing in the
|
|
215
|
+
* box from `p0` to `p1`, with its placeholder selected to be typed over. A page
|
|
216
|
+
* shown turned has the text turned back, so it reads upright on screen, from the
|
|
217
|
+
* box's top left there. Its insert and its frame are two undo steps: the engine
|
|
218
|
+
* takes a frame only on a box already on the page.
|
|
219
|
+
*/
|
|
220
|
+
async function placeTextBox(host, page, pageId, p0, p1) {
|
|
221
|
+
const [font, id] = await Promise.all([textBoxFont(host), host.client.mintId()]);
|
|
222
|
+
if (font === null || id === null)
|
|
223
|
+
return;
|
|
224
|
+
const [cos, sin] = QUARTER_TURNS[(4 - (host.pageView(page)?.view.rotation ?? 0)) % 4];
|
|
225
|
+
// The box in the text's own axes, which a frame is given in: x along its
|
|
226
|
+
// baseline, y down its lines.
|
|
227
|
+
const xs = [p0, p1].map((p) => p.x * cos + p.y * sin);
|
|
228
|
+
const ys = [p0, p1].map((p) => p.y * cos - p.x * sin);
|
|
229
|
+
const frame = { x0: Math.min(...xs), y0: Math.min(...ys), x1: Math.max(...xs), y1: Math.max(...ys) };
|
|
230
|
+
const at = { x: frame.x0 * cos - frame.y0 * sin, y: frame.x0 * sin + frame.y0 * cos };
|
|
231
|
+
const start = { object: id, run: 0, offset: 0 };
|
|
232
|
+
await host.commit(() => host.client.execute(EditCommand.insertObjects(pageId, [textBoxObject(id, font, at, cos, sin)])));
|
|
233
|
+
await host.commit(() => host.client.execute(EditCommand.resizeTextBox(pageId, start, frame)));
|
|
234
|
+
const end = { ...start, offset: TEXT_BOX_PLACEHOLDER.length };
|
|
235
|
+
host.client.setSelection({ portable: { objectText: { page: pageId, anchor: start, focus: end } } });
|
|
236
|
+
}
|
|
237
|
+
/** What a place `tool` drags out: a line or a box of a gallery shape, a PDF
|
|
238
|
+
* shape's own, or a text box's rectangle, which is its sketch too. */
|
|
77
239
|
export function placedShape(tool) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
240
|
+
if (tool === TEXT_BOX_TOOL)
|
|
241
|
+
return "rectangle";
|
|
242
|
+
const shape = galleryShape(tool);
|
|
243
|
+
if (shape)
|
|
244
|
+
return shape.line ? "line" : "rectangle";
|
|
245
|
+
return PORTABLE_SHAPES.has(tool) ? tool : null;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* What placing `tool` from `p0` to `p1` on page `page` would draw, while it is
|
|
249
|
+
* dragged out: a PDF's shape as it is drawn here, or the node a gallery shape
|
|
250
|
+
* places, as the engine would paint it. Null, at once, for a text box, which has
|
|
251
|
+
* nothing to show by, and for a tool not the document's.
|
|
252
|
+
*/
|
|
253
|
+
export function placePreview(host, memory, tool, page, p0, p1) {
|
|
254
|
+
const state = host.store.getState();
|
|
255
|
+
if (state.status !== "ready" || tool === TEXT_BOX_TOOL)
|
|
256
|
+
return null;
|
|
257
|
+
if (state.docType === "portable") {
|
|
258
|
+
return PORTABLE_SHAPES.has(tool)
|
|
259
|
+
? Promise.resolve(shapeObjectPreview(memory, tool, p0, p1))
|
|
260
|
+
: null;
|
|
261
|
+
}
|
|
262
|
+
const shape = galleryShape(tool);
|
|
263
|
+
if (!shape)
|
|
264
|
+
return null;
|
|
265
|
+
if (state.docType === "image")
|
|
266
|
+
return markupPreview(host, memory, shape, page, p0, p1);
|
|
267
|
+
if (state.docType !== "presentation")
|
|
268
|
+
return null;
|
|
269
|
+
const node = slideShape(PREVIEW_NODE_ID, PREVIEW_STORY_ID, shape, p0, p1, slidePaint(memory, shape));
|
|
270
|
+
return host.edit.shapePreview(page, node);
|
|
271
|
+
}
|
|
272
|
+
/** What was last specified for a new `shape` on a slide, over its style: a scheme
|
|
273
|
+
* color stays one, as a deck has a theme to resolve it. */
|
|
274
|
+
function slidePaint(memory, shape) {
|
|
275
|
+
const colors = slideShapeColors(shape);
|
|
276
|
+
return {
|
|
277
|
+
fill: specifiedPaint(memory, "fill", true, colors.fill),
|
|
278
|
+
line: specifiedPaint(memory, "stroke", true, colors.line),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/** Place `tool` on page `page`, spanning the page-local points `p0 → p1`, on
|
|
282
|
+
* top of the page: on a PDF, a shape as a page object — the engine mints its
|
|
283
|
+
* id and selects it — or a text box with its text selected; on a deck, a gallery
|
|
284
|
+
* shape or a text box on the slide, and on an image, either drawn over it. A no-op
|
|
285
|
+
* for a page with no id (no document, or none of these), or a tool not the
|
|
286
|
+
* document's. */
|
|
287
|
+
export async function place(host, memory, tool, page, p0, p1) {
|
|
86
288
|
const state = host.store.getState();
|
|
87
289
|
if (state.status !== "ready")
|
|
88
290
|
return;
|
|
89
291
|
if (state.docType === "portable") {
|
|
90
|
-
if (!PORTABLE_SHAPES.has(tool))
|
|
292
|
+
if (tool !== TEXT_BOX_TOOL && !PORTABLE_SHAPES.has(tool))
|
|
91
293
|
return;
|
|
92
294
|
const pageId = await host.client.portable.pageIdByIndex(page);
|
|
93
295
|
if (pageId === undefined)
|
|
94
296
|
return;
|
|
95
|
-
|
|
297
|
+
if (tool === TEXT_BOX_TOOL)
|
|
298
|
+
return placeTextBox(host, page, pageId, p0, p1);
|
|
299
|
+
const object = shapeObject(memory, tool, p0, p1);
|
|
96
300
|
await host.commit(() => host.client.execute(EditCommand.insertObjects(pageId, [object])));
|
|
97
301
|
return;
|
|
98
302
|
}
|
|
303
|
+
if (tool === TEXT_BOX_TOOL) {
|
|
304
|
+
if (state.docType === "presentation")
|
|
305
|
+
return placeSlideTextBox(host, page, p0, p1);
|
|
306
|
+
if (state.docType === "image")
|
|
307
|
+
return placeMarkupTextBox(host, TEXT_BOX_PLACEHOLDER, page, p0, p1);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
99
310
|
const shape = galleryShape(tool);
|
|
100
311
|
if (!shape)
|
|
101
312
|
return;
|
|
102
313
|
if (state.docType === "image")
|
|
103
|
-
return placeMarkup(host, shape, page, p0, p1);
|
|
314
|
+
return placeMarkup(host, memory, shape, page, p0, p1);
|
|
104
315
|
if (state.docType === "presentation")
|
|
105
|
-
return placeSlideShape(host, shape, page, p0, p1);
|
|
316
|
+
return placeSlideShape(host, memory, shape, page, p0, p1);
|
|
106
317
|
}
|
|
107
318
|
/**
|
|
108
319
|
* Put `shape` on the deck's slide `page` from `p0` to `p1` — the slide's own
|
|
109
320
|
* points — on top of the slide, and select it. One committing edit. A no-op
|
|
110
321
|
* past the last slide.
|
|
111
322
|
*/
|
|
112
|
-
async function placeSlideShape(host, shape, page, p0, p1) {
|
|
323
|
+
async function placeSlideShape(host, memory, shape, page, p0, p1) {
|
|
113
324
|
const [slide, id, story] = await Promise.all([host.edit.slideId(page), host.client.mintId(), host.client.mintId()]);
|
|
114
325
|
if (!slide || !id || !story)
|
|
115
326
|
return;
|
|
116
327
|
const container = { slide };
|
|
117
|
-
const node = slideShape(id, story, shape, p0, p1);
|
|
328
|
+
const node = slideShape(id, story, shape, p0, p1, slidePaint(memory, shape));
|
|
118
329
|
await host.commit(() => host.client.execute({
|
|
119
330
|
presentation: {
|
|
120
331
|
editShape: {
|
|
@@ -125,8 +336,32 @@ async function placeSlideShape(host, shape, page, p0, p1) {
|
|
|
125
336
|
}));
|
|
126
337
|
host.client.setSelection({ presentation: { shapes: { container, selection: { shapes: [id] } } } });
|
|
127
338
|
}
|
|
128
|
-
/**
|
|
129
|
-
*
|
|
339
|
+
/**
|
|
340
|
+
* Put a text box on the deck's slide `page` from `p0` to `p1` — the slide's own
|
|
341
|
+
* points — on top of the slide, with its text selected to be typed over. One
|
|
342
|
+
* committing edit. A no-op past the last slide.
|
|
343
|
+
*/
|
|
344
|
+
async function placeSlideTextBox(host, page, p0, p1) {
|
|
345
|
+
const [slide, id, story] = await Promise.all([host.edit.slideId(page), host.client.mintId(), host.client.mintId()]);
|
|
346
|
+
if (!slide || !id || !story)
|
|
347
|
+
return;
|
|
348
|
+
const container = { slide };
|
|
349
|
+
const node = slideTextBox(id, story, TEXT_BOX_PLACEHOLDER, p0, p1);
|
|
350
|
+
await host.commit(() => host.client.execute({
|
|
351
|
+
presentation: {
|
|
352
|
+
editShape: {
|
|
353
|
+
container,
|
|
354
|
+
command: { insertShapes: { parent: null, index: APPEND_INDEX, nodes: [node] } },
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
}));
|
|
358
|
+
const range = { story, anchor: 0, focus: TEXT_BOX_PLACEHOLDER.length };
|
|
359
|
+
host.client.setSelection({
|
|
360
|
+
presentation: { shapes: { container, selection: { shapeText: [id, { range }] } } },
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
/** Insert the image file `bytes` as a picture on the current slide or page,
|
|
364
|
+
* centred and scaled down to fit, then selected — a committing edit, so the picture's
|
|
130
365
|
* selection rides back. */
|
|
131
366
|
export function insertImage(host, bytes, contentType) {
|
|
132
367
|
return host.commit(() => host.edit.insertImage(bytes, contentType));
|
|
@@ -149,8 +384,20 @@ export function pickImage(host) {
|
|
|
149
384
|
});
|
|
150
385
|
input.click();
|
|
151
386
|
}
|
|
152
|
-
/**
|
|
153
|
-
*
|
|
387
|
+
/** Whether what goes on a deck's slide has one to go on: a slide shown, so not a
|
|
388
|
+
* notes page or the Slide Master view, nor a deck with no slides left. */
|
|
389
|
+
function onSlide(c) {
|
|
390
|
+
return c.ready && c.docType === "presentation" && c.presentationView === "normal" && c.pageCount > 0;
|
|
391
|
+
}
|
|
392
|
+
/** Whether what is drawn over an image has a page to go on: the current one, unless
|
|
393
|
+
* it's animated or a vector, and not while it's cropped. */
|
|
394
|
+
function overImage(c) {
|
|
395
|
+
return c.ready && c.docType === "image" && editStateOf(c).pageTakesMarkup && editStateOf(c).cropping === null;
|
|
396
|
+
}
|
|
397
|
+
/** The commands that put things on a page or a slide. Image asks for its file
|
|
398
|
+
* with `pickImage` — live on a deck's slides, which it inserts onto: not on
|
|
399
|
+
* its notes pages, where its Text Box and Shapes are grey too. A PDF's Text Box
|
|
400
|
+
* and Shapes place page objects, and its Image puts one on the current page. */
|
|
154
401
|
export function insertCommands(pickImage) {
|
|
155
402
|
return {
|
|
156
403
|
insertImage: {
|
|
@@ -158,16 +405,30 @@ export function insertCommands(pickImage) {
|
|
|
158
405
|
label: "command.insertImage",
|
|
159
406
|
icon: ICON_IMAGE,
|
|
160
407
|
group: "insert",
|
|
161
|
-
labeled: true,
|
|
162
408
|
run: { kind: "action", press: pickImage },
|
|
163
|
-
enabledWhen:
|
|
409
|
+
enabledWhen: onSlide,
|
|
410
|
+
},
|
|
411
|
+
insertPageImage: {
|
|
412
|
+
id: "insertPageImage",
|
|
413
|
+
label: "command.insertImage",
|
|
414
|
+
icon: ICON_IMAGE,
|
|
415
|
+
group: "insert",
|
|
416
|
+
run: { kind: "action", press: pickImage },
|
|
417
|
+
enabledWhen: (c) => c.ready && c.docType === "portable",
|
|
418
|
+
},
|
|
419
|
+
insertTextBox: {
|
|
420
|
+
id: "insertTextBox",
|
|
421
|
+
label: "command.annotateTextBox",
|
|
422
|
+
icon: ICON_SUBTOOL_TEXTBOX,
|
|
423
|
+
group: "insert",
|
|
424
|
+
run: { kind: "arm", tool: { kind: "extension", tool: TEXT_BOX_TOOL } },
|
|
425
|
+
enabledWhen: (c) => (c.ready && c.docType === "portable") || onSlide(c) || overImage(c),
|
|
164
426
|
},
|
|
165
427
|
insertShape: {
|
|
166
428
|
id: "insertShape",
|
|
167
429
|
label: "command.insertShape",
|
|
168
430
|
icon: ICON_SHAPES,
|
|
169
431
|
group: "insert",
|
|
170
|
-
labeled: true,
|
|
171
432
|
run: { kind: "armPicker", options: SHAPE_OPTIONS },
|
|
172
433
|
enabledWhen: (c) => c.ready && c.docType === "portable",
|
|
173
434
|
},
|
|
@@ -176,14 +437,8 @@ export function insertCommands(pickImage) {
|
|
|
176
437
|
label: "command.insertShape",
|
|
177
438
|
icon: ICON_SHAPES,
|
|
178
439
|
group: "insert",
|
|
179
|
-
labeled: true,
|
|
180
440
|
run: { kind: "armGallery", sections: SHAPE_GALLERY },
|
|
181
|
-
|
|
182
|
-
// takes them unless it's animated or a vector, and not while it's
|
|
183
|
-
// cropped.
|
|
184
|
-
enabledWhen: (c) => c.ready &&
|
|
185
|
-
((c.docType === "presentation" && c.presentationView === "normal") ||
|
|
186
|
-
(c.docType === "image" && editStateOf(c).pageTakesMarkup && editStateOf(c).cropping === null)),
|
|
441
|
+
enabledWhen: (c) => onSlide(c) || overImage(c),
|
|
187
442
|
},
|
|
188
443
|
};
|
|
189
444
|
}
|
package/dist/insert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../src/insert.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../src/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { LineStyle, PaintFill, PaintLine, PaintLineDash } from "@docmentis/udoc-wasm";
|
|
2
|
+
import type { LineDash } from "@docmentis/udoc-ui/internal";
|
|
3
|
+
/** The line's weight and dash a Line panel change states. */
|
|
4
|
+
export interface LineChange {
|
|
5
|
+
/** The weight, in points. */
|
|
6
|
+
weight?: number | undefined;
|
|
7
|
+
dash?: LineDash | undefined;
|
|
8
|
+
}
|
|
9
|
+
/** A `DrawingML` dash as one the panel offers, or null for one it doesn't. A line
|
|
10
|
+
* stating none is solid. */
|
|
11
|
+
export declare function lineDashOfDrawing(dash: PaintLineDash | null | undefined): LineDash | null;
|
|
12
|
+
/** `current` with `change` and the color `fill` when given, over `fallback` for
|
|
13
|
+
* what it lacks: no line, or one painting nothing, takes the fallback's color, as
|
|
14
|
+
* setting its weight turns it on. Arrowheads, caps and joins are carried. */
|
|
15
|
+
export declare function changedDrawingLine(current: PaintLine | null, change: LineChange & {
|
|
16
|
+
fill?: PaintFill | undefined;
|
|
17
|
+
}, fallback: {
|
|
18
|
+
fill: PaintFill;
|
|
19
|
+
weight: number;
|
|
20
|
+
dash: LineDash;
|
|
21
|
+
}): PaintLine;
|
|
22
|
+
/** A PDF line's dash as one the panel offers, or null for one it doesn't. */
|
|
23
|
+
export declare function lineDashOfPortable(line: LineStyle): LineDash | null;
|
|
24
|
+
/** `current` with `change`, or a line of `fallback` for a side with none. A new
|
|
25
|
+
* weight alone scales the line's dashes with it, whatever they are. */
|
|
26
|
+
export declare function changedPortableLine(current: LineStyle | null, change: LineChange, fallback: {
|
|
27
|
+
weight: number;
|
|
28
|
+
dash: LineDash;
|
|
29
|
+
}): LineStyle;
|
|
30
|
+
//# sourceMappingURL=line-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-edit.d.ts","sourceRoot":"","sources":["../src/line-edit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAOD;6BAC6B;AAC7B,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAKzF;AAED;;8EAE8E;AAC9E,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,MAAM,EAAE,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,EACrD,QAAQ,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC9D,SAAS,CAaX;AAkBD,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAUnE;AAeD;wEACwE;AACxE,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC7C,SAAS,CAUX"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/** A dash the panel offers as a `DrawingML` dash. */
|
|
2
|
+
function drawingDash(dash) {
|
|
3
|
+
return { preset: dash };
|
|
4
|
+
}
|
|
5
|
+
/** A `DrawingML` dash as one the panel offers, or null for one it doesn't. A line
|
|
6
|
+
* stating none is solid. */
|
|
7
|
+
export function lineDashOfDrawing(dash) {
|
|
8
|
+
if (!dash)
|
|
9
|
+
return "solid";
|
|
10
|
+
if (!("preset" in dash))
|
|
11
|
+
return null;
|
|
12
|
+
const { preset } = dash;
|
|
13
|
+
return preset === "solid" || preset === "dash" || preset === "dot" || preset === "dashDot" ? preset : null;
|
|
14
|
+
}
|
|
15
|
+
/** `current` with `change` and the color `fill` when given, over `fallback` for
|
|
16
|
+
* what it lacks: no line, or one painting nothing, takes the fallback's color, as
|
|
17
|
+
* setting its weight turns it on. Arrowheads, caps and joins are carried. */
|
|
18
|
+
export function changedDrawingLine(current, change, fallback) {
|
|
19
|
+
const fill = current && current.fill !== "none" ? current.fill : fallback.fill;
|
|
20
|
+
return {
|
|
21
|
+
width: change.weight ?? current?.width ?? fallback.weight,
|
|
22
|
+
cap: current?.cap ?? null,
|
|
23
|
+
compound: current?.compound ?? null,
|
|
24
|
+
align: current?.align ?? null,
|
|
25
|
+
fill: change.fill ?? fill,
|
|
26
|
+
dash: change.dash ? drawingDash(change.dash) : (current?.dash ?? drawingDash(fallback.dash)),
|
|
27
|
+
join: current?.join ?? null,
|
|
28
|
+
headEnd: current?.headEnd ?? null,
|
|
29
|
+
tailEnd: current?.tailEnd ?? null,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** The dash array the panel's `dash` is at `weight`: scaled by it, so it reads the
|
|
33
|
+
* same at any weight. */
|
|
34
|
+
function portableDashArray(dash, weight) {
|
|
35
|
+
const w = weight || 1;
|
|
36
|
+
switch (dash) {
|
|
37
|
+
case "dash":
|
|
38
|
+
return [3 * w, 3 * w];
|
|
39
|
+
case "dot":
|
|
40
|
+
return [w, 2 * w];
|
|
41
|
+
case "dashDot":
|
|
42
|
+
return [3 * w, 2 * w, w, 2 * w];
|
|
43
|
+
case "solid":
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** A PDF line's dash as one the panel offers, or null for one it doesn't. */
|
|
48
|
+
export function lineDashOfPortable(line) {
|
|
49
|
+
const { dashArray, width } = line;
|
|
50
|
+
if (!dashArray || dashArray.length === 0)
|
|
51
|
+
return "solid";
|
|
52
|
+
for (const dash of ["dash", "dot", "dashDot"]) {
|
|
53
|
+
const preset = portableDashArray(dash, width);
|
|
54
|
+
if (preset?.length === dashArray.length && preset.every((v, i) => Math.abs(v - dashArray[i]) < 1e-6)) {
|
|
55
|
+
return dash;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
/** A PDF line of `weight` and `dash` over `base`'s joins and offset. A dot's and a
|
|
61
|
+
* dash-dot's ends are round, as their dots are. */
|
|
62
|
+
function portableLineOf(base, weight, dash) {
|
|
63
|
+
return {
|
|
64
|
+
width: weight,
|
|
65
|
+
lineCap: dash === "dot" || dash === "dashDot" ? "round" : "butt",
|
|
66
|
+
lineJoin: base?.lineJoin ?? "miter",
|
|
67
|
+
miterLimit: base?.miterLimit ?? 10,
|
|
68
|
+
dashArray: portableDashArray(dash, weight),
|
|
69
|
+
dashOffset: base?.dashOffset ?? 0,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/** `current` with `change`, or a line of `fallback` for a side with none. A new
|
|
73
|
+
* weight alone scales the line's dashes with it, whatever they are. */
|
|
74
|
+
export function changedPortableLine(current, change, fallback) {
|
|
75
|
+
if (!current)
|
|
76
|
+
return portableLineOf(null, change.weight ?? fallback.weight, change.dash ?? fallback.dash);
|
|
77
|
+
const weight = change.weight ?? current.width;
|
|
78
|
+
if (change.dash)
|
|
79
|
+
return portableLineOf(current, weight, change.dash);
|
|
80
|
+
const scale = current.width > 0 ? weight / current.width : 1;
|
|
81
|
+
return {
|
|
82
|
+
...current,
|
|
83
|
+
width: weight,
|
|
84
|
+
dashArray: current.dashArray ? current.dashArray.map((v) => v * scale) : current.dashArray,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=line-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-edit.js","sourceRoot":"","sources":["../src/line-edit.ts"],"names":[],"mappings":"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"}
|