@docmentis/udoc-editor 0.8.15 → 0.8.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/commands.d.ts.map +1 -1
  2. package/dist/commands.js +51 -9
  3. package/dist/commands.js.map +1 -1
  4. package/dist/components/PageControls.d.ts +13 -6
  5. package/dist/components/PageControls.d.ts.map +1 -1
  6. package/dist/components/PageControls.js +42 -33
  7. package/dist/components/PageControls.js.map +1 -1
  8. package/dist/components/PageSettingsModal.d.ts +0 -2
  9. package/dist/components/PageSettingsModal.d.ts.map +1 -1
  10. package/dist/components/PageSettingsModal.js +54 -56
  11. package/dist/components/PageSettingsModal.js.map +1 -1
  12. package/dist/components/{NewSlideModal.d.ts → SlideLayoutModal.d.ts} +15 -11
  13. package/dist/components/SlideLayoutModal.d.ts.map +1 -0
  14. package/dist/components/{NewSlideModal.js → SlideLayoutModal.js} +34 -18
  15. package/dist/components/SlideLayoutModal.js.map +1 -0
  16. package/dist/docmentis-theme.d.ts +4 -0
  17. package/dist/docmentis-theme.d.ts.map +1 -0
  18. package/dist/docmentis-theme.js +6 -0
  19. package/dist/docmentis-theme.js.map +1 -0
  20. package/dist/edit-client.d.ts +9 -1
  21. package/dist/edit-client.d.ts.map +1 -1
  22. package/dist/edit-client.js +10 -0
  23. package/dist/edit-client.js.map +1 -1
  24. package/dist/edit-command.d.ts +3 -1
  25. package/dist/edit-command.d.ts.map +1 -1
  26. package/dist/edit-command.js +7 -0
  27. package/dist/edit-command.js.map +1 -1
  28. package/dist/edit-mode.d.ts.map +1 -1
  29. package/dist/edit-mode.js +22 -10
  30. package/dist/edit-mode.js.map +1 -1
  31. package/dist/editor.d.ts +7 -6
  32. package/dist/editor.d.ts.map +1 -1
  33. package/dist/editor.js +6 -5
  34. package/dist/editor.js.map +1 -1
  35. package/dist/i18n/ar.js +10 -10
  36. package/dist/i18n/ar.js.map +1 -1
  37. package/dist/i18n/de.js +10 -10
  38. package/dist/i18n/de.js.map +1 -1
  39. package/dist/i18n/en.js +10 -10
  40. package/dist/i18n/en.js.map +1 -1
  41. package/dist/i18n/es.js +10 -10
  42. package/dist/i18n/es.js.map +1 -1
  43. package/dist/i18n/fr.js +10 -10
  44. package/dist/i18n/fr.js.map +1 -1
  45. package/dist/i18n/ja.js +10 -10
  46. package/dist/i18n/ja.js.map +1 -1
  47. package/dist/i18n/ko.js +10 -10
  48. package/dist/i18n/ko.js.map +1 -1
  49. package/dist/i18n/messages.d.ts +18 -18
  50. package/dist/i18n/messages.d.ts.map +1 -1
  51. package/dist/i18n/pt-BR.js +10 -10
  52. package/dist/i18n/pt-BR.js.map +1 -1
  53. package/dist/i18n/ru.js +10 -10
  54. package/dist/i18n/ru.js.map +1 -1
  55. package/dist/i18n/zh-CN.js +10 -10
  56. package/dist/i18n/zh-CN.js.map +1 -1
  57. package/dist/i18n/zh-TW.js +10 -10
  58. package/dist/i18n/zh-TW.js.map +1 -1
  59. package/dist/icons.d.ts +24 -0
  60. package/dist/icons.d.ts.map +1 -1
  61. package/dist/icons.js +24 -0
  62. package/dist/icons.js.map +1 -1
  63. package/dist/image.d.ts +11 -7
  64. package/dist/image.d.ts.map +1 -1
  65. package/dist/image.js +44 -7
  66. package/dist/image.js.map +1 -1
  67. package/dist/insert.d.ts +24 -12
  68. package/dist/insert.d.ts.map +1 -1
  69. package/dist/insert.js +306 -51
  70. package/dist/insert.js.map +1 -1
  71. package/dist/line-edit.d.ts +30 -0
  72. package/dist/line-edit.d.ts.map +1 -0
  73. package/dist/line-edit.js +87 -0
  74. package/dist/line-edit.js.map +1 -0
  75. package/dist/markup.d.ts +25 -5
  76. package/dist/markup.d.ts.map +1 -1
  77. package/dist/markup.js +73 -15
  78. package/dist/markup.js.map +1 -1
  79. package/dist/opacity.d.ts +19 -0
  80. package/dist/opacity.d.ts.map +1 -0
  81. package/dist/opacity.js +45 -0
  82. package/dist/opacity.js.map +1 -0
  83. package/dist/page-commands.d.ts +16 -0
  84. package/dist/page-commands.d.ts.map +1 -0
  85. package/dist/page-commands.js +122 -0
  86. package/dist/page-commands.js.map +1 -0
  87. package/dist/page-controls.d.ts +27 -1
  88. package/dist/page-controls.d.ts.map +1 -1
  89. package/dist/page-controls.js +30 -14
  90. package/dist/page-controls.js.map +1 -1
  91. package/dist/paint.d.ts +59 -12
  92. package/dist/paint.d.ts.map +1 -1
  93. package/dist/paint.js +225 -104
  94. package/dist/paint.js.map +1 -1
  95. package/dist/ruler-controls.d.ts +6 -0
  96. package/dist/ruler-controls.d.ts.map +1 -1
  97. package/dist/ruler-controls.js +18 -3
  98. package/dist/ruler-controls.js.map +1 -1
  99. package/dist/ruler-edits.d.ts +2 -5
  100. package/dist/ruler-edits.d.ts.map +1 -1
  101. package/dist/ruler-edits.js +13 -20
  102. package/dist/ruler-edits.js.map +1 -1
  103. package/dist/ruler.d.ts +7 -1
  104. package/dist/ruler.d.ts.map +1 -1
  105. package/dist/ruler.js +41 -11
  106. package/dist/ruler.js.map +1 -1
  107. package/dist/shape-gallery.d.ts +9 -4
  108. package/dist/shape-gallery.d.ts.map +1 -1
  109. package/dist/shape-gallery.js +9 -16
  110. package/dist/shape-gallery.js.map +1 -1
  111. package/dist/slide-commands.d.ts +38 -0
  112. package/dist/slide-commands.d.ts.map +1 -0
  113. package/dist/slide-commands.js +191 -0
  114. package/dist/slide-commands.js.map +1 -0
  115. package/dist/slide-shape.d.ts +24 -3
  116. package/dist/slide-shape.d.ts.map +1 -1
  117. package/dist/slide-shape.js +65 -10
  118. package/dist/slide-shape.js.map +1 -1
  119. package/dist/state.d.ts +12 -5
  120. package/dist/state.d.ts.map +1 -1
  121. package/dist/state.js +1 -0
  122. package/dist/state.js.map +1 -1
  123. package/dist/styles.d.ts.map +1 -1
  124. package/dist/styles.js +108 -63
  125. package/dist/styles.js.map +1 -1
  126. package/dist/tabs.d.ts +1 -1
  127. package/dist/tabs.d.ts.map +1 -1
  128. package/dist/tabs.js +99 -40
  129. package/dist/tabs.js.map +1 -1
  130. package/dist/text-format.d.ts.map +1 -1
  131. package/dist/text-format.js +2 -2
  132. package/dist/text-format.js.map +1 -1
  133. package/dist/version.d.ts +1 -1
  134. package/dist/version.js +1 -1
  135. package/dist/worker/handlers.d.ts.map +1 -1
  136. package/dist/worker/handlers.js +6 -0
  137. package/dist/worker/handlers.js.map +1 -1
  138. package/dist/worker/protocol.d.ts +13 -2
  139. package/dist/worker/protocol.d.ts.map +1 -1
  140. package/dist/worker/worker-source.js +1 -1
  141. package/package.json +3 -3
  142. package/dist/components/NewSlideModal.d.ts.map +0 -1
  143. package/dist/components/NewSlideModal.js.map +0 -1
  144. package/dist/new-slide.d.ts +0 -20
  145. package/dist/new-slide.d.ts.map +0 -1
  146. package/dist/new-slide.js +0 -90
  147. package/dist/new-slide.js.map +0 -1
