@docmentis/udoc-editor 0.8.6 → 0.8.8

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 (127) hide show
  1. package/dist/arrange.d.ts +3 -0
  2. package/dist/arrange.d.ts.map +1 -1
  3. package/dist/arrange.js +11 -13
  4. package/dist/arrange.js.map +1 -1
  5. package/dist/components/CropOverlay.d.ts +27 -0
  6. package/dist/components/CropOverlay.d.ts.map +1 -0
  7. package/dist/components/CropOverlay.js +126 -0
  8. package/dist/components/CropOverlay.js.map +1 -0
  9. package/dist/components/ImageSizeModal.d.ts +23 -0
  10. package/dist/components/ImageSizeModal.d.ts.map +1 -0
  11. package/dist/components/ImageSizeModal.js +189 -0
  12. package/dist/components/ImageSizeModal.js.map +1 -0
  13. package/dist/components/NewSlideModal.d.ts +7 -2
  14. package/dist/components/NewSlideModal.d.ts.map +1 -1
  15. package/dist/components/NewSlideModal.js +10 -3
  16. package/dist/components/NewSlideModal.js.map +1 -1
  17. package/dist/components/PageControls.d.ts.map +1 -1
  18. package/dist/components/PageControls.js +1 -2
  19. package/dist/components/PageControls.js.map +1 -1
  20. package/dist/components/PageSettingsModal.d.ts.map +1 -1
  21. package/dist/components/PageSettingsModal.js +1 -2
  22. package/dist/components/PageSettingsModal.js.map +1 -1
  23. package/dist/crop-box.d.ts +33 -0
  24. package/dist/crop-box.d.ts.map +1 -0
  25. package/dist/crop-box.js +107 -0
  26. package/dist/crop-box.js.map +1 -0
  27. package/dist/crop.d.ts +28 -0
  28. package/dist/crop.d.ts.map +1 -0
  29. package/dist/crop.js +260 -0
  30. package/dist/crop.js.map +1 -0
  31. package/dist/edit-mode.d.ts.map +1 -1
  32. package/dist/edit-mode.js +46 -3
  33. package/dist/edit-mode.js.map +1 -1
  34. package/dist/formatting-marks.d.ts +4 -5
  35. package/dist/formatting-marks.d.ts.map +1 -1
  36. package/dist/formatting-marks.js +4 -5
  37. package/dist/formatting-marks.js.map +1 -1
  38. package/dist/i18n/ar.d.ts.map +1 -1
  39. package/dist/i18n/ar.js +14 -0
  40. package/dist/i18n/ar.js.map +1 -1
  41. package/dist/i18n/de.d.ts.map +1 -1
  42. package/dist/i18n/de.js +14 -0
  43. package/dist/i18n/de.js.map +1 -1
  44. package/dist/i18n/en.d.ts.map +1 -1
  45. package/dist/i18n/en.js +14 -0
  46. package/dist/i18n/en.js.map +1 -1
  47. package/dist/i18n/es.d.ts.map +1 -1
  48. package/dist/i18n/es.js +14 -0
  49. package/dist/i18n/es.js.map +1 -1
  50. package/dist/i18n/fr.d.ts.map +1 -1
  51. package/dist/i18n/fr.js +14 -0
  52. package/dist/i18n/fr.js.map +1 -1
  53. package/dist/i18n/ja.d.ts.map +1 -1
  54. package/dist/i18n/ja.js +14 -0
  55. package/dist/i18n/ja.js.map +1 -1
  56. package/dist/i18n/ko.d.ts.map +1 -1
  57. package/dist/i18n/ko.js +14 -0
  58. package/dist/i18n/ko.js.map +1 -1
  59. package/dist/i18n/messages.d.ts +26 -0
  60. package/dist/i18n/messages.d.ts.map +1 -1
  61. package/dist/i18n/pt-BR.d.ts.map +1 -1
  62. package/dist/i18n/pt-BR.js +14 -0
  63. package/dist/i18n/pt-BR.js.map +1 -1
  64. package/dist/i18n/ru.d.ts.map +1 -1
  65. package/dist/i18n/ru.js +14 -0
  66. package/dist/i18n/ru.js.map +1 -1
  67. package/dist/i18n/zh-CN.d.ts.map +1 -1
  68. package/dist/i18n/zh-CN.js +14 -0
  69. package/dist/i18n/zh-CN.js.map +1 -1
  70. package/dist/i18n/zh-TW.d.ts.map +1 -1
  71. package/dist/i18n/zh-TW.js +14 -0
  72. package/dist/i18n/zh-TW.js.map +1 -1
  73. package/dist/icons.d.ts +8 -6
  74. package/dist/icons.d.ts.map +1 -1
  75. package/dist/icons.js +8 -6
  76. package/dist/icons.js.map +1 -1
  77. package/dist/image.d.ts +39 -0
  78. package/dist/image.d.ts.map +1 -0
  79. package/dist/image.js +203 -0
  80. package/dist/image.js.map +1 -0
  81. package/dist/insert.d.ts +5 -4
  82. package/dist/insert.d.ts.map +1 -1
  83. package/dist/insert.js +20 -9
  84. package/dist/insert.js.map +1 -1
  85. package/dist/markup.d.ts +23 -0
  86. package/dist/markup.d.ts.map +1 -0
  87. package/dist/markup.js +100 -0
  88. package/dist/markup.js.map +1 -0
  89. package/dist/menu-action.d.ts +6 -1
  90. package/dist/menu-action.d.ts.map +1 -1
  91. package/dist/menu-action.js +4 -1
  92. package/dist/menu-action.js.map +1 -1
  93. package/dist/new-slide.d.ts +5 -4
  94. package/dist/new-slide.d.ts.map +1 -1
  95. package/dist/new-slide.js +47 -17
  96. package/dist/new-slide.js.map +1 -1
  97. package/dist/page-controls.d.ts.map +1 -1
  98. package/dist/page-controls.js +31 -10
  99. package/dist/page-controls.js.map +1 -1
  100. package/dist/paint.d.ts +5 -1
  101. package/dist/paint.d.ts.map +1 -1
  102. package/dist/paint.js +27 -16
  103. package/dist/paint.js.map +1 -1
  104. package/dist/state.d.ts +24 -1
  105. package/dist/state.d.ts.map +1 -1
  106. package/dist/state.js +3 -0
  107. package/dist/state.js.map +1 -1
  108. package/dist/styles.d.ts.map +1 -1
  109. package/dist/styles.js +147 -1
  110. package/dist/styles.js.map +1 -1
  111. package/dist/tabs.d.ts +1 -1
  112. package/dist/tabs.d.ts.map +1 -1
  113. package/dist/tabs.js +53 -15
  114. package/dist/tabs.js.map +1 -1
  115. package/dist/text-format.js +7 -7
  116. package/dist/text-format.js.map +1 -1
  117. package/dist/tools.d.ts +3 -0
  118. package/dist/tools.d.ts.map +1 -1
  119. package/dist/tools.js +4 -2
  120. package/dist/tools.js.map +1 -1
  121. package/dist/version.d.ts +1 -1
  122. package/dist/version.js +1 -1
  123. package/dist/worker/handlers.d.ts.map +1 -1
  124. package/dist/worker/handlers.js +16 -10
  125. package/dist/worker/handlers.js.map +1 -1
  126. package/dist/worker/worker-source.js +1 -1
  127. package/package.json +3 -3
