@docmentis/udoc-editor 0.8.5 → 0.8.7
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/arrange.d.ts.map +1 -1
- package/dist/arrange.js +2 -2
- package/dist/arrange.js.map +1 -1
- package/dist/components/PageControls.d.ts.map +1 -1
- package/dist/components/PageControls.js +1 -2
- package/dist/components/PageControls.js.map +1 -1
- package/dist/components/PageSettingsModal.d.ts.map +1 -1
- package/dist/components/PageSettingsModal.js +1 -2
- package/dist/components/PageSettingsModal.js.map +1 -1
- package/dist/edit-mode.d.ts.map +1 -1
- package/dist/edit-mode.js +5 -2
- package/dist/edit-mode.js.map +1 -1
- package/dist/icons.d.ts +0 -6
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +0 -6
- package/dist/icons.js.map +1 -1
- package/dist/insert.d.ts +2 -1
- package/dist/insert.d.ts.map +1 -1
- package/dist/insert.js +3 -2
- package/dist/insert.js.map +1 -1
- package/dist/new-slide.d.ts +5 -4
- package/dist/new-slide.d.ts.map +1 -1
- package/dist/new-slide.js +39 -15
- package/dist/new-slide.js.map +1 -1
- package/dist/page-controls.d.ts.map +1 -1
- package/dist/page-controls.js +31 -10
- package/dist/page-controls.js.map +1 -1
- package/dist/ruler-controls.d.ts +54 -0
- package/dist/ruler-controls.d.ts.map +1 -0
- package/dist/ruler-controls.js +270 -0
- package/dist/ruler-controls.js.map +1 -0
- package/dist/ruler-edits.d.ts +38 -0
- package/dist/ruler-edits.d.ts.map +1 -0
- package/dist/ruler-edits.js +157 -0
- package/dist/ruler-edits.js.map +1 -0
- package/dist/ruler.d.ts +6 -3
- package/dist/ruler.d.ts.map +1 -1
- package/dist/ruler.js +174 -33
- package/dist/ruler.js.map +1 -1
- package/dist/state.d.ts +7 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -0
- package/dist/state.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +99 -0
- package/dist/styles.js.map +1 -1
- package/dist/tabs.d.ts.map +1 -1
- package/dist/tabs.js +4 -2
- package/dist/tabs.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 +16 -10
- package/dist/worker/handlers.js.map +1 -1
- package/dist/worker/worker-source.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruler-edits.js","sourceRoot":"","sources":["../src/ruler-edits.ts"],"names":[],"mappings":"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"}
|
package/dist/ruler.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Action, GuideBand, Store, UIState } from "@docmentis/udoc-ui/internal";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { EditHost } from "./edit-client.js";
|
|
3
|
+
/** The ruler band, with controls of its own — one per editor, whose edits run
|
|
4
|
+
* through the `host` edit mode lends once it is mounted. Paints only a ruler
|
|
5
|
+
* projection; any other leaves the strips cleared to their band background
|
|
6
|
+
* until one lands. */
|
|
7
|
+
export declare function createRuler(host: () => EditHost | null): GuideBand;
|
|
5
8
|
/** Whether the ruler shows in `state`: a ruled doc type in edit mode, with the
|
|
6
9
|
* preference on. */
|
|
7
10
|
export declare function rulerShown(state: UIState): boolean;
|
package/dist/ruler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruler.d.ts","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ruler.d.ts","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAyB,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqOjD;;;uBAGuB;AACvB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,CA4BlE;AAED;qBACqB;AACrB,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAElF"}
|
package/dist/ruler.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
+
import { createRulerControls } from "./ruler-controls.js";
|
|
2
|
+
import { rulerEdit, rulerMovable } from "./ruler-edits.js";
|
|
1
3
|
import { editState, updateEditState } from "./state.js";
|
|
2
4
|
/** The doc types the engine measures with a ruler: the paged ones. */
|
|
3
5
|
const RULED = new Set(["portable", "presentation", "wordprocessing"]);
|
|
6
|
+
/** The rulers' depth, top and left alike, CSS px. */
|
|
7
|
+
const THICKNESS = 22;
|
|
4
8
|
/** A screen-fixed UI font for the labels — not the document's fonts. */
|
|
5
9
|
const UI_FONT = `-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif`;
|
|
10
|
+
/** Points per inch — the unit the rulers count in. */
|
|
11
|
+
const POINTS_PER_INCH = 72;
|
|
12
|
+
/** The subdivisions of an inch a ruler can tick, finest first. */
|
|
13
|
+
const SUBDIVISIONS = [8, 4, 2, 1];
|
|
14
|
+
/** How many inches apart the figures can stand, nearest first. */
|
|
15
|
+
const FIGURE_STEPS = [1, 2, 5, 10, 20, 50];
|
|
16
|
+
/** The closest two ticks stand, CSS px: a finer subdivision drops out below it. */
|
|
17
|
+
const MIN_TICK_GAP = 6;
|
|
18
|
+
/** The closest two figures stand, CSS px: a wider step takes over below it. */
|
|
19
|
+
const MIN_FIGURE_GAP = 24;
|
|
6
20
|
function stroke(ctx, color, x0, y0, x1, y1) {
|
|
7
21
|
ctx.strokeStyle = color;
|
|
8
22
|
ctx.lineWidth = 1;
|
|
@@ -11,38 +25,138 @@ function stroke(ctx, color, x0, y0, x1, y1) {
|
|
|
11
25
|
ctx.lineTo(x1, y1);
|
|
12
26
|
ctx.stroke();
|
|
13
27
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
/** `v` CSS px along `ctx`'s `axis`, moved onto the nearest device pixel edge. */
|
|
29
|
+
function snap(ctx, v, axis) {
|
|
30
|
+
const m = ctx.getTransform();
|
|
31
|
+
const [k, offset] = axis === "x" ? [m.a, m.e] : [m.d, m.f];
|
|
32
|
+
return (Math.round(v * k + offset) - offset) / k;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Where a tick at `p` CSS px along the ruler stands: its `start` and `width`
|
|
36
|
+
* along it in CSS px, whole device pixels — as many as a CSS px holds, one at
|
|
37
|
+
* least — so every tick lands as sharp and as dark as the next however the
|
|
38
|
+
* zoom and the dpr place it.
|
|
39
|
+
*/
|
|
40
|
+
function tickSpan(ctx, p, orient) {
|
|
41
|
+
const k = ctx.getTransform().a;
|
|
42
|
+
const width = Math.max(1, Math.round(k)) / k;
|
|
43
|
+
return { start: snap(ctx, p - width / 2, orient === "h" ? "x" : "y"), width };
|
|
44
|
+
}
|
|
45
|
+
/** The centre of the tick at `p` — where a control standing on it centres. */
|
|
46
|
+
function tickCenter(ctx, p, orient) {
|
|
47
|
+
const { start, width } = tickSpan(ctx, p, orient);
|
|
48
|
+
return start + width / 2;
|
|
49
|
+
}
|
|
50
|
+
/** Fill a tick at `p`, `len` CSS px long, hanging from the inner edge of a strip
|
|
51
|
+
* `thickness` deep — its ends on device pixel edges too. */
|
|
52
|
+
function tick(ctx, color, p, len, thickness, orient) {
|
|
53
|
+
const { start, width } = tickSpan(ctx, p, orient);
|
|
54
|
+
const across = orient === "h" ? "y" : "x";
|
|
55
|
+
const top = snap(ctx, thickness - len, across);
|
|
56
|
+
const bottom = snap(ctx, thickness, across);
|
|
57
|
+
ctx.fillStyle = color;
|
|
58
|
+
if (orient === "h")
|
|
59
|
+
ctx.fillRect(start, top, width, bottom - top);
|
|
60
|
+
else
|
|
61
|
+
ctx.fillRect(top, start, bottom - top, width);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Draw one ruler into its strip, `length` CSS px long and `thickness` deep: the
|
|
65
|
+
* selection's span and the margins of the text a caret edits behind it, then
|
|
66
|
+
* its graduation over the page.
|
|
67
|
+
*/
|
|
68
|
+
function drawAxis(canvas, ctx, axis, length, thickness, orient) {
|
|
69
|
+
const { colors, extent, scale } = canvas;
|
|
21
70
|
// Shift the horizontal ruler's marks (along x) to ride the content canvas
|
|
22
71
|
// mid-resize; the vertical ruler tracks height, which isn't shifted. See
|
|
23
72
|
// `GuideBands.setContentShift`. `0` when settled.
|
|
73
|
+
const shift = orient === "h" ? canvas.shiftX : 0;
|
|
24
74
|
ctx.save();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
75
|
+
ctx.translate(shift, 0);
|
|
76
|
+
/** Where `points` from the origin falls in the strip, CSS px. */
|
|
77
|
+
const at = (points) => axis.origin + points * scale;
|
|
78
|
+
// Each span ends on device pixel edges, so a margin's edge meets its fill
|
|
79
|
+
// without a sliver of another between them.
|
|
80
|
+
const span = (from, to, color) => {
|
|
81
|
+
const along = orient === "h" ? "x" : "y";
|
|
82
|
+
const start = snap(ctx, from, along);
|
|
83
|
+
const end = snap(ctx, to, along);
|
|
84
|
+
if (end <= start)
|
|
85
|
+
return;
|
|
86
|
+
ctx.fillStyle = color;
|
|
87
|
+
if (orient === "h")
|
|
88
|
+
ctx.fillRect(start, 0, end - start, thickness);
|
|
89
|
+
else
|
|
90
|
+
ctx.fillRect(0, start, thickness, end - start);
|
|
91
|
+
};
|
|
92
|
+
// The selection's span lights up behind the marks; while a caret edits
|
|
93
|
+
// text, its text area does, between the darker margins of the page. All
|
|
94
|
+
// ride the shift with the marks, so they keep their reading against them.
|
|
95
|
+
if (extent) {
|
|
32
96
|
if (orient === "h")
|
|
33
|
-
|
|
97
|
+
span(extent.x0, extent.x1, colors.range);
|
|
34
98
|
else
|
|
35
|
-
|
|
36
|
-
|
|
99
|
+
span(extent.y0, extent.y1, colors.range);
|
|
100
|
+
}
|
|
101
|
+
const { page, margins } = axis;
|
|
102
|
+
if (margins) {
|
|
103
|
+
span(at(page.start), at(margins.start), colors.margin);
|
|
104
|
+
span(at(margins.start), at(margins.end), colors.range);
|
|
105
|
+
span(at(margins.end), at(page.end), colors.margin);
|
|
106
|
+
// Each margin's edge, a line the ruler's depth on the tick its fill
|
|
107
|
+
// ends at, in the soft `grid` of the ticks — drawn here with the fills
|
|
108
|
+
// it bounds, the strip a drag takes it by over it (ruler-controls.ts).
|
|
109
|
+
tick(ctx, colors.grid, at(margins.start), thickness, thickness, orient);
|
|
110
|
+
tick(ctx, colors.grid, at(margins.end), thickness, thickness, orient);
|
|
111
|
+
}
|
|
112
|
+
// Graduate the page in inches, as finely as the zoom leaves room for, the
|
|
113
|
+
// figures counting outward from the origin — only where the strip shows.
|
|
114
|
+
const inch = POINTS_PER_INCH * scale;
|
|
115
|
+
const subdivisions = SUBDIVISIONS.find((n) => inch / n >= MIN_TICK_GAP) ?? 1;
|
|
116
|
+
const figureStep = FIGURE_STEPS.find((n) => inch * n >= MIN_FIGURE_GAP) ?? FIGURE_STEPS[FIGURE_STEPS.length - 1];
|
|
117
|
+
const step = POINTS_PER_INCH / subdivisions;
|
|
118
|
+
const from = Math.max(page.start, (-shift - axis.origin) / scale);
|
|
119
|
+
const to = Math.min(page.end, (length - shift - axis.origin) / scale);
|
|
120
|
+
const size = Math.min(11, Math.max(8, thickness * 0.5));
|
|
121
|
+
ctx.font = `${size}px ${UI_FONT}`;
|
|
122
|
+
const inchLen = thickness * 0.3;
|
|
123
|
+
const figCenter = (thickness - inchLen) / 2;
|
|
124
|
+
for (let n = Math.ceil(from / step); n <= Math.floor(to / step); n++) {
|
|
125
|
+
const p = at(n * step);
|
|
126
|
+
// An inch, a half, or a short tick at each finer division — as Word
|
|
127
|
+
// and Google Docs graduate, three lengths a glance tells apart.
|
|
128
|
+
const len = n % subdivisions === 0 ? inchLen : n % (subdivisions / 2) === 0 ? thickness * 0.22 : thickness * 0.14;
|
|
129
|
+
// Ticks hang from the inner (content) edge toward the outer, on the
|
|
130
|
+
// soft `grid` they share with the ruler edge and the header separators.
|
|
131
|
+
tick(ctx, colors.grid, p, len, thickness, orient);
|
|
132
|
+
const inches = n / subdivisions;
|
|
133
|
+
if (n % subdivisions === 0 && inches % figureStep === 0) {
|
|
134
|
+
const figure = String(Math.abs(inches));
|
|
135
|
+
const c = tickCenter(ctx, p, orient);
|
|
37
136
|
ctx.fillStyle = colors.text;
|
|
38
137
|
if (orient === "h")
|
|
39
|
-
ctx.fillText(
|
|
138
|
+
ctx.fillText(figure, c, figCenter);
|
|
40
139
|
else
|
|
41
|
-
ctx.fillText(
|
|
140
|
+
ctx.fillText(figure, figCenter, c);
|
|
42
141
|
}
|
|
43
142
|
}
|
|
44
143
|
ctx.restore();
|
|
45
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Where the controls stand along the ruler `axis` drew in `strip`: on its
|
|
147
|
+
* ticks, riding the top ruler's shift with them (see {@link drawAxis}).
|
|
148
|
+
*/
|
|
149
|
+
function placement(canvas, strip, axis, orient) {
|
|
150
|
+
const shift = orient === "h" ? canvas.shiftX : 0;
|
|
151
|
+
return {
|
|
152
|
+
layer: canvas.layer(orient === "h" ? "top" : "left"),
|
|
153
|
+
pane: canvas.layer("pane"),
|
|
154
|
+
axis,
|
|
155
|
+
origin: axis.origin + shift,
|
|
156
|
+
scale: canvas.scale,
|
|
157
|
+
at: (points) => tickCenter(strip.ctx, axis.origin + points * canvas.scale + shift, orient),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
46
160
|
/**
|
|
47
161
|
* Fill the ruler's corner box and mark only the junction dot — the single
|
|
48
162
|
* pixel both the top ruler's bottom edge and the left ruler's right edge pass
|
|
@@ -59,32 +173,59 @@ function drawCorner(canvas) {
|
|
|
59
173
|
ctx.fillStyle = canvas.colors.grid;
|
|
60
174
|
ctx.fillRect(w - 1, h - 1, 1, 1);
|
|
61
175
|
}
|
|
62
|
-
|
|
176
|
+
/** Draw `guide`'s rulers into `canvas`'s strips, and stand `controls` over them,
|
|
177
|
+
* those `movable` refuses fixed. */
|
|
178
|
+
function drawRuler(guide, canvas, controls, movable) {
|
|
63
179
|
const { colors } = canvas;
|
|
64
180
|
const top = canvas.prepare("top");
|
|
65
|
-
if (top
|
|
66
|
-
drawAxis(canvas, top.ctx, guide.horizontal, top.h, "h");
|
|
181
|
+
if (top) {
|
|
182
|
+
drawAxis(canvas, top.ctx, guide.horizontal, top.w, top.h, "h");
|
|
67
183
|
// The ruler's inner (content-facing) edge line — a baseline the ticks
|
|
68
184
|
// hang from, framing the ruler off the page below (mirrors the header
|
|
69
185
|
// band's bottom border). The same soft `grid` as the ticks.
|
|
70
186
|
stroke(top.ctx, colors.grid, 0, top.h - 0.5, top.w, top.h - 0.5);
|
|
71
187
|
}
|
|
72
188
|
const left = canvas.prepare("left");
|
|
73
|
-
if (left
|
|
74
|
-
drawAxis(canvas, left.ctx, guide.vertical, left.w, "v");
|
|
189
|
+
if (left) {
|
|
190
|
+
drawAxis(canvas, left.ctx, guide.vertical, left.h, left.w, "v");
|
|
75
191
|
stroke(left.ctx, colors.grid, left.w - 0.5, 0, left.w - 0.5, left.h);
|
|
76
192
|
}
|
|
77
193
|
drawCorner(canvas);
|
|
194
|
+
controls.place(top && placement(canvas, top, guide.horizontal, "h"), left && placement(canvas, left, guide.vertical, "v"), guide.text ?? null, movable);
|
|
195
|
+
}
|
|
196
|
+
/** The ruler band, with controls of its own — one per editor, whose edits run
|
|
197
|
+
* through the `host` edit mode lends once it is mounted. Paints only a ruler
|
|
198
|
+
* projection; any other leaves the strips cleared to their band background
|
|
199
|
+
* until one lands. */
|
|
200
|
+
export function createRuler(host) {
|
|
201
|
+
/** The projection the controls last stood on — what a drop is read off. */
|
|
202
|
+
let placed = null;
|
|
203
|
+
/** Send the edit `drop` means to the open document, as one undo step; null
|
|
204
|
+
* where it means none. */
|
|
205
|
+
const drop = (drop) => {
|
|
206
|
+
const lent = host();
|
|
207
|
+
const state = lent?.store.getState();
|
|
208
|
+
const edit = placed && state?.docType && rulerEdit(drop, placed, state.docType, editState(state).selectionRuler);
|
|
209
|
+
if (!lent || !edit)
|
|
210
|
+
return null;
|
|
211
|
+
return lent.commit(() => lent.client.executeOnSelection(edit));
|
|
212
|
+
};
|
|
213
|
+
const controls = createRulerControls(THICKNESS, drop);
|
|
214
|
+
return {
|
|
215
|
+
thickness: THICKNESS,
|
|
216
|
+
draw(guide, canvas) {
|
|
217
|
+
if (guide.type !== "ruler")
|
|
218
|
+
return;
|
|
219
|
+
placed = guide;
|
|
220
|
+
const state = host()?.store.getState();
|
|
221
|
+
const docType = state?.docType;
|
|
222
|
+
const movable = (control) => !!state &&
|
|
223
|
+
!!docType &&
|
|
224
|
+
rulerMovable(control, guide, docType, state.selectionCaps, editState(state).selectionRuler);
|
|
225
|
+
drawRuler(guide, canvas, controls, movable);
|
|
226
|
+
},
|
|
227
|
+
};
|
|
78
228
|
}
|
|
79
|
-
/** The ruler band. Paints only a ruler projection; any other leaves the strips
|
|
80
|
-
* cleared to their band background until one lands. */
|
|
81
|
-
export const RULER = {
|
|
82
|
-
thickness: 22,
|
|
83
|
-
draw(guide, canvas) {
|
|
84
|
-
if (guide.type === "ruler")
|
|
85
|
-
drawRuler(guide, canvas);
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
229
|
/** Whether the ruler shows in `state`: a ruled doc type in edit mode, with the
|
|
89
230
|
* preference on. */
|
|
90
231
|
export function rulerShown(state) {
|
package/dist/ruler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruler.js","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKxD,sEAAsE;AACtE,MAAM,KAAK,GAA0B,IAAI,GAAG,CAAW,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAEvG,wEAAwE;AACxE,MAAM,OAAO,GAAG,sEAAsE,CAAC;AAEvF,SAAS,MAAM,CAAC,GAA6B,EAAE,KAAa,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IACxG,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CACb,MAAkB,EAClB,GAA6B,EAC7B,IAAe,EACf,SAAiB,EACjB,MAAiB;IAEjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,MAAM,OAAO,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC;IACjC,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAClC,MAAM,SAAS,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,yEAAyE;IACzE,kDAAkD;IAClD,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,IAAI,MAAM,KAAK,GAAG;QAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,oEAAoE;QACpE,wEAAwE;QACxE,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;;YAC1E,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,IAAI,MAAM,KAAK,GAAG;gBAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;;gBAC5D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IACD,GAAG,CAAC,OAAO,EAAE,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,MAAkB;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,KAAiB,EAAE,MAAkB;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,sEAAsE;QACtE,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AAED;wDACwD;AACxD,MAAM,CAAC,MAAM,KAAK,GAAc;IAC5B,SAAS,EAAE,EAAE;IACb,IAAI,CAAC,KAAK,EAAE,MAAM;QACd,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;CACJ,CAAC;AAEF;qBACqB;AACrB,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,KAA6B,EAAE,OAAgB;IACxE,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"ruler.js","sourceRoot":"","sources":["../src/ruler.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FontFamilySummary } from "@docmentis/udoc-wasm";
|
|
2
2
|
import type { Action, CommandContext, SelectionPaint, SelectionTextFormat, Store, ThemePalette, UIState } from "@docmentis/udoc-ui/internal";
|
|
3
3
|
import type { EditorMode } from "./mode.js";
|
|
4
|
+
import type { SelectionRuler } from "./ruler-edits.js";
|
|
4
5
|
export interface EditState {
|
|
5
6
|
/**
|
|
6
7
|
* Whether formatting marks (`¶`, a dot per space, a tab's arrow, `↵`) are
|
|
@@ -62,6 +63,12 @@ export interface EditState {
|
|
|
62
63
|
* open, a channel the doc type doesn't surface, or none.
|
|
63
64
|
*/
|
|
64
65
|
selectionPaint: SelectionPaint;
|
|
66
|
+
/**
|
|
67
|
+
* What a drop on the ruler moves from — the selection's resolved indents
|
|
68
|
+
* and tab stops, and its shape's text insets. Pushed from the worker's
|
|
69
|
+
* selection reports, projected from the engine's selection properties.
|
|
70
|
+
*/
|
|
71
|
+
selectionRuler: SelectionRuler;
|
|
65
72
|
/** The modes the host lets the user switch between (drives the mode
|
|
66
73
|
* switcher, which offers those the session is entitled to —
|
|
67
74
|
* `modeEntitled`). */
|
package/dist/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,OAAO,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAElC;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE3C;;;;;;;OAOG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;;;;;OAMG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;2BAEuB;IACvB,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAEpC;sCACkC;IAClC,cAAc,EAAE,OAAO,CAAC;IAExB;;kDAE8C;IAC9C,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,OAAO,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACtB;;;;;;OAMG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAElC;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAE3C;;;;;;;OAOG;IACH,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,EAAE,mBAAmB,CAAC;IAEnC;;;;;;OAMG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;2BAEuB;IACvB,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAEpC;sCACkC;IAClC,cAAc,EAAE,OAAO,CAAC;IAExB;;kDAE8C;IAC9C,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,EAAE,SAYhC,CAAC;AAEF,oCAAoC;AACpC,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAEnD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,SAAS,CAE9D;AAED,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAE/F"}
|
package/dist/state.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EMPTY_SELECTION_PAINT, EMPTY_SELECTION_TEXT_FORMAT } from "@docmentis/udoc-ui/internal";
|
|
2
2
|
import { ALL_MODES } from "./mode.js";
|
|
3
|
+
import { EMPTY_SELECTION_RULER } from "./ruler-edits.js";
|
|
3
4
|
/** Edit mode's state at start. */
|
|
4
5
|
export const INITIAL_EDIT_STATE = {
|
|
5
6
|
showFormattingMarks: false,
|
|
@@ -9,6 +10,7 @@ export const INITIAL_EDIT_STATE = {
|
|
|
9
10
|
loadedFontFamilyNames: [],
|
|
10
11
|
selectionText: EMPTY_SELECTION_TEXT_FORMAT,
|
|
11
12
|
selectionPaint: EMPTY_SELECTION_PAINT,
|
|
13
|
+
selectionRuler: EMPTY_SELECTION_RULER,
|
|
12
14
|
allowedModes: ALL_MODES,
|
|
13
15
|
showModeSwitch: true,
|
|
14
16
|
alignToPage: false,
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAUjG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAUjG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA6FzD,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAc;IACzC,mBAAmB,EAAE,KAAK;IAC1B,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,EAAE;IAChB,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,2BAA2B;IAC1C,cAAc,EAAE,qBAAqB;IACrC,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,KAAK;CACrB,CAAC;AAEF,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,SAAsB,CAAC;AACxC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,OAAuB;IAC/C,OAAO,OAAO,CAAC,SAAsB,CAAC;AAC1C,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,KAA6B,EAAE,MAA0B;IACrF,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9G,CAAC"}
|
package/dist/styles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,QAg1BxB,CAAC"}
|
package/dist/styles.js
CHANGED
|
@@ -754,5 +754,104 @@ export const editorStyles = css `
|
|
|
754
754
|
border: 1.5px solid #b8860b;
|
|
755
755
|
will-change: transform;
|
|
756
756
|
}
|
|
757
|
+
|
|
758
|
+
/* The ruler's controls (ruler-controls.ts), in the layers over its strips:
|
|
759
|
+
each margin's edge, and the indent markers and tab stops of the paragraph a
|
|
760
|
+
caret is in. Each takes its own press, where the layer under them takes
|
|
761
|
+
none; placed along the ruler each frame by left (or top) in CSS px. */
|
|
762
|
+
.udoc-ui-root .udoc-ui__ruler-control {
|
|
763
|
+
position: absolute;
|
|
764
|
+
pointer-events: auto;
|
|
765
|
+
touch-action: none;
|
|
766
|
+
}
|
|
767
|
+
/* A margin's edge: a strip a few px wide to grab, over the line the band's
|
|
768
|
+
canvas draws at rest — with the fills it bounds, so the two meet without a
|
|
769
|
+
seam. While dragged, the strip carries a line of its own down its middle,
|
|
770
|
+
in the same soft outline as the ticks. */
|
|
771
|
+
.udoc-ui-root .udoc-ui__ruler-edge--h {
|
|
772
|
+
top: 0;
|
|
773
|
+
bottom: 0;
|
|
774
|
+
width: 7px;
|
|
775
|
+
cursor: col-resize;
|
|
776
|
+
}
|
|
777
|
+
.udoc-ui-root .udoc-ui__ruler-edge--v {
|
|
778
|
+
left: 0;
|
|
779
|
+
right: 0;
|
|
780
|
+
height: 7px;
|
|
781
|
+
cursor: row-resize;
|
|
782
|
+
}
|
|
783
|
+
.udoc-ui-root .udoc-ui__ruler-edge::after {
|
|
784
|
+
content: "";
|
|
785
|
+
position: absolute;
|
|
786
|
+
background: var(--udoc-color-outline-variant);
|
|
787
|
+
display: none;
|
|
788
|
+
}
|
|
789
|
+
.udoc-ui-root .udoc-ui__ruler-control--dragging::after {
|
|
790
|
+
display: block;
|
|
791
|
+
}
|
|
792
|
+
.udoc-ui-root .udoc-ui__ruler-edge--h::after {
|
|
793
|
+
top: 0;
|
|
794
|
+
bottom: 0;
|
|
795
|
+
left: 3px;
|
|
796
|
+
width: 1px;
|
|
797
|
+
}
|
|
798
|
+
.udoc-ui-root .udoc-ui__ruler-edge--v::after {
|
|
799
|
+
left: 0;
|
|
800
|
+
right: 0;
|
|
801
|
+
top: 3px;
|
|
802
|
+
height: 1px;
|
|
803
|
+
}
|
|
804
|
+
/* The dashed line a drag on a ruler control draws across the content pane
|
|
805
|
+
at it, as Word's does — down from the horizontal ruler, across from the
|
|
806
|
+
vertical — in the outline that reads over a page and the canvas alike. */
|
|
807
|
+
.udoc-ui-root .udoc-ui__ruler-guide {
|
|
808
|
+
position: absolute;
|
|
809
|
+
pointer-events: none;
|
|
810
|
+
}
|
|
811
|
+
.udoc-ui-root .udoc-ui__ruler-guide--h {
|
|
812
|
+
top: 0;
|
|
813
|
+
bottom: 0;
|
|
814
|
+
border-left: 1px dashed var(--udoc-color-outline);
|
|
815
|
+
}
|
|
816
|
+
.udoc-ui-root .udoc-ui__ruler-guide--v {
|
|
817
|
+
left: 0;
|
|
818
|
+
right: 0;
|
|
819
|
+
border-top: 1px dashed var(--udoc-color-outline);
|
|
820
|
+
}
|
|
821
|
+
.udoc-ui-root .udoc-ui__ruler-marker svg {
|
|
822
|
+
display: block;
|
|
823
|
+
overflow: visible;
|
|
824
|
+
}
|
|
825
|
+
/* An indent marker: filled as the text area it stands on, outlined. Its box
|
|
826
|
+
runs the ruler's depth, and takes a press only on the shape, so beside the
|
|
827
|
+
hourglass's narrow waist one reaches the margin's edge under it. */
|
|
828
|
+
.udoc-ui-root .udoc-ui__ruler-marker--indent {
|
|
829
|
+
top: 0;
|
|
830
|
+
pointer-events: none;
|
|
831
|
+
}
|
|
832
|
+
.udoc-ui-root .udoc-ui__ruler-marker--indent path {
|
|
833
|
+
fill: var(--udoc-color-surface-container-highest);
|
|
834
|
+
stroke: var(--udoc-color-outline);
|
|
835
|
+
stroke-width: 1px;
|
|
836
|
+
stroke-linejoin: round;
|
|
837
|
+
pointer-events: visiblePainted;
|
|
838
|
+
}
|
|
839
|
+
/* A tab stop's mark, in the ruler's figures' ink. */
|
|
840
|
+
.udoc-ui-root .udoc-ui__ruler-marker--tab path {
|
|
841
|
+
fill: none;
|
|
842
|
+
stroke: var(--udoc-color-on-surface-variant);
|
|
843
|
+
stroke-width: 1px;
|
|
844
|
+
}
|
|
845
|
+
.udoc-ui-root .udoc-ui__ruler-marker--tab rect {
|
|
846
|
+
fill: var(--udoc-color-on-surface-variant);
|
|
847
|
+
}
|
|
848
|
+
/* A control the open document can't move now — the engine gates its edit
|
|
849
|
+
off, or the selected paragraphs disagree on what it shows: it stands where
|
|
850
|
+
the guide puts it and takes no press. After the indent's path rule, which
|
|
851
|
+
it outranks at the same specificity. */
|
|
852
|
+
.udoc-ui-root .udoc-ui__ruler-control--fixed,
|
|
853
|
+
.udoc-ui-root .udoc-ui__ruler-control--fixed path {
|
|
854
|
+
pointer-events: none;
|
|
855
|
+
}
|
|
757
856
|
`;
|
|
758
857
|
//# sourceMappingURL=styles.js.map
|
package/dist/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mDAAmD;AACnD,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,4BAA4B;AAC5B,MAAM,GAAG,GAAG,CAAC,OAA6B,EAAE,GAAG,MAAiB,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;AAErH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mDAAmD;AACnD,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,4BAA4B;AAC5B,MAAM,GAAG,GAAG,CAAC,OAA6B,EAAE,GAAG,MAAiB,EAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC;AAErH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAg1B9B,CAAC"}
|
package/dist/tabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,uEAAuE;AACvE,MAAM,MAAM,aAAa,GACnB,SAAS,GACT,YAAY,GACZ,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,GACX,eAAe,GACf,aAAa,GACb,WAAW,GACX,YAAY,GACZ,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,aAAa,CAAC;AAEpB,4BAA4B;AAC5B,KAAK,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,uEAAuE;AACvE,MAAM,MAAM,aAAa,GACnB,SAAS,GACT,YAAY,GACZ,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,GACX,eAAe,GACf,aAAa,GACb,WAAW,GACX,YAAY,GACZ,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,aAAa,CAAC;AAEpB,4BAA4B;AAC5B,KAAK,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AA8JtC,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,OAAO,EAAE,CAWrE"}
|
package/dist/tabs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ANNOTATE_TAB } from "@docmentis/udoc-ui/internal";
|
|
1
|
+
import { ANNOTATE_TAB, VIEW_TAB } from "@docmentis/udoc-ui/internal";
|
|
2
2
|
/**
|
|
3
3
|
* The text-formatting commands — the character half first (the font family /
|
|
4
4
|
* size fields, the Bold / Italic / Underline / Strikethrough / Superscript /
|
|
@@ -127,12 +127,14 @@ const DEFAULT_TABS = [HOME_TAB];
|
|
|
127
127
|
* content objects) and Annotate, but no Text tab. */
|
|
128
128
|
const PORTABLE_TABS = [PORTABLE_HOME_TAB, PORTABLE_INSERT_TAB, OBJECT_TAB, ANNOTATE_TAB];
|
|
129
129
|
/** The presentation strip: the slide-aware Home and its own Insert, then Text
|
|
130
|
-
* (character formatting) and Shape (free-floating graphics)
|
|
130
|
+
* (character formatting) and Shape (free-floating graphics), and udoc-ui's
|
|
131
|
+
* View last (the notes pane), as view mode has it. */
|
|
131
132
|
const PRESENTATION_TABS = [
|
|
132
133
|
PRESENTATION_HOME_TAB,
|
|
133
134
|
PRESENTATION_INSERT_TAB,
|
|
134
135
|
PRESENTATION_TEXT_TAB,
|
|
135
136
|
SHAPE_TAB,
|
|
137
|
+
VIEW_TAB,
|
|
136
138
|
];
|
|
137
139
|
/** The wordprocessing strip: Home plus Text. No Shape tab yet — the flow
|
|
138
140
|
* document has no free-floating shapes. */
|
package/dist/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../src/tabs.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const WRAPPER_VERSION = "0.8.
|
|
1
|
+
export declare const WRAPPER_VERSION = "0.8.7";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
// This package's version, reported to the engine as the wrapper version so a
|
|
4
4
|
// permit request and a usage event can name what produced them. Generated from
|
|
5
5
|
// package.json, which is the one place a release bumps.
|
|
6
|
-
export const WRAPPER_VERSION = "0.8.
|
|
6
|
+
export const WRAPPER_VERSION = "0.8.7";
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/worker/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,2DAA2D;AAC3D,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAAE,CAAC;AAE9G,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/worker/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,2DAA2D;AAC3D,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAAE,CAAC;AAE9G,eAAO,MAAM,aAAa,EAAE,YAqI3B,CAAC"}
|
package/dist/worker/handlers.js
CHANGED
|
@@ -5,7 +5,7 @@ export const EDIT_HANDLERS = {
|
|
|
5
5
|
handle(request, worker) {
|
|
6
6
|
// Sticky in Rust, like the scroll mode. Only the clip changes, so
|
|
7
7
|
// a full repaint paints off-page content in (or clips it out).
|
|
8
|
-
worker.session?.setOverflowVisible(request.visible);
|
|
8
|
+
worker.session?.setOverflowVisible(worker.viewer, request.visible);
|
|
9
9
|
worker.scheduleFrame();
|
|
10
10
|
},
|
|
11
11
|
},
|
|
@@ -13,8 +13,13 @@ export const EDIT_HANDLERS = {
|
|
|
13
13
|
sticky: true,
|
|
14
14
|
handle(request, worker) {
|
|
15
15
|
// Sticky in Rust, like the backdrop. Only presentations draw
|
|
16
|
-
// prompts
|
|
17
|
-
|
|
16
|
+
// prompts — on every viewer, so empty notes prompt in their pane
|
|
17
|
+
// as an empty placeholder does on the slide; a full repaint
|
|
18
|
+
// shows/clears them on the next frame.
|
|
19
|
+
const session = worker.session;
|
|
20
|
+
if (session)
|
|
21
|
+
for (let v = 0; v < session.viewerCount(); v++)
|
|
22
|
+
session.setPlaceholderPrompts(v, request.on);
|
|
18
23
|
worker.scheduleFrame();
|
|
19
24
|
},
|
|
20
25
|
},
|
|
@@ -23,7 +28,7 @@ export const EDIT_HANDLERS = {
|
|
|
23
28
|
handle(request, worker) {
|
|
24
29
|
// Sticky in Rust, like the backdrop; a full repaint shows or
|
|
25
30
|
// clears the marks on the next frame.
|
|
26
|
-
worker.session?.setFormattingMarks(request.on);
|
|
31
|
+
worker.session?.setFormattingMarks(worker.viewer, request.on);
|
|
27
32
|
worker.scheduleFrame();
|
|
28
33
|
},
|
|
29
34
|
},
|
|
@@ -32,8 +37,8 @@ export const EDIT_HANDLERS = {
|
|
|
32
37
|
// single document theme for a word doc — a pure read. `null` when no
|
|
33
38
|
// document is open or the doc type carries no theme (PDF / image); the
|
|
34
39
|
// host then keeps its stand-in.
|
|
35
|
-
handle(_request, { session }) {
|
|
36
|
-
const json = session?.themePalette();
|
|
40
|
+
handle(_request, { session, viewer }) {
|
|
41
|
+
const json = session?.themePalette(viewer);
|
|
37
42
|
return json !== undefined ? JSON.parse(json) : null;
|
|
38
43
|
},
|
|
39
44
|
},
|
|
@@ -80,8 +85,9 @@ export const EDIT_HANDLERS = {
|
|
|
80
85
|
// guide, so the host can draw the grip on its own track instead of under
|
|
81
86
|
// the raw cursor. A pure read, no edit, no repaint; `null` when the
|
|
82
87
|
// selection offers no such handle.
|
|
83
|
-
handle: (request, { session }) => session
|
|
84
|
-
? (session.selectionHandlePreview(request.textWarp, request.index, request.x, request.y) ??
|
|
88
|
+
handle: (request, { session, viewer }) => session
|
|
89
|
+
? (session.selectionHandlePreview(viewer, request.textWarp, request.index, request.x, request.y) ??
|
|
90
|
+
null)
|
|
85
91
|
: null,
|
|
86
92
|
},
|
|
87
93
|
slideMastersSummary: {
|
|
@@ -109,7 +115,7 @@ export const EDIT_HANDLERS = {
|
|
|
109
115
|
// already doc-type-tagged (from `copy`), so it crosses as-is. A
|
|
110
116
|
// committing edit like `execute`: the layout rides back, the
|
|
111
117
|
// selection re-posts, history updates, repaint.
|
|
112
|
-
session.paste(request.fragment);
|
|
118
|
+
session.paste(worker.viewer, request.fragment);
|
|
113
119
|
return worker.committed(session);
|
|
114
120
|
},
|
|
115
121
|
},
|
|
@@ -121,7 +127,7 @@ export const EDIT_HANDLERS = {
|
|
|
121
127
|
// A committing edit like `execute`: the picture lands on the
|
|
122
128
|
// current page and is selected, so the layout rides back, the
|
|
123
129
|
// selection re-posts, history updates, and a repaint redraws.
|
|
124
|
-
session.insertImage(new Uint8Array(request.bytes), request.contentType);
|
|
130
|
+
session.insertImage(worker.viewer, new Uint8Array(request.bytes), request.contentType);
|
|
125
131
|
return worker.committed(session);
|
|
126
132
|
},
|
|
127
133
|
},
|