package/dist/paint.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { PaintColor, PaintFill, PaintLine, UDocSelectionProperties } from "@docmentis/udoc-wasm";
1
+ import type { DeviceColor, PaintColor, PaintFill, PaintLine, UDocSelectionProperties } from "@docmentis/udoc-wasm";
2
2
  import type { LineDash, PaintChannel, PaintSpec, RibbonControl, RibbonControlEnv, StrokeStyle, UIShellHost } from "@docmentis/udoc-ui/internal";
3
3
  import type { EditTools } from "./tools.js";
4
4
  /** A picker paint as a `PaintColor`, or `null` for "no fill": a solid sRGB
@@ -13,34 +13,80 @@ export declare function paintToDrawingFill(paint: PaintSpec): PaintFill;
13
13
  * those drawn over an image — or null where they don't, or none is
14
14
  * selected. */
15
15
  export declare function selectionLine(properties: UDocSelectionProperties | null): PaintLine | null;
16
- /** A composed stroke the Line picker applies: its color plus the weight and
17
- * dash from the Weight / Dashes fly-outs. The shell lowers it to the doc type's
18
- * outline model (`DrawingML` `Line` / PDF stroking style). */
16
+ /** The Fill and Line panels' channels, which take an opacity. */
17
+ type OpacityChannel = "fill" | "stroke";
18
+ /**
19
+ * The opacity the selection's `channel` paints with, where it agrees on one: a PDF
20
+ * object's style's — a path's, an image's, a shading's, a text object's runs' — or
21
+ * a drawing shape's solid fill's or line's. Null where the selection differs, has
22
+ * no such side, or paints it with no one color — no fill, no line, a gradient, a
23
+ * pattern, a picture — as there's nothing to carry it.
24
+ */
25
+ export declare function selectionOpacity(properties: UDocSelectionProperties | null, channel: OpacityChannel): number | null;
26
+ /** What the Line panel last set: a side with no line takes it, as the line a
27
+ * weight, a dash or a color turns on. */
19
28
  export interface StrokeSpec {
20
29
  paint: PaintSpec;
21
30
  /** Stroke weight in points. */
22
31
  weight: number;
23
32
  dash: LineDash;
24
33
  }