package/dist/image.js ADDED
@@ -0,0 +1,203 @@
1
+ import { allowsEdit, ICON_ROTATE_LEFT, ICON_ROTATE_RIGHT } from "@docmentis/udoc-ui/internal";
2
+ import { ICON_FLIP_VERTICAL } from "./arrange.js";
3
+ import { createImageSizeModal } from "./components/ImageSizeModal.js";
4
+ import { ICON_CROP, ICON_FLIP, ICON_IMAGE_SIZE } from "./icons.js";
5
+ import { markupShape } from "./markup.js";
6
+ import { editStateOf } from "./state.js";
7
+ /** A large insert index that clamps to "on top" in the engine. */
8
+ const APPEND_INDEX = 0x7fff_ffff;
9
+ /** The resolution a page whose file gave none is taken at — the engine's. */
10
+ const DEFAULT_DPI = 96;
11
+ /** Points per inch. */
12
+ const POINTS_PER_INCH = 72;
13
+ /** Wrap a command on an image's pages in its `UDocCommand`. */
14
+ export function editPage(command) {
15
+ return { image: { editPage: { command } } };
16
+ }
17
+ /** The page's resolution along its own `[x, y]`, in dots per inch: its
18
+ * image's, swapped where the image lies a quarter turn — the engine's
19
+ * `ImagePageInfo::resolution`. */
20
+ function resolution(info) {
21
+ const [dpiX, dpiY] = info.dpi ?? [DEFAULT_DPI, DEFAULT_DPI];
22
+ return quarterTurned(info) ? [dpiY, dpiX] : [dpiX, dpiY];
23
+ }
24
+ /** Whether page `info`'s image lies a quarter turn either way. */
25
+ function quarterTurned(info) {
26
+ return info.imageRotation === "clockwise90" || info.imageRotation === "clockwise270";
27
+ }
28
+ /** The pixels page `info` holds at its resolution — the engine's
29
+ * `ImagePageInfo::pixel_size`: what a save writes, and what a resize names. */
30
+ export function pagePixels(info) {
31
+ const [dpiX, dpiY] = resolution(info);
32
+ return {
33
+ width: Math.max(1, Math.round((info.size.width * dpiX) / POINTS_PER_INCH)),
34
+ height: Math.max(1, Math.round((info.size.height * dpiY) / POINTS_PER_INCH)),
35
+ };
36
+ }
37
+ /** The pixels of its image page `info` shows, as loaded — before any resize:
38
+ * the page's size over the points its image's pixels cover on it. */
39
+ function imagePixels(info) {
40
+ const [across, down] = quarterTurned(info) ? [info.height, info.width] : [info.width, info.height];
41
+ const rect = info.imageRect;
42
+ return {
43
+ width: Math.max(1, Math.round((info.size.width * across) / (rect.x1 - rect.x0))),
44
+ height: Math.max(1, Math.round((info.size.height * down) / (rect.y1 - rect.y0))),
45
+ };
46
+ }
47
+ /** Whether page `info` shows less than its whole image — a crop Reset can
48
+ * take away. */
49
+ export function croppedPage(info) {
50
+ const rect = info.imageRect;
51
+ const near = (a, b) => Math.abs(a - b) < 1e-6;
52
+ return !(near(rect.x0, 0) && near(rect.y0, 0) && near(rect.x1, info.size.width) && near(rect.y1, info.size.height));
53
+ }
54
+ /** The current page of the open image's manifest entry — what an edit of it
55
+ * names and measures — or null with none. */
56
+ function currentPage(host) {
57
+ return host.client.image.pageInfoByIndex(host.store.getState().pageIndex);
58
+ }
59
+ /** Mount the Image Size dialog into `host` — once, re-seeded with the current
60
+ * page's sizes each open: its pixels now, and its image's as loaded. */
61
+ export function mountImageSize(host, i18n) {
62
+ const modal = createImageSizeModal(i18n);
63
+ modal.mount(host.root);
64
+ return {
65
+ async open() {
66
+ const info = await currentPage(host);
67
+ if (!info)
68
+ return;
69
+ const shown = pagePixels(info);
70
+ const original = imagePixels(info);
71
+ modal.open({
72
+ width: shown.width,
73
+ height: shown.height,
74
+ originalWidth: original.width,
75
+ originalHeight: original.height,
76
+ onResize: (width, height) => void host.commit(() => host.client.execute(editPage({ resizePage: { id: info.id, width, height } }))),
77
+ });
78
+ },
79
+ destroy: () => modal.destroy(),
80
+ };
81
+ }
82
+ /** Turn the pages picked in the thumbnails a quarter turn — clockwise, or
83
+ * counter-clockwise — or the current page with none picked. */
84
+ async function rotatePages(host, clockwise) {
85
+ if (allowsEdit(host.store.getState().selectionCaps, "rotatePages")) {
86
+ await host.commit(() => host.client.executeOnSelection({ kind: "page", edit: { kind: "rotatePages", clockwise } }));
87
+ return;
88
+ }
89
+ const info = await currentPage(host);
90
+ if (info)
91
+ await host.commit(() => host.client.execute(editPage({ rotatePages: { ids: [info.id], clockwise } })));
92
+ }
93
+ /** Flip the pages picked in the thumbnails — left to right, or top to bottom
94
+ * — or the current page with none picked. */
95
+ async function flipPages(host, horizontal) {
96
+ if (allowsEdit(host.store.getState().selectionCaps, "flipPages")) {
97
+ await host.commit(() => host.client.executeOnSelection({ kind: "page", edit: { kind: "flipPages", horizontal } }));
98
+ return;
99
+ }
100
+ const info = await currentPage(host);
101
+ if (info)
102
+ await host.commit(() => host.client.execute(editPage({ flipPages: { ids: [info.id], horizontal } })));
103
+ }
104
+ /**
105
+ * Whether an image's page edits show on its Home tab in `c`: with no shape
106
+ * drawn over a page selected — nothing, or pages in the thumbnails — outside
107
+ * crop mode. Home is contextual, so they yield to the text and shape controls
108
+ * the moment a shape is.
109
+ */
110
+ function whenPageEdits(c) {
111
+ return (c.ready &&
112
+ c.docType === "image" &&
113
+ editStateOf(c).cropping === null &&
114
+ (c.selection.count === 0 || allowsEdit(c.selection, "rotatePages")));
115
+ }
116
+ /** The image Home tab's page commands, over `host` once edit mode is mounted. */
117
+ export function imageCommands(host, actions) {
118
+ const rotate = (clockwise) => {
119
+ const mounted = host();
120
+ if (mounted)
121
+ void rotatePages(mounted, clockwise);
122
+ };
123
+ const flip = (horizontal) => {
124
+ const mounted = host();
125
+ if (mounted)
126
+ void flipPages(mounted, horizontal);
127
+ };
128
+ return {
129
+ rotatePageLeft: {
130
+ id: "rotatePageLeft",
131
+ label: "thumbnails.rotateLeft",
132
+ icon: ICON_ROTATE_LEFT,
133
+ group: "image",
134
+ run: { kind: "action", press: () => rotate(false) },
135
+ enabledWhen: whenPageEdits,
136
+ },
137
+ rotatePageRight: {
138
+ id: "rotatePageRight",
139
+ label: "thumbnails.rotateRight",
140
+ icon: ICON_ROTATE_RIGHT,
141
+ group: "image",
142
+ run: { kind: "action", press: () => rotate(true) },
143
+ enabledWhen: whenPageEdits,
144
+ },
145
+ flipPageHorizontal: {
146
+ id: "flipPageHorizontal",
147
+ label: "arrange.flipHorizontal",
148
+ icon: ICON_FLIP,
149
+ group: "image",
150
+ run: { kind: "action", press: () => flip(true) },
151
+ enabledWhen: whenPageEdits,
152
+ },
153
+ flipPageVertical: {
154
+ id: "flipPageVertical",
155
+ label: "arrange.flipVertical",
156
+ icon: ICON_FLIP_VERTICAL,
157
+ group: "image",
158
+ run: { kind: "action", press: () => flip(false) },
159
+ enabledWhen: whenPageEdits,
160
+ },
161
+ cropPage: {
162
+ id: "cropPage",
163
+ label: "command.cropPage",
164
+ icon: ICON_CROP,
165
+ group: "image",
166
+ run: { kind: "action", press: actions.crop },
167
+ enabledWhen: whenPageEdits,
168
+ },
169
+ resizePage: {
170
+ id: "resizePage",
171
+ label: "command.resizePage",
172
+ icon: ICON_IMAGE_SIZE,
173
+ group: "image",
174
+ run: { kind: "action", press: actions.resize },
175
+ enabledWhen: whenPageEdits,
176
+ },
177
+ };
178
+ }
179
+ /**
180
+ * Draw `shape` over page `page` from `p0` to `p1` — the page's own points —
181
+ * and select it. One committing edit. A no-op on a page that takes no markup,
182
+ * or with no image open.
183
+ */
184
+ export async function placeMarkup(host, shape, page, p0, p1) {
185
+ const [info, id, story] = await Promise.all([
186
+ host.client.image.pageInfoByIndex(page),
187
+ host.client.mintId(),
188
+ host.client.mintId(),
189
+ ]);
190
+ if (!info || !id || !story)
191
+ return;
192
+ const node = markupShape(id, story, shape, p0, p1, info.size);
193
+ await host.commit(() => host.client.execute({
194
+ image: {
195
+ editShape: {
196
+ page: info.id,
197
+ command: { insertShapes: { parent: null, index: APPEND_INDEX, nodes: [node] } },
198
+ },
199
+ },
200
+ }));
201
+ host.client.setSelection({ image: { shapes: { page: info.id, selection: { shapes: [id] } } } });
202
+ }
203
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
package/dist/insert.d.ts CHANGED
@@ -4,9 +4,9 @@ import type { MessageKey } from "./i18n/index.js";
4
4
  /** The shape the Insert tab's place `tool` drags out. */
