@docmentis/udoc-editor 0.8.5 → 0.8.6
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/edit-mode.d.ts.map +1 -1
- package/dist/edit-mode.js +5 -2
- package/dist/edit-mode.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/version.d.ts +1 -1
- package/dist/version.js +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":"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"}
|
|
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/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const WRAPPER_VERSION = "0.8.
|
|
1
|
+
export declare const WRAPPER_VERSION = "0.8.6";
|
|
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.6";
|
|
7
7
|
//# sourceMappingURL=version.js.map
|