34
+ /** A change to the selection's line, each part what the Line panel set: the color
35
+ * with the opacity the custom picker gave it, the weight or the dash. */
36
+ export interface StrokeChange {
37
+ paint?: PaintSpec;
38
+ opacity?: number | undefined;
39
+ weight?: number;
40
+ dash?: LineDash;
41
+ }
25
42
  /** The Fill / Line edits of the selection, on the shell `host` lends. */
26
43
  export declare function createPaintEdits(host: UIShellHost): {
27
- fillSelection: (paint: PaintSpec) => Promise<void>;
28
- strokeSelection: (stroke: StrokeSpec) => Promise<void>;
44
+ fillSelection: (paint: PaintSpec, opacity?: number) => Promise<void>;
45
+ strokeSelection: (change: StrokeChange, fallback: StrokeSpec) => Promise<void>;
46
+ setSelectionOpacity: (channel: OpacityChannel, opacity: number) => Promise<void>;
29
47
  };
30
48
  /** The Fill / Line edits {@link createPaintEdits} makes. */
31
49
  export type PaintEdits = ReturnType<typeof createPaintEdits>;
32
50
  /**
33
- * The last picks — edit mode's write-side memory: the color per channel that the
34
- * composed stroke re-sends when only its weight / dash change (the engine sets
35
- * the outline as one thing), and the weight / dash the Line panel marks. Not
36
- * shown on the triggers, which mirror the *selection*.
51
+ * The Object tab's Opacity button, for command `id` drawn with `icon`: the opacity
52
+ * of what the selected PDF objects paint with on their non-stroking side — a
53
+ * path's fill, an image, a shading, text.
54
+ */
55
+ export declare function objectOpacityControl(env: RibbonControlEnv, command: {
56
+ id: string;
57
+ icon: string;
58
+ }, tools: EditTools): RibbonControl;
59
+ /**
60
+ * What was last specified — edit mode's write-side memory, for as long as the
61
+ * editor is open, across the documents it opens. A new shape takes a side's color
62
+ * and opacity from it, over the document's default ({@link specifiedPaint}), and a
63
+ * side with no line takes its color, weight and dash when the Line panel turns it
64
+ * on. A No Fill or a No Line isn't a color, and leaves it be. Not shown on the
65
+ * triggers or the panel's marks, which mirror the *selection*.
37
66
  */
38
67
  export interface PaintMemory {
39
- readonly lastPaint: Record<PaintChannel, PaintSpec>;
68
+ /** The color last picked per channel, or null with none picked yet. */
69
+ readonly lastPaint: Record<PaintChannel, PaintSpec | null>;
70
+ /** The opacity last set per side, or null with none set yet. */
71
+ readonly lastOpacity: Record<OpacityChannel, number | null>;
40
72
  readonly lastStroke: StrokeStyle;
41
73
  }
42
- /** A {@link PaintMemory} at its defaults. */
74
+ /** A {@link PaintMemory} with nothing specified yet. */
43
75
  export declare function createPaintMemory(): PaintMemory;