5
5
  export declare function placedShape(tool: string): ShapeKind | null;
6
6
  /** Place the Insert tab's `tool` on page `page`, spanning the page-local points
7
- * `p0 → p1`: a shape as a page object, on top of the page — the engine mints
8
- * its id and selects it. A no-op for a page with no id (no document, or not a
9
- * PDF). */
7
+ * `p0 → p1`, on top of the page: on a PDF, a shape as a page object — the
8
+ * engine mints its id and selects it — and on an image, a shape drawn over
9
+ * it. A no-op for a page with no id (no document, or neither). */
10
10
  export declare function place(host: EditHost, tool: string, page: number, p0: ShapePoint, p1: ShapePoint): Promise<void>;
11
11
  /** Insert the image file `bytes` as a picture on the current slide, centred
12
12
  * and scaled down to fit, then selected — a committing edit, so the picture's
@@ -16,6 +16,7 @@ export declare function insertImage(host: EditHost, bytes: Uint8Array, contentTy
16
16
  * file's size and format from its bytes; the browser's MIME type rides along,
17
17
  * empty when it has none. */
18
18
  export declare function pickImage(host: EditHost): void;
19
- /** The Insert tab's commands, Image asking for its file with `pickImage`. */
19
+ /** The Insert tab's commands, Image asking for its file with `pickImage` —
20
+ * live on a deck's slides, which it inserts onto: not on its notes pages. */
20
21
  export declare function insertCommands(pickImage: () => void): Readonly<Record<string, CommandDef<MessageKey>>>;
21
22
  //# sourceMappingURL=insert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../src/insert.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAgB,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqElD,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE1D;AAED;;;YAGY;AACZ,wBAAsB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrH;AAED;;4BAE4B;AAC5B,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjG;AAED;;8BAE8B;AAC9B,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAa9C;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAoBtG"}
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../src/insert.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAgB,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAuElD,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE1D;AAED;;;mEAGmE;AACnE,wBAAsB,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrH;AAED;;4BAE4B;AAC5B,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjG;AAED;;8BAE8B;AAC9B,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAa9C;AAED;8EAC8E;AAC9E,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAyBtG"}
package/dist/insert.js CHANGED
@@ -1,8 +1,11 @@
1
- // The Insert tab's commands: Shapes on a PDF, placed by a pointer gesture the
2
- // canvas carries out, and Image on a slide deck, asked for and inserted at once.
1
+ // The Insert tab's commands: Shapes on a PDF or over an image's page, placed by
2
+ // a pointer gesture the canvas carries out, and Image on a slide deck, asked
3
+ // for and inserted at once.
3
4
  import { ICON_SUBTOOL_ARROW, ICON_SUBTOOL_ELLIPSE, ICON_SUBTOOL_LINE, ICON_SUBTOOL_RECTANGLE, SHAPE_STROKE, SHAPE_STROKE_WIDTH, segmentsFor, } from "@docmentis/udoc-ui/internal";