76
+ /**
77
+ * What a new drawing shape paints `channel` with, from what was last specified: its
78
+ * color at its opacity, an opacity alone taking `defaultColor`. Null with neither
79
+ * specified, for the document's default.
80
+ */
81
+ export declare function specifiedPaint(memory: PaintMemory, channel: OpacityChannel, themed: boolean, defaultColor: PaintColor): PaintFill | null;
82
+ /** What a new PDF object paints `channel` with: the color last specified, else
83
+ * `defaultHex`, at the opacity last set, else opaque. */
84
+ export declare function specifiedPortablePaint(memory: PaintMemory, channel: OpacityChannel, defaultHex: string): {
85
+ color: DeviceColor;
86
+ alpha: number;
87
+ };
88
+ /** `hex` as a drawing color. */
89
+ export declare function drawingColorOf(hex: string): PaintColor;
44
90
  /**
45
91
  * A Fill / Line / Text Color dropdown of `channel`, for command `id` drawn with
46
92
  * `icon`: the channel glyph over a color bar reflecting the *selection's* color,
@@ -53,4 +99,5 @@ export declare function paintControl(env: RibbonControlEnv, command: {
53
99
  icon: string;
54
100
  channel: PaintChannel;
55
101
  }, tools: EditTools): RibbonControl;
102
+ export {};
56
103
  //# sourceMappingURL=paint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGR,UAAU,EAEV,SAAS,EACT,SAAS,EAGT,uBAAuB,EAE1B,MAAM,sBAAsB,CAAC;AAY9B,OAAO,KAAK,EACR,QAAQ,EACR,YAAY,EAEZ,SAAS,EAET,aAAa,EACb,gBAAgB,EAChB,WAAW,EAGX,WAAW,EACd,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQ5C;;;wEAGwE;AACxE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,CAcvE;AAED;gDACgD;AAChD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAG9D;AAwCD;;gBAEgB;AAChB,wBAAgB,aAAa,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAG1F;AA6CD;;+DAE+D;AAC/D,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CAClB;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW;2BAShB,SAAS,KAAG,OAAO,CAAC,IAAI,CAAC;8BAiBtB,UAAU,KAAG,OAAO,CAAC,IAAI,CAAC;EAkB9D;AAED,4DAA4D;AAC5D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAiB7D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;CACpC;AAED,6CAA6C;AAC7C,wBAAgB,iBAAiB,IAAI,WAAW,CAU/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,EAC5D,KAAK,EAAE,SAAS,GACjB,aAAa,CA4Ff"}
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
package/dist/paint.js CHANGED
@@ -1,4 +1,7 @@
1
- import { applyPaintBar, buildPaintPanel, createDropdownButton, DEFAULT_OFFICE_THEME, displayToActivePaint, drawingProperties, paintSwatch, profileFor, themeSwatches, } from "@docmentis/udoc-ui/internal";
1
+ import { applyPaintBar, buildOpacityPanel, buildPaintPanel, createDropdownButton, DEFAULT_OFFICE_THEME, displayToActivePaint, drawingProperties, paintSwatch, profileFor, themeSwatches, } from "@docmentis/udoc-ui/internal";
2
+ import { DOCMENTIS_LINE } from "./docmentis-theme.js";
3
+ import { changedDrawingLine, changedPortableLine, lineDashOfDrawing, lineDashOfPortable } from "./line-edit.js";
4
+ import { fillOpacity, fillWithOpacity, specifiedFill } from "./opacity.js";
2
5
  import { editState } from "./state.js";
3
6
  /** Split an `#rrggbb` hex into its three bytes (`0..255`). */
4
7
  function hexToRgbBytes(hex) {
@@ -49,22 +52,6 @@ const SCHEME_TOKEN = {
49
52
  function schemeSlot(slot) {
50
53
  return SCHEME_TOKEN[slot] ?? "text1";
51
54
  }
52
- /** A composed stroke as a `DrawingML` `Line`: its paint plus weight (points) and
53
- * a preset dash, over the rest of `current` — the line it replaces, whose
54
- * arrowheads, caps and joins it keeps. */
55
- function paintToDrawingLine(stroke, current) {
56
- return {
57
- width: stroke.weight,
58
- cap: current?.cap ?? null,
59
- compound: current?.compound ?? null,
60
- align: current?.align ?? null,
61
- fill: paintToDrawingFill(stroke.paint),
62
- dash: dashToDrawing(stroke.dash),
63
- join: current?.join ?? null,
64
- headEnd: current?.headEnd ?? null,
65
- tailEnd: current?.tailEnd ?? null,
66
- };
67
- }
68
55
  /** The line the selected shapes agree on — a deck's, a word document's, or
69
56
  * those drawn over an image — or null where they don't, or none is
70
57
  * selected. */
@@ -72,17 +59,74 @@ export function selectionLine(properties) {
72
59
  const line = drawingProperties(properties)?.shape.line;
73
60
  return line !== undefined && typeof line === "object" ? line.value : null;
74
61
  }
75
- function dashToDrawing(dash) {
76
- switch (dash) {
77
- case "solid":
78
- return { preset: "solid" };
79
- case "dash":
80
- return { preset: "dash" };
81
- case "dot":
82
- return { preset: "dot" };
83
- case "dashDot":
84
- return { preset: "dashDot" };
62
+ /** The fill-side style the selected PDF objects agree on, or null where they
63
+ * don't, have none, or it's a PDF path's turned off. */
64
+ function portableNonstroking(properties) {
65
+ if (!properties || !("portable" in properties))
66
+ return null;
67
+ const style = properties.portable.object.nonstrokingStyle;
68
+ return typeof style === "object" ? style.value : null;
69
+ }
70
+ /** {@link portableNonstroking} for the outline. */
71
+ function portableStroking(properties) {
72
+ if (!properties || !("portable" in properties))
73
+ return null;
74
+ const style = properties.portable.object.strokingStyle;
75
+ return typeof style === "object" ? style.value : null;
76
+ }
77
+ /**
78
+ * The opacity the selection's `channel` paints with, where it agrees on one: a PDF
79
+ * object's style's — a path's, an image's, a shading's, a text object's runs' — or
80
+ * a drawing shape's solid fill's or line's. Null where the selection differs, has
81
+ * no such side, or paints it with no one color — no fill, no line, a gradient, a
82
+ * pattern, a picture — as there's nothing to carry it.
83
+ */
84
+ export function selectionOpacity(properties, channel) {
85
+ if (properties && "portable" in properties) {
86
+ const { nonstrokingStyle, strokingStyle } = properties.portable.object;
87
+ const style = channel === "fill" ? nonstrokingStyle : strokingStyle;
88
+ return typeof style === "object" ? (style.value?.alpha ?? null) : null;
89
+ }
90
+ const shape = drawingProperties(properties)?.shape;
91
+ if (!shape)
92
+ return null;
93
+ if (channel === "fill")
94
+ return typeof shape.fill === "object" ? fillOpacity(shape.fill.value) : null;
95
+ const line = typeof shape.line === "object" ? shape.line.value : null;
96
+ return line?.fill ? fillOpacity(line.fill) : null;
97
+ }
98
+ /** The edit setting the selection's `channel` to `opacity`, carrying back the
99
+ * rest of its paint — or null where {@link selectionOpacity} has none to set. */
100
+ function opacityEdit(properties, channel, opacity) {
101
+ if (selectionOpacity(properties, channel) === null)
102
+ return null;
103
+ if (properties && "portable" in properties) {
104
+ if (channel === "fill") {
105
+ const current = portableNonstroking(properties);
106
+ if (!current)
107
+ return null;
108
+ return {
109
+ kind: "object",
110
+ edit: { kind: "setNonstrokingStyle", style: { ...current, alpha: opacity } },
111
+ };
112
+ }
113
+ const current = portableStroking(properties);
114
+ if (!current)
115
+ return null;
116
+ return { kind: "object", edit: { kind: "setStrokingStyle", style: { ...current, alpha: opacity } } };
117
+ }
118
+ const shape = drawingProperties(properties)?.shape;
119
+ if (!shape)
120
+ return null;
121
+ if (channel === "fill") {
122
+ if (typeof shape.fill !== "object")
123
+ return null;
124
+ return { kind: "setShapeFill", fill: fillWithOpacity(shape.fill.value, opacity) };
85
125
  }
126
+ const line = typeof shape.line === "object" ? shape.line.value : null;
127
+ if (!line?.fill)
128
+ return null;
129
+ return { kind: "setShapeLine", line: { ...line, fill: fillWithOpacity(line.fill, opacity) } };
86
130
  }
87
131
  function paintToBrush(paint) {
88
132
  if (paint.kind === "none")
@@ -90,28 +134,22 @@ function paintToBrush(paint) {
90
134
  const [r, g, b] = hexToRgbBytes(paint.hex);
91
135
  return { solid: { colorSpace: "deviceRgb", components: [r / 255, g / 255, b / 255] } };
92
136
  }
93
- /** A PDF stroking line: the weight (points) and a dash array derived from the
94
- * preset, scaled by the width so it reads consistently at any weight. */
95
- function portableStrokeLine(weight, dash) {
96
- const line = {
97
- width: weight,
98
- lineCap: dash === "dot" || dash === "dashDot" ? "round" : "butt",
99
- lineJoin: "miter",
100
- miterLimit: 10,
101
- dashArray: null,
102
- dashOffset: 0,
103
- };
104
- const w = weight || 1;
105
- const array = dash === "dash"
106
- ? [3 * w, 3 * w]
107
- : dash === "dot"
108
- ? [w, 2 * w]
109
- : dash === "dashDot"
110
- ? [3 * w, 2 * w, w, 2 * w]
111
- : null;
112
- if (array)
113
- line.dashArray = array;
114
- return line;
137
+ /**
138
+ * The weight and dash the selection's line has, for the Line panel to mark: a
139
+ * drawing shape's, or a PDF path's. Each null where the selection differs, it
140
+ * has no line, or the dash isn't one the panel offers.
141
+ */
142
+ function selectionStroke(properties) {
143
+ if (properties && "portable" in properties) {
144
+ const style = portableStroking(properties);
145
+ if (!style)
146
+ return { weight: null, dash: null };
147
+ return { weight: style.line.width, dash: lineDashOfPortable(style.line) };
148
+ }
149
+ const line = selectionLine(properties);
150
+ if (!line)
151
+ return { weight: null, dash: null };
152
+ return { weight: line.width ?? null, dash: lineDashOfDrawing(line.dash) };
115
153
  }
116
154
  /** The Fill / Line edits of the selection, on the shell `host` lends. */
117
155
  export function createPaintEdits(host) {
@@ -120,39 +158,49 @@ export function createPaintEdits(host) {
120
158
  // payload is the open doc type's own model style, built here (the host builds
121
159
  // model JSON, like `insertObject`), then sent through the same `executeOnSelection`
122
160
  // seam; the doc-type binder replaces a drawing shape's fill / line or a PDF
123
- // path's non-stroking / stroking style. "No Fill" on a PDF path (not
124
- // expressible as a device style) is skipped.
125
- function fillSelection(paint) {
126
- if (profileFor(store.getState().docType).drawingShapes) {
127
- return commit(() => client.executeOnSelection({ kind: "setShapeFill", fill: paintToDrawingFill(paint) }));
161
+ // object's non-stroking / stroking style, "No Fill" a null one, which turns a
162
+ // path's fill off.
163
+ function fillSelection(paint, opacity) {
164
+ const state = store.getState();
165
+ const properties = editState(state).selectionProperties;
166
+ const alpha = opacity ?? selectionOpacity(properties, "fill") ?? 1;
167
+ if (profileFor(state.docType).drawingShapes) {
168
+ const fill = fillWithOpacity(paintToDrawingFill(paint), alpha);
169
+ return commit(() => client.executeOnSelection({ kind: "setShapeFill", fill }));
128
170
  }
129
171
  const brush = paintToBrush(paint);
130
- if (!brush)
131
- return Promise.resolve();
132
- return commit(() => client.executeOnSelection({
133
- kind: "object",
134
- edit: { kind: "setNonstrokingStyle", style: { brush, alpha: 1, overprint: false } },
135
- }));
172
+ const overprint = portableNonstroking(properties)?.overprint ?? false;
173
+ const style = brush && { brush, alpha, overprint };
174
+ return commit(() => client.executeOnSelection({ kind: "object", edit: { kind: "setNonstrokingStyle", style } }));
136
175
  }
137
- // The whole composed stroke (color + weight + dash), since the engine sets the
138
- // outline as one value — over the line the shapes have, so an arrow keeps
139
- // its head.
140
- function strokeSelection(stroke) {
176
+ // A change to the line — its color, its weight or its dash — over the line the
177
+ // selection has, carrying the rest, since the engine sets the outline as one
178
+ // value: a new weight keeps the line's color, and an arrow keeps its head.
179
+ // `fallback` is for what it hasn't: a side with no line, or lines that differ.
180
+ function strokeSelection(change, fallback) {
141
181
  const state = store.getState();
182
+ const { selectionLine: current, selectionProperties: properties } = editState(state);
183
+ const alpha = change.opacity ?? selectionOpacity(properties, "stroke") ?? 1;
184
+ const { weight, dash, paint } = change;
142
185
  if (profileFor(state.docType).drawingShapes) {
143
- const line = paintToDrawingLine(stroke, editState(state).selectionLine);
186
+ const fillOf = (spec) => fillWithOpacity(paintToDrawingFill(spec), alpha);
187
+ const line = changedDrawingLine(current, { weight, dash, fill: paint && fillOf(paint) }, { fill: fillOf(fallback.paint), weight: fallback.weight, dash: fallback.dash });
144
188
  return commit(() => client.executeOnSelection({ kind: "setShapeLine", line }));
145
189
  }
146
- const brush = paintToBrush(stroke.paint);
147
- if (!brush)
148
- return Promise.resolve();
149
- const line = portableStrokeLine(stroke.weight, stroke.dash);
150
- return commit(() => client.executeOnSelection({
151
- kind: "object",
152
- edit: { kind: "setStrokingStyle", style: { brush, alpha: 1, overprint: false, line } },
153
- }));
190
+ const style = portableStroking(properties);
191
+ const brush = paint ? paintToBrush(paint) : (style?.brush ?? paintToBrush(fallback.paint));
192
+ const line = changedPortableLine(style?.line ?? null, { weight, dash }, fallback);
193
+ const overprint = style?.overprint ?? false;
194
+ // "No Line" is a null style, which turns a path's outline off.
195
+ const next = brush && { brush, alpha, overprint, line };
196
+ return commit(() => client.executeOnSelection({ kind: "object", edit: { kind: "setStrokingStyle", style: next } }));
154
197
  }
155
- return { fillSelection, strokeSelection };
198
+ // The opacity alone: the rest of the paint is carried back as it stands.
199
+ function setSelectionOpacity(channel, opacity) {
200
+ const edit = opacityEdit(editState(store.getState()).selectionProperties, channel, opacity);
201
+ return edit ? commit(() => client.executeOnSelection(edit)) : Promise.resolve();
202
+ }
203
+ return { fillSelection, strokeSelection, setSelectionOpacity };
156
204
  }
157
205
  /**
158
206
  * The doc types whose color pickers show the "Theme Colors" block above the
@@ -167,18 +215,67 @@ const THEMED = new Set(["presentation", "spreadsheet", "wordprocessing"]);
167
215
  function mapThemeColors(palette) {
168
216
  return palette ? themeSwatches(palette) : DEFAULT_OFFICE_THEME;
169
217
  }
170
- /** A {@link PaintMemory} at its defaults. */
218
+ /**
219
+ * The Object tab's Opacity button, for command `id` drawn with `icon`: the opacity
220
+ * of what the selected PDF objects paint with on their non-stroking side — a
221
+ * path's fill, an image, a shading, text.
222
+ */
223
+ export function objectOpacityControl(env, command, tools) {
224
+ const dd = createDropdownButton({ icon: command.icon, label: env.label }, {
225
+ menuLabel: env.label,
226
+ onOpen: () => buildOpacityPanel(dd.menu, {
227
+ i18n: tools.i18n,
228
+ opacity: selectionOpacity(editState(env.store.getState()).selectionProperties, "fill"),
229
+ onSet: (opacity) => {
230
+ tools.paintMemory.lastOpacity.fill = opacity;
231
+ void tools.paint.setSelectionOpacity("fill", opacity);
232
+ },
233
+ close: () => dd.controller.close(),
234
+ }),
235
+ });
236
+ dd.trigger.dataset.command = command.id;
237
+ return { el: dd.el, close: () => dd.controller.close(), destroy: () => dd.destroy() };
238
+ }
239
+ /** A {@link PaintMemory} with nothing specified yet. */
171
240
  export function createPaintMemory() {
172
241
  return {
173
- lastPaint: {
174
- fill: { kind: "solid", hex: "#4472c4" },
175
- stroke: { kind: "solid", hex: "#000000" },
176
- text: { kind: "solid", hex: "#000000" },
177
- highlight: { kind: "solid", hex: "#ffff00" },
178
- },
242
+ lastPaint: { fill: null, stroke: null, text: null, highlight: null },
243
+ lastOpacity: { fill: null, stroke: null },
179
244
  lastStroke: { weight: 1, dash: "solid" },
180
245
  };
181
246
  }
247
+ /** The color last specified for `channel` as a drawing color. A theme color on a
248
+ * document with no theme, not `themed`, is the color it showed as. */
249
+ function specifiedColor(memory, channel, themed) {
250
+ const last = memory.lastPaint[channel];
251
+ if (!last || last.kind === "none")
252
+ return null;
253
+ return paintToDrawingColor(last.kind === "theme" && !themed ? { kind: "solid", hex: last.hex } : last);
254
+ }
255
+ /**
256
+ * What a new drawing shape paints `channel` with, from what was last specified: its
257
+ * color at its opacity, an opacity alone taking `defaultColor`. Null with neither
258
+ * specified, for the document's default.
259
+ */
260
+ export function specifiedPaint(memory, channel, themed, defaultColor) {
261
+ return specifiedFill(specifiedColor(memory, channel, themed), memory.lastOpacity[channel], defaultColor);
262
+ }
263
+ /** What a new PDF object paints `channel` with: the color last specified, else
264
+ * `defaultHex`, at the opacity last set, else opaque. */
265
+ export function specifiedPortablePaint(memory, channel, defaultHex) {
266
+ const last = memory.lastPaint[channel];
267
+ const hex = last && last.kind !== "none" ? last.hex : defaultHex;
268
+ const [r, g, b] = hexToRgbBytes(hex);
269
+ return {
270
+ color: { colorSpace: "srgb", components: [r / 255, g / 255, b / 255] },
271
+ alpha: memory.lastOpacity[channel] ?? 1,
272
+ };
273
+ }
274
+ /** `hex` as a drawing color. */
275
+ export function drawingColorOf(hex) {
276
+ const [r, g, b] = hexToRgbBytes(hex);
277
+ return { base: { sRgb: { r, g, b } }, transforms: [] };
278
+ }
182
279
  /**
183
280
  * A Fill / Line / Text Color dropdown of `channel`, for command `id` drawn with
184
281
  * `icon`: the channel glyph over a color bar reflecting the *selection's* color,
@@ -190,40 +287,52 @@ export function paintControl(env, command, tools) {
190
287
  const { i18n, paintMemory: memory } = tools;
191
288
  const { channel } = command;
192
289
  const selectionPaint = () => editState(env.store.getState()).selectionPaint;
193
- // Apply the current stroke (color + weight + dash) to the selection — the
194
- // whole composed value, since the engine sets the outline as one thing;
195
- // the color rides from the last pick.
196
- const applyStroke = () => void tools.paint.strokeSelection({
197
- paint: memory.lastPaint.stroke,
198
- weight: memory.lastStroke.weight,
199
- dash: memory.lastStroke.dash,
200
- });
201
- // Apply a picked paint: fill / text / highlight send the color; stroke
202
- // sends the composed stroke (its last-used weight / dash ride along).
203
- const applyPaint = (paint) => {
290
+ // Change the selection's line by what the panel set, the rest carried.
291
+ const applyStroke = (change) => {
292
+ const { docType } = env.store.getState();
293
+ const themed = docType !== null && THEMED.has(docType);
294
+ void tools.paint.strokeSelection(change, {
295
+ paint: memory.lastPaint.stroke ?? { kind: "solid", hex: themed ? "#000000" : DOCMENTIS_LINE },
296
+ weight: memory.lastStroke.weight,
297
+ dash: memory.lastStroke.dash,
298
+ });
299
+ };
300
+ // Apply a picked paint, at the opacity the custom picker gave it, else at
301
+ // the one the channel has.
302
+ const applyPaint = (paint, opacity) => {
204
303
  if (channel === "fill")
205
- void tools.paint.fillSelection(paint);
304
+ void tools.paint.fillSelection(paint, opacity);
206
305
  else if (channel === "text")
207
306
  void tools.text.textFillSelection(paint);
208
307
  else if (channel === "highlight")
209
308
  void tools.text.textHighlightSelection(paint);
210
309
  else
211
- applyStroke();
310
+ applyStroke({ paint, opacity });
212
311
  };
213
- // Commit a picked paint: remember it (for the composed stroke re-send and
312
+ // Commit a picked paint: remember a color (what a side with no line takes, and
214
313
  // the recent row) and apply it. The trigger swatch isn't touched here — it
215
314
  // mirrors the selection, so it updates when the resulting report lands.
216
- const commitPaint = (paint) => {
217
- memory.lastPaint[channel] = paint;
218
- if (paint.kind !== "none")
315
+ const commitPaint = (paint, opacity) => {
316
+ if (paint.kind !== "none") {
317
+ memory.lastPaint[channel] = paint;
219
318
  env.pushRecent(channel, paint.hex);
220
- applyPaint(paint);
319
+ }
320
+ if (opacity !== undefined && (channel === "fill" || channel === "stroke")) {
321
+ memory.lastOpacity[channel] = opacity;
322
+ }
323
+ applyPaint(paint, opacity);
221
324
  };
222
325
  // The color panel — doc-type aware (Office shows the theme block, PDF
223
326
  // standard colors only). Rebuilt on each open so recent / active reflect
224
327
  // current state. `close` is the dropdown's.
225
328
  const panelConfig = (close) => {
226
329
  const state = env.store.getState();
330
+ const properties = editState(state).selectionProperties;
331
+ // A PDF's fill-side opacity is the Object tab's Opacity button's: it isn't
332
+ // the fill's alone, as an image or text has it with no fill to speak of.
333
+ const fillTakesOpacity = profileFor(state.docType).drawingShapes;
334
+ const opacityChannel = channel === "stroke" || (channel === "fill" && fillTakesOpacity) ? channel : null;
335
+ const opacity = opacityChannel ? selectionOpacity(properties, opacityChannel) : null;
227
336
  return {
228
337
  i18n,
229
338
  variant: channel,
@@ -238,21 +347,33 @@ export function paintControl(env, command, tools) {
238
347
  // "active"): a solid color or explicit no-fill; nothing for mixed /
239
348
  // unknown.
240
349
  active: displayToActivePaint(selectionPaint()[channel]),
241
- stroke: channel === "stroke" ? memory.lastStroke : null,
242
- onPick: (paint) => {
243
- commitPaint(paint);
350
+ stroke: channel === "stroke" ? selectionStroke(properties) : null,
351
+ onPick: (paint, pickedOpacity) => {
352
+ commitPaint(paint, pickedOpacity);
244
353
  close();
245
354
  },
246
355
  onWeight: (pt) => {
247
356
  memory.lastStroke.weight = pt;
248
- applyStroke();
357
+ applyStroke({ weight: pt });
249
358
  close();
250
359
  },
251
360
  onDash: (dash) => {
252
361
  memory.lastStroke.dash = dash;
253
- applyStroke();
362
+ applyStroke({ dash });
254
363
  close();
255
364
  },
365
+ // The custom picker's slider, on a side that takes an opacity; the
366
+ // fly-out, where the selection paints it with one color to carry it.
367
+ ...(opacityChannel ? { opacity } : {}),
368
+ ...(opacityChannel && opacity !== null
369
+ ? {
370
+ onOpacity: (value) => {
371
+ memory.lastOpacity[opacityChannel] = value;
372
+ void tools.paint.setSelectionOpacity(opacityChannel, value);
373
+ close();
374
+ },
375
+ }
376
+ : {}),
256
377
  // No `onMoreOptions`: the More Options row waits for the advanced
257
378
  // dialog to hold the richer fill / line surface.
258
379
  };
package/dist/paint.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paint.js","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paint.js","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,12 @@ export interface RulerControls {
46
46
  * null. Those `movable` refuses stay put under a press.
47
47
  */
48
48
  place(horizontal: RulerPlacement | null, vertical: RulerPlacement | null, text: RulerText | null, movable: (control: RulerControl) => boolean): void;
49
+ /**
50
+ * Say again which controls stay put under a press, leaving each where it
51
+ * stands — a selection changes what `movable` answers between the frames
52
+ * that place them.
53
+ */
54
+ refuse(movable: (control: RulerControl) => boolean): void;
49
55
  }
50
56
  /** The ruler's controls for a ruler `thickness` CSS px deep, handing what a
51
57
  * drop moved to `drop` — the edit it sends, settling when that is done, or
@@ -1 +1 @@
1
- {"version":3,"file":"ruler-controls.d.ts","sourceRoot":"","sources":["../src/ruler-controls.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAiB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAgChF,uDAAuD;AACvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE;+CAC+C;AAC/C,MAAM,MAAM,YAAY,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACvB;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;4DACwD;IACxD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;4DACwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;sBACkB;IAClB,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC1B;;;;;OAKG;IACH,KAAK,CACD,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,GAC5C,IAAI,CAAC;CACX;AAyED;;uEAEuE;AACvE,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GACnD,aAAa,CAsNf"}
1
+ {"version":3,"file":"ruler-controls.d.ts","sourceRoot":"","sources":["../src/ruler-controls.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAiB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAkChF,uDAAuD;AACvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE;+CAC+C;AAC/C,MAAM,MAAM,YAAY,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACvB;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;4DACwD;IACxD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;4DACwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;sBACkB;IAClB,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC1B;;;;;OAKG;IACH,KAAK,CACD,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,GAC5C,IAAI,CAAC;IACR;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,CAAC;CAC7D;AA+ED;;uEAEuE;AACvE,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GACnD,aAAa,CA2Nf"}