4
5
  import { EditCommand } from "./edit-command.js";
5
6
  import { ICON_IMAGE } from "./icons.js";
7
+ import { placeMarkup } from "./image.js";
8
+ import { editStateOf } from "./state.js";
6
9
  /** A placed shape's fill — translucent blue (filled shapes only). */
7
10
  const FILL = { components: [0.26, 0.55, 0.96], colorSpace: "srgb" };
8
11
  /** A placed shape's fill opacity. */
@@ -68,13 +71,16 @@ export function placedShape(tool) {
68
71
  return SHAPES.has(tool) ? tool : null;
69
72
  }
70
73
  /** Place the Insert tab's `tool` on page `page`, spanning the page-local points
71
- * `p0 → p1`: a shape as a page object, on top of the page — the engine mints
72
- * its id and selects it. A no-op for a page with no id (no document, or not a
73
- * PDF). */
74
+ * `p0 → p1`, on top of the page: on a PDF, a shape as a page object — the
75
+ * engine mints its id and selects it — and on an image, a shape drawn over
76
+ * it. A no-op for a page with no id (no document, or neither). */
74
77
  export async function place(host, tool, page, p0, p1) {
75
78
  const shape = placedShape(tool);
76
- if (!shape || host.store.getState().status !== "ready")
79
+ const state = host.store.getState();
80
+ if (!shape || state.status !== "ready")
77
81
  return;
82
+ if (state.docType === "image")
83
+ return placeMarkup(host, shape, page, p0, p1);
78
84
  const pageId = await host.client.portable.pageIdByIndex(page);
79
85
  if (pageId === undefined)
80
86
  return;
@@ -104,7 +110,8 @@ export function pickImage(host) {
104
110
  });
105
111
  input.click();
106
112
  }
107
- /** The Insert tab's commands, Image asking for its file with `pickImage`. */
113
+ /** The Insert tab's commands, Image asking for its file with `pickImage` —
114
+ * live on a deck's slides, which it inserts onto: not on its notes pages. */
108
115
  export function insertCommands(pickImage) {
109
116
  return {
110
117
  insertImage: {
@@ -114,7 +121,7 @@ export function insertCommands(pickImage) {
114
121
  group: "insert",
115
122
  labeled: true,
116
123
  run: { kind: "action", press: pickImage },
117
- enabledWhen: (c) => c.ready && c.docType === "presentation",
124
+ enabledWhen: (c) => c.ready && c.docType === "presentation" && c.presentationView === "normal",
118
125
  },
119
126
  insertShape: {
120
127
  id: "insertShape",
@@ -122,7 +129,11 @@ export function insertCommands(pickImage) {
122
129
  icon: ICON_SUBTOOL_RECTANGLE,
123
130
  group: "insert",
124
131
  run: { kind: "armPicker", options: SHAPE_OPTIONS },
125
- enabledWhen: (c) => c.ready && c.docType === "portable",
132
+ // An image's current page takes them unless it's animated or a
133
+ // vector, and not while it's cropped.
134
+ enabledWhen: (c) => c.ready &&
135
+ (c.docType === "portable" ||
136
+ (c.docType === "image" && editStateOf(c).pageTakesMarkup && editStateOf(c).cropping === null)),
126
137
  },
127
138
  };
128
139
  }
@@ -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,23 @@
1
+ import type { ShapeNode } from "@docmentis/udoc-wasm";
2
+ import type { ShapeKind, ShapePoint } from "@docmentis/udoc-ui/internal";
3
+ /** The weight in points a shape is outlined at over a page `width` ×
4
+ * `height` points: a point per {@link POINTS_PER_LINE_POINT} of its shorter
5
+ * side, and at least {@link MIN_LINE_WEIGHT}. */
6
+ export declare function markupLineWeight(width: number, height: number): number;
7
+ /** The size in points a label typed into a box is set at over a page `width`
8
+ * × `height` points: a point per {@link POINTS_PER_TEXT_POINT} of its shorter
9
+ * side, and at least {@link MIN_TEXT_SIZE}. */
10
+ export declare function markupTextSize(width: number, height: number): number;
11
+ /**
12
+ * The drawing shape `shape` spanning `p0 → p1` (the page's points) over a
13
+ * page `page` points in size, its id `id` and a box's text story `story` —
14
+ * outlined in {@link MARKUP_COLOR} and unfilled, so the image shows through;
15
+ * an arrow's head at `p1`; a box with an empty label to type into. A line runs
16
+ * from `p0` to `p1` by flipping the box its preset runs corner to corner
17
+ * across; a box is never flipped, as a flip turns its label upside down.
18
+ */
19
+ export declare function markupShape(id: string, story: string, shape: ShapeKind, p0: ShapePoint, p1: ShapePoint, page: {
20
+ width: number;
21
+ height: number;
22
+ }): ShapeNode;
23
+ //# sourceMappingURL=markup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAyB,SAAS,EAAqC,MAAM,sBAAsB,CAAC;AAChH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAmBzE;;kDAEkD;AAClD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;gDAEgD;AAChD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAgCD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,SAAS,CAsCX"}
package/dist/markup.js ADDED
@@ -0,0 +1,100 @@
1
+ /** The color shapes are drawn over an image in — a markup red. An image has
2
+ * no theme, so it is an sRGB color, never a scheme one. */
3
+ const MARKUP_COLOR = { base: { sRgb: { r: 0xe5, g: 0x39, b: 0x35 } }, transforms: [] };
4
+ /** The page size, in points, one point of line weight is drawn per — so a
5
+ * shape's outline reads at the page's size, a photo's as a screenshot's. */
6
+ const POINTS_PER_LINE_POINT = 250;
7
+ /** The thinnest line a shape is drawn with, in points. */
8
+ const MIN_LINE_WEIGHT = 2;
9
+ /** The page size, in points, one point of a label's size is set per. */
10
+ const POINTS_PER_TEXT_POINT = 30;
11
+ /** The smallest a label is set, in points. */
12
+ const MIN_TEXT_SIZE = 12;
13
+ /** The weight in points a shape is outlined at over a page `width` ×
14
+ * `height` points: a point per {@link POINTS_PER_LINE_POINT} of its shorter
15
+ * side, and at least {@link MIN_LINE_WEIGHT}. */
16
+ export function markupLineWeight(width, height) {
17
+ return Math.max(MIN_LINE_WEIGHT, Math.round(Math.min(width, height) / POINTS_PER_LINE_POINT));
18
+ }
19
+ /** The size in points a label typed into a box is set at over a page `width`
20
+ * × `height` points: a point per {@link POINTS_PER_TEXT_POINT} of its shorter
21
+ * side, and at least {@link MIN_TEXT_SIZE}. */
22
+ export function markupTextSize(width, height) {
23
+ return Math.max(MIN_TEXT_SIZE, Math.round(Math.min(width, height) / POINTS_PER_TEXT_POINT));
24
+ }
25
+ /** Each shape the Insert tab draws: its preset outline, its name, and whether
26
+ * it is a box, which takes a label. */
27
+ const MARKUP_SHAPES = {
28
+ rectangle: { preset: "rect", name: "Rectangle", box: true },
29
+ ellipse: { preset: "ellipse", name: "Oval", box: true },
30
+ line: { preset: "line", name: "Line", box: false },
31
+ arrow: { preset: "line", name: "Arrow", box: false },
32
+ };
33
+ /** A box's text body, empty: one paragraph centred in it, which the text typed
34
+ * into it takes the markup color and `size` points from — what a press in the
35
+ * box lands a caret in, as in a slide's shape. Its story is `story`. */
36
+ function labelBody(story, size) {
37
+ return {
38
+ properties: { anchor: "center" },
39
+ story: {
40
+ id: story,
41
+ blocks: [
42
+ {
43
+ paragraph: {
44
+ properties: [{ align: "center" }],
45
+ end: { mark: [{ size }, { fill: { solid: MARKUP_COLOR } }] },
46
+ spans: [],
47
+ },
48
+ },
49
+ ],
50
+ },
51
+ };
52
+ }
53
+ /**
54
+ * The drawing shape `shape` spanning `p0 → p1` (the page's points) over a
55
+ * page `page` points in size, its id `id` and a box's text story `story` —
56
+ * outlined in {@link MARKUP_COLOR} and unfilled, so the image shows through;
57
+ * an arrow's head at `p1`; a box with an empty label to type into. A line runs
58
+ * from `p0` to `p1` by flipping the box its preset runs corner to corner
59
+ * across; a box is never flipped, as a flip turns its label upside down.
60
+ */
61
+ export function markupShape(id, story, shape, p0, p1, page) {
62
+ const { preset, name, box } = MARKUP_SHAPES[shape];
63
+ const line = {
64
+ width: markupLineWeight(page.width, page.height),
65
+ cap: "round",
66
+ compound: null,
67
+ align: null,
68
+ fill: { solid: MARKUP_COLOR },
69
+ dash: null,
70
+ join: "round",
71
+ headEnd: null,
72
+ tailEnd: shape === "arrow" ? { kind: "triangle", width: "medium", length: "medium" } : null,
73
+ };
74
+ return {
75
+ shape: {
76
+ id,
77
+ nonVisual: { name, description: null, title: null, hidden: false, placeholder: null },
78
+ properties: {
79
+ transform: {
80
+ offset: { x: Math.min(p0.x, p1.x), y: Math.min(p0.y, p1.y) },
81
+ extents: { width: Math.abs(p1.x - p0.x), height: Math.abs(p1.y - p0.y) },
82
+ rotation: 0,
83
+ flipH: !box && p1.x < p0.x,
84
+ flipV: !box && p1.y < p0.y,
85
+ },
86
+ geometry: { preset: { preset, adjustValues: [] } },
87
+ fill: "none",
88
+ line,
89
+ effects: null,
90
+ scene3d: null,
91
+ shape3d: null,
92
+ },
93
+ style: null,
94
+ textBody: box ? labelBody(story, markupTextSize(page.width, page.height)) : null,
95
+ textTransform: null,
96
+ diagramPoint: null,
97
+ },
98
+ };
99
+ }
100
+ //# sourceMappingURL=markup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markup.js","sourceRoot":"","sources":["../src/markup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { TableSelectionEdit } from "@docmentis/udoc-wasm";
2
2
  import type { AlignEdge, EditAxis, MenuAction, TextParagraphAlign, ZOrder } from "@docmentis/udoc-ui/internal";
3
3
  import type { ClipboardOp, TableSelectScope } from "./context-menu.js";
4
+ import type { CropAspect } from "./crop-box.js";
4
5
  import type { ParagraphSpaceEdge } from "./text-format.js";
5
6
  import type { EditTools } from "./tools.js";
6
7
  /**
@@ -10,7 +11,8 @@ import type { EditTools } from "./tools.js";
10
11
  * / `flip` / `rotate` the Align and Rotate dropdowns; `alignToPage` the Align
11
12
  * dropdown's reference toggle (a UI flag, not a document edit). `clipboard` /
12
13
  * `delete` are the context menu's acts on the selection, and `selectTable` /
13
- * `tableEdit` its rows over a table.
14
+ * `tableEdit` its rows over a table. `cropAspect` is crop mode's Aspect Ratio
15
+ * dropdown.
14
16
  *
15
17
  * The first five are the paragraph menus' rows. `indent` carries a *step*, not
16
18
  * a measure: an indent is relative per paragraph — a selection spanning two
@@ -65,6 +67,9 @@ export type EditMenuAction = {
65
67
  } | {
66
68
  kind: "tableEdit";
67
69
  edit: TableSelectionEdit;
70
+ } | {
71
+ kind: "cropAspect";
72
+ aspect: CropAspect;
68
73
  };
69
74
  /** `action` as a shell {@link MenuAction}: carried as the extension's own. */
70
75
  export declare function editAction(action: EditMenuAction): MenuAction;
@@ -1 +1 @@
1
- {"version":3,"file":"menu-action.d.ts","sourceRoot":"","sources":["../src/menu-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEtD,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAE7D;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAiFhF"}
1
+ {"version":3,"file":"menu-action.d.ts","sourceRoot":"","sources":["../src/menu-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjD,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAE7D;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAoFhF"}
@@ -5,7 +5,7 @@ export function editAction(action) {
5
5
  }
6
6
  /** Run one of edit mode's menu rows' intents on the current selection. */
7
7
  export function runEditMenuAction(tools, action) {
8
- const { arrange, text, clipboard, host } = tools;
8
+ const { arrange, text, clipboard, crop, host } = tools;
9
9
  switch (action.kind) {
10
10
  case "reorder":
11
11
  void arrange.reorderSelection(action.order);
@@ -84,6 +84,9 @@ export function runEditMenuAction(tools, action) {
84
84
  void host.commit(() => host.client.executeOnSelection(edit));
85
85
  break;
86
86
  }
87
+ case "cropAspect":
88
+ crop.setAspect(action.aspect);
89
+ break;
87
90
  }
88
91
  }
89
92
  //# sourceMappingURL=menu-action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-action.js","sourceRoot":"","sources":["../src/menu-action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu-action.js","sourceRoot":"","sources":["../src/menu-action.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,11 @@ export interface NewSlide {
12
12
  export declare function mountNewSlide(host: EditHost, i18n: I18n): NewSlide;
13
13
  /**
14
14
  * The New Slide command, opening the picker with `open` — a document-level
15
- * action shown only with nothing selected: it sits where the selection's
16
- * property controls go, so it shows on the empty canvas and yields to those
17
- * controls the moment a shape or text is selected. Labeled, as its page-add
18
- * glyph reads "slide" only once you know.
15
+ * action shown with nothing selected, or slides or sections: it sits where the
16
+ * selection's property controls go, so it shows on the empty canvas and with
17
+ * slides or sections picked in the thumbnails, and yields to those controls the
18
+ * moment a shape or text is selected. Labeled, as its page-add glyph reads
19
+ * "slide" only once you know.
19
20
  */
20
21
  export declare function newSlideCommand(open: () => void): CommandDef<MessageKey>;
21
22
  //# sourceMappingURL=new-slide.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"new-slide.d.ts","sourceRoot":"","sources":["../src/new-slide.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAUxD,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACrB,6DAA6D;IAC7D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;+BAC+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAmClE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAUxE"}
1
+ {"version":3,"file":"new-slide.d.ts","sourceRoot":"","sources":["../src/new-slide.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA0BxD,+CAA+C;AAC/C,MAAM,WAAW,QAAQ;IACrB,6DAA6D;IAC7D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACnB;AAED;+BAC+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAgDlE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAYxE"}