@lvl99dotcom/paintcanvas 0.6.0 → 0.8.0
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/README.md +3 -2
- package/dist/lib/assets/index.d.ts +92 -0
- package/dist/lib/assets/index.js +106 -0
- package/dist/lib/assets/schema.d.ts +151 -0
- package/dist/lib/assets/schema.js +76 -0
- package/dist/lib/brushes/presetFile/index.d.ts +6 -27
- package/dist/lib/brushes/presetFile/index.js +34 -47
- package/dist/lib/brushes/types/index.d.ts +2 -11
- package/dist/lib/classes/AssetSync/index.d.ts +45 -0
- package/dist/lib/classes/AssetSync/index.js +80 -0
- package/dist/lib/classes/ColourPalettes/index.d.ts +83 -0
- package/dist/lib/classes/ColourPalettes/index.js +165 -0
- package/dist/lib/classes/CustomPresets/index.d.ts +14 -15
- package/dist/lib/classes/CustomPresets/index.js +25 -10
- package/dist/lib/classes/LayerAutosave/index.d.ts +9 -2
- package/dist/lib/classes/LayerAutosave/index.js +16 -6
- package/dist/lib/classes/PaintCanvas/index.d.ts +124 -28
- package/dist/lib/classes/PaintCanvas/index.js +228 -63
- package/dist/lib/classes/Palette/index.d.ts +3 -2
- package/dist/lib/classes/Palette/index.js +3 -2
- package/dist/lib/classes/ProfileGraphs/index.d.ts +13 -2
- package/dist/lib/classes/ProfileGraphs/index.js +22 -2
- package/dist/lib/classes/RemoteDocumentAutosave/index.d.ts +73 -0
- package/dist/lib/classes/RemoteDocumentAutosave/index.js +119 -0
- package/dist/lib/classes/SettingsAutosave/index.d.ts +7 -3
- package/dist/lib/classes/SettingsAutosave/index.js +28 -7
- package/dist/lib/classes/SettingsExtensions/index.d.ts +67 -0
- package/dist/lib/classes/SettingsExtensions/index.js +88 -0
- package/dist/lib/classes/UiSettings/index.d.ts +24 -2
- package/dist/lib/classes/UiSettings/index.js +32 -7
- package/dist/lib/document/index.d.ts +61 -4
- package/dist/lib/document/index.js +173 -4
- package/dist/lib/document/schema.d.ts +154 -39
- package/dist/lib/document/schema.js +91 -25
- package/dist/lib/messages/schema.d.ts +176 -74
- package/dist/lib/messages/schema.js +2 -1
- package/dist/lib/palette/index.d.ts +8 -42
- package/dist/lib/palette/index.js +26 -59
- package/dist/lib/palette/schema.d.ts +111 -22
- package/dist/lib/palette/schema.js +51 -26
- package/dist/lib/presets/index.d.ts +1 -9
- package/dist/lib/presets/index.js +4 -10
- package/dist/lib/presets/schema.d.ts +118 -73
- package/dist/lib/presets/schema.js +28 -60
- package/dist/lib/profiles/profileFile/index.d.ts +10 -0
- package/dist/lib/profiles/profileFile/index.js +19 -0
- package/dist/lib/profiles/schema.d.ts +96 -3
- package/dist/lib/profiles/schema.js +31 -7
- package/dist/lib/schemas/index.d.ts +42 -0
- package/dist/lib/schemas/index.js +60 -0
- package/dist/lib/settings/index.d.ts +37 -22
- package/dist/lib/settings/index.js +78 -37
- package/dist/lib/settings/schema.d.ts +202 -77
- package/dist/lib/settings/schema.js +93 -86
- package/dist/lib/storage/index.d.ts +108 -3
- package/dist/lib/storage/index.js +119 -5
- package/dist/lib/validation/validators.generated.d.ts +19 -8
- package/dist/lib/validation/validators.generated.js +44723 -18889
- package/dist/lib/version/index.d.ts +25 -0
- package/dist/lib/version/index.js +35 -0
- package/dist/locales/en-GB.js +28 -5
- package/dist/locales/en-US.js +28 -5
- package/dist/locales/fr.js +28 -5
- package/dist/locales/ja.js +28 -5
- package/dist/locales/ko.js +28 -5
- package/dist/locales/zh-Hans.js +28 -5
- package/dist/locales/zh-Hant.js +28 -5
- package/dist/package.js +1 -1
- package/dist/testing/app.d.ts +6 -2
- package/dist/testing/app.js +7 -2
- package/dist/testing/documentStore.d.ts +26 -0
- package/dist/testing/documentStore.js +31 -0
- package/dist/ui/elements/PaintCanvas/index.d.ts +19 -5
- package/dist/ui/elements/PaintCanvas/index.js +41 -10
- package/dist/ui/elements/PcAppSettings/index.d.ts +14 -7
- package/dist/ui/elements/PcAppSettings/index.js +58 -33
- package/dist/ui/elements/PcBrushConfig/index.d.ts +1 -0
- package/dist/ui/elements/PcBrushConfig/index.js +8 -9
- package/dist/ui/elements/PcBrushTest/index.d.ts +1 -0
- package/dist/ui/elements/PcBrushTest/index.js +8 -7
- package/dist/ui/elements/PcBrushTest/style.js +1 -1
- package/dist/ui/elements/PcButtonMenu/index.d.ts +88 -0
- package/dist/ui/elements/PcButtonMenu/index.js +125 -0
- package/dist/ui/elements/PcCanvas/index.d.ts +9 -0
- package/dist/ui/elements/PcCanvas/index.js +33 -17
- package/dist/ui/elements/PcClipboardTools/index.d.ts +7 -4
- package/dist/ui/elements/PcClipboardTools/index.js +20 -26
- package/dist/ui/elements/PcInputSettings/index.d.ts +2 -1
- package/dist/ui/elements/PcInputSettings/index.js +9 -15
- package/dist/ui/elements/PcLayerItem/index.d.ts +21 -6
- package/dist/ui/elements/PcLayerItem/index.js +53 -26
- package/dist/ui/elements/PcLayerItem/style.js +1 -1
- package/dist/ui/elements/PcPanelBrushes/index.d.ts +1 -1
- package/dist/ui/elements/PcPanelBrushes/index.js +22 -28
- package/dist/ui/elements/PcPanelBrushes/style.js +1 -1
- package/dist/ui/elements/PcPanelColours/index.d.ts +56 -19
- package/dist/ui/elements/PcPanelColours/index.js +251 -104
- package/dist/ui/elements/PcPanelColours/style.js +1 -1
- package/dist/ui/elements/PcSliderRange/index.js +3 -2
- package/dist/ui/elements/PcStats/index.d.ts +8 -4
- package/dist/ui/elements/PcStats/index.js +39 -5
- package/dist/ui/elements/PcToggleCheckbox/index.d.ts +13 -2
- package/dist/ui/elements/PcToggleCheckbox/index.js +27 -8
- package/dist/ui/elements/PcToolSettings/index.d.ts +1 -0
- package/dist/ui/elements/PcToolSettings/index.js +8 -8
- package/dist/ui/elements/PcVersion/index.d.ts +12 -0
- package/dist/ui/elements/PcVersion/index.js +43 -0
- package/dist/ui/index.d.ts +3 -1
- package/dist/ui/index.js +4 -2
- package/dist/ui/layout/index.d.ts +2 -2
- package/dist/ui/layout/index.js +2 -2
- package/locales/en-GB.json +28 -5
- package/locales/en-US.json +28 -5
- package/locales/fr.json +28 -5
- package/locales/ja.json +28 -5
- package/locales/ko.json +28 -5
- package/locales/zh-Hans.json +28 -5
- package/locales/zh-Hant.json +28 -5
- package/package.json +3 -2
|
@@ -34,10 +34,12 @@ var formatBytes = (bytes, locale) => {
|
|
|
34
34
|
};
|
|
35
35
|
/**
|
|
36
36
|
* A line of small text about the canvas: its size; while the drawing is kept in the browser, how much its layer
|
|
37
|
-
* images take there; the zoom level;
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* images take there; the zoom level; the colour under the pointer (with a swatch; a dash when the pointer isn't over the
|
|
38
|
+
* canvas); and, on the right, while the drawing is being saved to a remote store (see
|
|
39
|
+
* `PaintCanvas.useRemoteDocumentStore`), a progress bar, or that saving there failed. The colour follows the pointer
|
|
40
|
+
* at most every `COLOUR_INTERVAL_MS`, and isn't read while a stroke is drawn (the next pointer move after it reads it).
|
|
41
|
+
* It's not announced to screen readers as it changes, as it changes with every pointer move; saving to the remote store
|
|
42
|
+
* is.
|
|
41
43
|
*
|
|
42
44
|
* @example
|
|
43
45
|
* html`<pc-stats .app=${app}></pc-stats>`
|
|
@@ -73,6 +75,18 @@ var PcStats = class extends PcElement {
|
|
|
73
75
|
white-space: nowrap;
|
|
74
76
|
font-variant-numeric: tabular-nums;
|
|
75
77
|
}
|
|
78
|
+
/* Saving to the remote store: at the end of the line, on the right */
|
|
79
|
+
.remote {
|
|
80
|
+
margin-left: auto;
|
|
81
|
+
}
|
|
82
|
+
.remote progress {
|
|
83
|
+
width: 48px;
|
|
84
|
+
height: 6px;
|
|
85
|
+
accent-color: var(--pc-accent, currentColor);
|
|
86
|
+
}
|
|
87
|
+
.remote.failed {
|
|
88
|
+
color: var(--pc-dismiss-text);
|
|
89
|
+
}
|
|
76
90
|
.swatch {
|
|
77
91
|
width: 10px;
|
|
78
92
|
height: 10px;
|
|
@@ -82,7 +96,8 @@ var PcStats = class extends PcElement {
|
|
|
82
96
|
changes = new ChangeController(this, () => [
|
|
83
97
|
this.app,
|
|
84
98
|
this.app?.viewport,
|
|
85
|
-
this.app?.autosave
|
|
99
|
+
this.app?.autosave,
|
|
100
|
+
this.app?.remoteAutosave
|
|
86
101
|
]);
|
|
87
102
|
/** The canvas whose pointer is followed */
|
|
88
103
|
followed;
|
|
@@ -153,8 +168,27 @@ var PcStats = class extends PcElement {
|
|
|
153
168
|
style=${styleMap({ background: colour })}
|
|
154
169
|
></span>` : nothing}
|
|
155
170
|
</li>
|
|
171
|
+
${this.renderRemote(app)}
|
|
156
172
|
</ul>`;
|
|
157
173
|
}
|
|
174
|
+
/** Saving to the remote store, while under way or after it failed */
|
|
175
|
+
renderRemote(app) {
|
|
176
|
+
const remote = app.remoteAutosave;
|
|
177
|
+
if (!remote || !remote.saving && remote.error === void 0) return nothing;
|
|
178
|
+
const store = remote.store.label ?? this.t("paintCanvas.stats.remoteStore");
|
|
179
|
+
if (!remote.saving) return html`<li class="remote failed" role="status">
|
|
180
|
+
${this.t("paintCanvas.stats.remoteFailed", { store })}
|
|
181
|
+
</li>`;
|
|
182
|
+
const label = this.t("paintCanvas.stats.remoteSaving", { store });
|
|
183
|
+
return html`<li class="remote" role="status">
|
|
184
|
+
${label}
|
|
185
|
+
<progress
|
|
186
|
+
aria-label=${label}
|
|
187
|
+
max="1"
|
|
188
|
+
value=${remote.progress ?? nothing}
|
|
189
|
+
></progress>
|
|
190
|
+
</li>`;
|
|
191
|
+
}
|
|
158
192
|
};
|
|
159
193
|
defineElement("pc-stats", PcStats);
|
|
160
194
|
export { COLOUR_INTERVAL_MS, PcStats, formatBytes };
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { PcElement } from "../../base";
|
|
2
|
+
/** Sizes of the switch: `m` (20px high, the default) and `s` (16px high, e.g. in toolbars) */
|
|
3
|
+
export declare const TOGGLE_SIZES: readonly ["m", "s"];
|
|
4
|
+
export type ToggleSize = (typeof TOGGLE_SIZES)[number];
|
|
2
5
|
/**
|
|
3
|
-
* An on/off switch with its text (the element's content) beside it, e.g. for settings.
|
|
4
|
-
*
|
|
6
|
+
* An on/off switch with its text (the element's content) beside it, e.g. for settings. Use it instead of plain
|
|
7
|
+
* checkboxes. It comes in two sizes (`size`: `m`, 20px high, by default, or `s`, 16px high), both pressable over at
|
|
8
|
+
* least 24px of height. Fires `change` when the user turns it on or off.
|
|
5
9
|
*
|
|
6
10
|
* @example
|
|
7
11
|
* html`<pc-toggle-checkbox .checked=${pinchZoom} @change=${toggle}>Pinch to zoom</pc-toggle-checkbox>`
|
|
12
|
+
* html`<pc-toggle-checkbox size="s">Show stroke points</pc-toggle-checkbox>`
|
|
8
13
|
*/
|
|
9
14
|
export declare class PcToggleCheckbox extends PcElement {
|
|
10
15
|
static properties: {
|
|
@@ -16,6 +21,10 @@ export declare class PcToggleCheckbox extends PcElement {
|
|
|
16
21
|
type: BooleanConstructor;
|
|
17
22
|
reflect: boolean;
|
|
18
23
|
};
|
|
24
|
+
size: {
|
|
25
|
+
type: StringConstructor;
|
|
26
|
+
reflect: boolean;
|
|
27
|
+
};
|
|
19
28
|
translations: {
|
|
20
29
|
attribute: boolean;
|
|
21
30
|
};
|
|
@@ -30,6 +39,8 @@ export declare class PcToggleCheckbox extends PcElement {
|
|
|
30
39
|
static styles: import("lit").CSSResultGroup[];
|
|
31
40
|
checked: boolean;
|
|
32
41
|
disabled: boolean;
|
|
42
|
+
/** The switch's size: `m` (default) or `s` */
|
|
43
|
+
size: ToggleSize;
|
|
33
44
|
constructor();
|
|
34
45
|
/** Follow the user's change, and tell listeners */
|
|
35
46
|
private onChange;
|
|
@@ -2,12 +2,16 @@ import { PcElement, defineElement, emit } from "../../base/index.js";
|
|
|
2
2
|
import { css, html } from "lit";
|
|
3
3
|
import { live } from "lit/directives/live.js";
|
|
4
4
|
// src/ui/elements/PcToggleCheckbox/index.ts
|
|
5
|
+
/** Sizes of the switch: `m` (20px high, the default) and `s` (16px high, e.g. in toolbars) */
|
|
6
|
+
var TOGGLE_SIZES = ["m", "s"];
|
|
5
7
|
/**
|
|
6
|
-
* An on/off switch with its text (the element's content) beside it, e.g. for settings.
|
|
7
|
-
*
|
|
8
|
+
* An on/off switch with its text (the element's content) beside it, e.g. for settings. Use it instead of plain
|
|
9
|
+
* checkboxes. It comes in two sizes (`size`: `m`, 20px high, by default, or `s`, 16px high), both pressable over at
|
|
10
|
+
* least 24px of height. Fires `change` when the user turns it on or off.
|
|
8
11
|
*
|
|
9
12
|
* @example
|
|
10
13
|
* html`<pc-toggle-checkbox .checked=${pinchZoom} @change=${toggle}>Pinch to zoom</pc-toggle-checkbox>`
|
|
14
|
+
* html`<pc-toggle-checkbox size="s">Show stroke points</pc-toggle-checkbox>`
|
|
11
15
|
*/
|
|
12
16
|
var PcToggleCheckbox = class extends PcElement {
|
|
13
17
|
static properties = {
|
|
@@ -19,15 +23,27 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
19
23
|
disabled: {
|
|
20
24
|
type: Boolean,
|
|
21
25
|
reflect: true
|
|
26
|
+
},
|
|
27
|
+
size: {
|
|
28
|
+
type: String,
|
|
29
|
+
reflect: true
|
|
22
30
|
}
|
|
23
31
|
};
|
|
24
32
|
static styles = [PcElement.styles, css`
|
|
25
33
|
:host {
|
|
34
|
+
--pc-toggle-height: 20px;
|
|
35
|
+
--pc-toggle-width: 36px;
|
|
26
36
|
display: flex;
|
|
27
37
|
}
|
|
38
|
+
:host([size="s"]) {
|
|
39
|
+
--pc-toggle-height: 16px;
|
|
40
|
+
--pc-toggle-width: 28px;
|
|
41
|
+
}
|
|
28
42
|
label {
|
|
29
43
|
display: flex;
|
|
30
44
|
flex: 1;
|
|
45
|
+
/* The pressable area is at least 24px high, whatever the switch's size */
|
|
46
|
+
min-height: 24px;
|
|
31
47
|
gap: var(--pc-space-2);
|
|
32
48
|
align-items: center;
|
|
33
49
|
color: var(--pc-text);
|
|
@@ -42,8 +58,8 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
42
58
|
input {
|
|
43
59
|
position: relative;
|
|
44
60
|
flex: none;
|
|
45
|
-
width:
|
|
46
|
-
height:
|
|
61
|
+
width: var(--pc-toggle-width);
|
|
62
|
+
height: var(--pc-toggle-height);
|
|
47
63
|
margin: 0;
|
|
48
64
|
border-radius: var(--pc-radius-pill);
|
|
49
65
|
background: var(--pc-disabled);
|
|
@@ -54,8 +70,8 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
54
70
|
position: absolute;
|
|
55
71
|
top: 2px;
|
|
56
72
|
left: 2px;
|
|
57
|
-
width:
|
|
58
|
-
height:
|
|
73
|
+
width: calc(var(--pc-toggle-height) - 4px);
|
|
74
|
+
height: calc(var(--pc-toggle-height) - 4px);
|
|
59
75
|
border-radius: 50%;
|
|
60
76
|
background: #ffffff;
|
|
61
77
|
content: "";
|
|
@@ -65,7 +81,9 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
65
81
|
background: var(--pc-accent);
|
|
66
82
|
}
|
|
67
83
|
input:checked::before {
|
|
68
|
-
transform: translateX(
|
|
84
|
+
transform: translateX(
|
|
85
|
+
calc(var(--pc-toggle-width) - var(--pc-toggle-height))
|
|
86
|
+
);
|
|
69
87
|
}
|
|
70
88
|
input:focus-visible {
|
|
71
89
|
outline: var(--pc-focus-width) solid var(--pc-focus);
|
|
@@ -81,6 +99,7 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
81
99
|
super();
|
|
82
100
|
this.checked = false;
|
|
83
101
|
this.disabled = false;
|
|
102
|
+
this.size = "m";
|
|
84
103
|
}
|
|
85
104
|
/** Follow the user's change, and tell listeners */
|
|
86
105
|
onChange(event) {
|
|
@@ -102,4 +121,4 @@ var PcToggleCheckbox = class extends PcElement {
|
|
|
102
121
|
}
|
|
103
122
|
};
|
|
104
123
|
defineElement("pc-toggle-checkbox", PcToggleCheckbox);
|
|
105
|
-
export { PcToggleCheckbox };
|
|
124
|
+
export { PcToggleCheckbox, TOGGLE_SIZES };
|
|
@@ -3,6 +3,7 @@ import { PcElement } from "../../base";
|
|
|
3
3
|
import PaintCanvas, { Tool } from "../../../lib/classes/PaintCanvas";
|
|
4
4
|
import type { BrushConfig } from "../../../lib/brushes/types";
|
|
5
5
|
import "../PcBrushSize";
|
|
6
|
+
import "../PcToggleCheckbox";
|
|
6
7
|
import "../PcNumberSlider";
|
|
7
8
|
import "../PcPopover";
|
|
8
9
|
/** Settings varied with pen tilt by the tilt toggle */
|
|
@@ -8,6 +8,7 @@ import "../../../lib/classes/BrushSettings/index.js";
|
|
|
8
8
|
import { MAX_ZOOM, MIN_ZOOM } from "../../../lib/classes/Viewport/index.js";
|
|
9
9
|
import { iconLabel } from "../../icons/index.js";
|
|
10
10
|
import "../PcBrushSize/index.js";
|
|
11
|
+
import "../PcToggleCheckbox/index.js";
|
|
11
12
|
import "../PcNumberSlider/index.js";
|
|
12
13
|
import "../PcPopover/index.js";
|
|
13
14
|
import { html, nothing, svg, unsafeCSS } from "lit";
|
|
@@ -430,15 +431,14 @@ var PcToolSettings = class extends PcElement {
|
|
|
430
431
|
${iconLabel(this.iconUrl(app.constrainProportions ? "linked" : "unlinked"), this.t("paintCanvas.toolSettings.constrainProportions"))}
|
|
431
432
|
</label>
|
|
432
433
|
${side("height", this.t("paintCanvas.common.height"))}
|
|
433
|
-
<
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
/>
|
|
434
|
+
<pc-toggle-checkbox
|
|
435
|
+
class="percent"
|
|
436
|
+
size="s"
|
|
437
|
+
.checked=${this.percent}
|
|
438
|
+
@change=${(e) => this.percent = e.detail.checked}
|
|
439
|
+
>
|
|
440
440
|
${this.t("paintCanvas.toolSettings.percent")}
|
|
441
|
-
</
|
|
441
|
+
</pc-toggle-checkbox>
|
|
442
442
|
<button
|
|
443
443
|
type="button"
|
|
444
444
|
class="icon-button flip-horizontal"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PcElement } from "../../base";
|
|
2
|
+
/**
|
|
3
|
+
* PaintCanvas's version and the commit it was built from, e.g. "PaintCanvas v0.6.0 (ac12a0d)", as a link to its GitHub
|
|
4
|
+
* repository (opened in a new tab). For an app's settings or about panel.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* html`<pc-version></pc-version>`
|
|
8
|
+
*/
|
|
9
|
+
export declare class PcVersion extends PcElement {
|
|
10
|
+
static styles: import("lit").CSSResultGroup[];
|
|
11
|
+
render(): import("lit").TemplateResult<1>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PcElement, defineElement } from "../../base/index.js";
|
|
2
|
+
import { PAINTCANVAS_REPOSITORY_URL, versionText } from "../../../lib/version/index.js";
|
|
3
|
+
import { css, html } from "lit";
|
|
4
|
+
// src/ui/elements/PcVersion/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* PaintCanvas's version and the commit it was built from, e.g. "PaintCanvas v0.6.0 (ac12a0d)", as a link to its GitHub
|
|
7
|
+
* repository (opened in a new tab). For an app's settings or about panel.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* html`<pc-version></pc-version>`
|
|
11
|
+
*/
|
|
12
|
+
var PcVersion = class extends PcElement {
|
|
13
|
+
static styles = [PcElement.styles, css`
|
|
14
|
+
:host {
|
|
15
|
+
display: block;
|
|
16
|
+
font-family: var(--pc-font);
|
|
17
|
+
font-size: var(--pc-font-size-small);
|
|
18
|
+
}
|
|
19
|
+
a {
|
|
20
|
+
color: var(--pc-text-muted);
|
|
21
|
+
text-decoration: none;
|
|
22
|
+
}
|
|
23
|
+
a:hover {
|
|
24
|
+
color: var(--pc-text);
|
|
25
|
+
text-decoration: underline;
|
|
26
|
+
}
|
|
27
|
+
a:focus-visible {
|
|
28
|
+
outline: var(--pc-focus-width) solid var(--pc-focus);
|
|
29
|
+
outline-offset: 2px;
|
|
30
|
+
}
|
|
31
|
+
`];
|
|
32
|
+
render() {
|
|
33
|
+
return html`<a
|
|
34
|
+
part="link"
|
|
35
|
+
href=${PAINTCANVAS_REPOSITORY_URL}
|
|
36
|
+
target="_blank"
|
|
37
|
+
rel="noopener noreferrer"
|
|
38
|
+
>${versionText()}</a
|
|
39
|
+
>`;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
defineElement("pc-version", PcVersion);
|
|
43
|
+
export { PcVersion };
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { PcElement, defineElement, emit } from "./base";
|
|
|
4
4
|
export { PcIcon } from "./elements/PcIcon";
|
|
5
5
|
export { PcButton, type ButtonVariant } from "./elements/PcButton";
|
|
6
6
|
export { PcButtonGroup } from "./elements/PcButtonGroup";
|
|
7
|
+
export { PcButtonMenu, isNarrowerThan, type ButtonMenuItem, } from "./elements/PcButtonMenu";
|
|
7
8
|
export { PcIconToggle } from "./elements/PcIconToggle";
|
|
8
9
|
export { PcToggleCheckbox } from "./elements/PcToggleCheckbox";
|
|
9
10
|
export { PcSlider } from "./elements/PcSlider";
|
|
@@ -27,11 +28,12 @@ export { PcPane, PANE_COLLAPSE_EVENT, type PaneEdge, type PaneOrientation, } fro
|
|
|
27
28
|
export { PcInputSettings, type InputSettingsLike, } from "./elements/PcInputSettings";
|
|
28
29
|
export { PcMatch } from "./elements/PcMatch";
|
|
29
30
|
export { PcColourPair, COLOUR_CLICK_EVENT } from "./elements/PcColourPair";
|
|
30
|
-
export { PcClipboardTools, CLIPBOARD_TOOLS } from "./elements/PcClipboardTools";
|
|
31
|
+
export { PcClipboardTools, CLIPBOARD_MENU_BELOW, CLIPBOARD_TOOLS, } from "./elements/PcClipboardTools";
|
|
31
32
|
export { PcShortcutSettings, type ShortcutSettingsLike, } from "./elements/PcShortcutSettings";
|
|
32
33
|
export { PcAppSettings } from "./elements/PcAppSettings";
|
|
33
34
|
export { PcPanelColours, LONG_PRESS_MS, type ColourModel, } from "./elements/PcPanelColours";
|
|
34
35
|
export { PcStats, formatBytes } from "./elements/PcStats";
|
|
36
|
+
export { PcVersion } from "./elements/PcVersion";
|
|
35
37
|
export { PcThemePicker, THEMES, THEME_ICONS, isTheme, type Theme, } from "./elements/PcThemePicker";
|
|
36
38
|
export { PaintCanvasElement } from "./elements/PaintCanvas";
|
|
37
39
|
export { DEFAULT_NARROW_WIDTH, DEFAULT_SIDE_MODES, LayoutStateController, STATE_EVENT, matchesState, parseSideModes, showsRail, sideModeFor, type InputKind, type LayoutState, type SideMode, type SideModeRule, } from "./layout";
|
package/dist/ui/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { PcElement, defineElement, emit } from "./base/index.js";
|
|
|
5
5
|
import { PcIcon } from "./elements/PcIcon/index.js";
|
|
6
6
|
import { PcButton } from "./elements/PcButton/index.js";
|
|
7
7
|
import { PcButtonGroup } from "./elements/PcButtonGroup/index.js";
|
|
8
|
+
import { PcButtonMenu, isNarrowerThan } from "./elements/PcButtonMenu/index.js";
|
|
8
9
|
import { PcIconToggle } from "./elements/PcIconToggle/index.js";
|
|
9
10
|
import { PcToggleCheckbox } from "./elements/PcToggleCheckbox/index.js";
|
|
10
11
|
import { PcSlider } from "./elements/PcSlider/index.js";
|
|
@@ -28,12 +29,13 @@ import { PANE_COLLAPSE_EVENT, PcPane } from "./elements/PcPane/index.js";
|
|
|
28
29
|
import { PcInputSettings } from "./elements/PcInputSettings/index.js";
|
|
29
30
|
import { PcMatch } from "./elements/PcMatch/index.js";
|
|
30
31
|
import { COLOUR_CLICK_EVENT, PcColourPair } from "./elements/PcColourPair/index.js";
|
|
31
|
-
import { CLIPBOARD_TOOLS, PcClipboardTools } from "./elements/PcClipboardTools/index.js";
|
|
32
|
+
import { CLIPBOARD_MENU_BELOW, CLIPBOARD_TOOLS, PcClipboardTools } from "./elements/PcClipboardTools/index.js";
|
|
32
33
|
import { PcShortcutSettings } from "./elements/PcShortcutSettings/index.js";
|
|
33
34
|
import { PcAppSettings } from "./elements/PcAppSettings/index.js";
|
|
34
35
|
import { LONG_PRESS_MS, PcPanelColours } from "./elements/PcPanelColours/index.js";
|
|
35
36
|
import { PcStats, formatBytes } from "./elements/PcStats/index.js";
|
|
37
|
+
import { PcVersion } from "./elements/PcVersion/index.js";
|
|
36
38
|
import { PcThemePicker, THEME_ICONS } from "./elements/PcThemePicker/index.js";
|
|
37
39
|
import { PaintCanvasElement } from "./elements/PaintCanvas/index.js";
|
|
38
40
|
import { DEFAULT_NARROW_WIDTH, DEFAULT_SIDE_MODES, LayoutStateController, STATE_EVENT, matchesState, parseSideModes, showsRail, sideModeFor } from "./layout/index.js";
|
|
39
|
-
export { CANCEL_CHOICE, CLIPBOARD_TOOLS, COLOUR_CLICK_EVENT, CONTEXT_MENU_TOGGLE_EVENT, DARK_TOKENS, DEFAULT_ICONS, DEFAULT_NARROW_WIDTH, DEFAULT_SIDE_MODES, DIALOG_DISMISS_EVENT, DRAG_THRESHOLD, IconRegistry, LIGHT_TOKENS, LONG_PRESS_MS, LayoutStateController, MENU_MARGIN, OK_CHOICE, PANE_COLLAPSE_EVENT, PaintCanvasElement, PcAppSettings, PcBrushSize, PcButton, PcButtonGroup, PcClipboardTools, PcColourPair, PcContextMenu, PcDialog, PcDialogWindow, PcElement, PcIcon, PcIconToggle, PcInfoTip, PcInputSettings, PcMatch, PcMenu, PcNumberSlider, PcPane, PcPanel, PcPanelColours, PcPopover, PcProfileEditor, PcProfileGraph, PcShortcutSettings, PcSlider, PcSliderRange, PcStats, PcThemePicker, PcToast, PcToggleCheckbox, PointerDrag, STATE_EVENT, THEMES, THEME_ICONS, TOAST_DURATION_MS, TOKENS_CSS, askConfirm, askText, curvePath, defineElement, deletePresetQuestion, dragDelta, emit, fitNumber, formatBytes, icons, installTokens, isDismissingPress, isMenuItem, isTheme, markDismissingPress, matchesState, menuLeft, menuSections, menuTop, movePoint, parseSideModes, rangeFraction, showsRail, sideModeFor, sizeText, tokens };
|
|
41
|
+
export { CANCEL_CHOICE, CLIPBOARD_MENU_BELOW, CLIPBOARD_TOOLS, COLOUR_CLICK_EVENT, CONTEXT_MENU_TOGGLE_EVENT, DARK_TOKENS, DEFAULT_ICONS, DEFAULT_NARROW_WIDTH, DEFAULT_SIDE_MODES, DIALOG_DISMISS_EVENT, DRAG_THRESHOLD, IconRegistry, LIGHT_TOKENS, LONG_PRESS_MS, LayoutStateController, MENU_MARGIN, OK_CHOICE, PANE_COLLAPSE_EVENT, PaintCanvasElement, PcAppSettings, PcBrushSize, PcButton, PcButtonGroup, PcButtonMenu, PcClipboardTools, PcColourPair, PcContextMenu, PcDialog, PcDialogWindow, PcElement, PcIcon, PcIconToggle, PcInfoTip, PcInputSettings, PcMatch, PcMenu, PcNumberSlider, PcPane, PcPanel, PcPanelColours, PcPopover, PcProfileEditor, PcProfileGraph, PcShortcutSettings, PcSlider, PcSliderRange, PcStats, PcThemePicker, PcToast, PcToggleCheckbox, PcVersion, PointerDrag, STATE_EVENT, THEMES, THEME_ICONS, TOAST_DURATION_MS, TOKENS_CSS, askConfirm, askText, curvePath, defineElement, deletePresetQuestion, dragDelta, emit, fitNumber, formatBytes, icons, installTokens, isDismissingPress, isMenuItem, isNarrowerThan, isTheme, markDismissingPress, matchesState, menuLeft, menuSections, menuTop, movePoint, parseSideModes, rangeFraction, showsRail, sideModeFor, sizeText, tokens };
|
|
@@ -16,8 +16,8 @@ export interface SideModeRule {
|
|
|
16
16
|
mode: SideMode;
|
|
17
17
|
below?: number;
|
|
18
18
|
}
|
|
19
|
-
/** Side modes used unless the implementer chooses others: docked, and
|
|
20
|
-
export declare const DEFAULT_SIDE_MODES = "docked,
|
|
19
|
+
/** Side modes used unless the implementer chooses others: docked, and floating below 600px wide */
|
|
20
|
+
export declare const DEFAULT_SIDE_MODES = "docked, floating@600";
|
|
21
21
|
/** Layout width (CSS pixels) below which the layout counts as narrow, unless the implementer chooses another */
|
|
22
22
|
export declare const DEFAULT_NARROW_WIDTH = 600;
|
|
23
23
|
/**
|
package/dist/ui/layout/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var SIDE_MODES = [
|
|
|
14
14
|
* showsRail("docked"); // false
|
|
15
15
|
*/
|
|
16
16
|
var showsRail = (mode) => mode === "rail" || mode === "overlay";
|
|
17
|
-
/** Side modes used unless the implementer chooses others: docked, and
|
|
18
|
-
var DEFAULT_SIDE_MODES = "docked,
|
|
17
|
+
/** Side modes used unless the implementer chooses others: docked, and floating below 600px wide */
|
|
18
|
+
var DEFAULT_SIDE_MODES = "docked, floating@600";
|
|
19
19
|
/** Layout width (CSS pixels) below which the layout counts as narrow, unless the implementer chooses another */
|
|
20
20
|
var DEFAULT_NARROW_WIDTH = 600;
|
|
21
21
|
/**
|
package/locales/en-GB.json
CHANGED
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
"paintCanvas.palette.hue": "Hue",
|
|
67
67
|
"paintCanvas.palette.saturation": "Saturation",
|
|
68
68
|
"paintCanvas.palette.lightness": "Lightness",
|
|
69
|
-
"paintCanvas.palette.saved": "
|
|
70
|
-
"paintCanvas.palette.add": "Save {colour} to
|
|
69
|
+
"paintCanvas.palette.saved": "Colour palettes",
|
|
70
|
+
"paintCanvas.palette.add": "Save {colour} to {name}",
|
|
71
71
|
"paintCanvas.palette.colourActions": "{colour} actions",
|
|
72
72
|
"paintCanvas.palette.deleteColour": "Delete colour",
|
|
73
73
|
"paintCanvas.palette.deleteMessage": "Do you want to delete this colour?",
|
|
@@ -75,11 +75,24 @@
|
|
|
75
75
|
"paintCanvas.palette.import": "Import",
|
|
76
76
|
"paintCanvas.palette.export": "Export",
|
|
77
77
|
"paintCanvas.palette.importFile": "Import colour palette file",
|
|
78
|
-
"paintCanvas.palette.imported.one": "
|
|
79
|
-
"paintCanvas.palette.imported.other": "
|
|
78
|
+
"paintCanvas.palette.imported.one": "Imported {count} colour palette",
|
|
79
|
+
"paintCanvas.palette.imported.other": "Imported {count} colour palettes",
|
|
80
80
|
"paintCanvas.palette.fileIncompatible": "Colour palette JSON file not compatible",
|
|
81
|
+
"paintCanvas.palette.fileUnsupported": "Unsupported colour palettes file version",
|
|
81
82
|
"paintCanvas.palette.fileReadFailed": "Failed to read colour palette JSON file",
|
|
82
83
|
"paintCanvas.palette.exportFailed": "Error exporting colour palette JSON file",
|
|
84
|
+
"paintCanvas.palette.newPalette": "New palette",
|
|
85
|
+
"paintCanvas.palette.newPaletteHeading": "New colour palette",
|
|
86
|
+
"paintCanvas.palette.name": "Name",
|
|
87
|
+
"paintCanvas.palette.defaultName": "My palette",
|
|
88
|
+
"paintCanvas.palette.renameHeading": "Rename colour palette",
|
|
89
|
+
"paintCanvas.palette.paletteActions": "{name} actions",
|
|
90
|
+
"paintCanvas.palette.renamePalette": "Rename…",
|
|
91
|
+
"paintCanvas.palette.exportPalette": "Export",
|
|
92
|
+
"paintCanvas.palette.deletePalette": "Delete…",
|
|
93
|
+
"paintCanvas.palette.deletePaletteHeading": "Delete colour palette",
|
|
94
|
+
"paintCanvas.palette.deletePaletteConfirm": "Delete \"{name}\"? This can't be undone.",
|
|
95
|
+
"paintCanvas.palette.nothingToExport": "No colour palettes to export",
|
|
83
96
|
"paintCanvas.toolbar.label": "Tools",
|
|
84
97
|
"paintCanvas.toolbar.layers": "Layers",
|
|
85
98
|
"paintCanvas.toolbar.menu": "Menu",
|
|
@@ -108,7 +121,7 @@
|
|
|
108
121
|
"paintCanvas.brushMenu.size": "{tool} size",
|
|
109
122
|
"paintCanvas.numberSlider.hint": "Drag sideways to change, or tap to type",
|
|
110
123
|
"paintCanvas.brushMenu.newPreset": "New preset",
|
|
111
|
-
"paintCanvas.brushMenu.create": "
|
|
124
|
+
"paintCanvas.brushMenu.create": "New brush",
|
|
112
125
|
"paintCanvas.brushMenu.import": "Import",
|
|
113
126
|
"paintCanvas.brushMenu.export": "Export",
|
|
114
127
|
"paintCanvas.presets.myPresets": "My presets",
|
|
@@ -125,6 +138,7 @@
|
|
|
125
138
|
"paintCanvas.presets.imported.one": "Imported {count} brush preset",
|
|
126
139
|
"paintCanvas.presets.imported.other": "Imported {count} brush presets",
|
|
127
140
|
"paintCanvas.presets.fileIncompatible": "Brush preset JSON file not compatible",
|
|
141
|
+
"paintCanvas.presets.fileUnsupported": "Unsupported brush presets file version",
|
|
128
142
|
"paintCanvas.presets.fileReadFailed": "Failed to read brush preset JSON file",
|
|
129
143
|
"paintCanvas.presets.exportFailed": "Error exporting brush preset JSON file",
|
|
130
144
|
"paintCanvas.presets.nothingToExport": "No brush presets to export",
|
|
@@ -163,6 +177,8 @@
|
|
|
163
177
|
"paintCanvas.layers.alphaLock": "Alpha lock",
|
|
164
178
|
"paintCanvas.layers.blendMode": "Blending mode",
|
|
165
179
|
"paintCanvas.layers.actions": "Layer actions",
|
|
180
|
+
"paintCanvas.layers.rename": "Rename…",
|
|
181
|
+
"paintCanvas.layers.renameTitle": "Rename layer",
|
|
166
182
|
"paintCanvas.layers.reorder": "Reorder {name}: drag, or press for actions",
|
|
167
183
|
"paintCanvas.layers.duplicate": "Duplicate",
|
|
168
184
|
"paintCanvas.layers.createMask": "Create mask",
|
|
@@ -288,13 +304,20 @@
|
|
|
288
304
|
"paintCanvas.settings.importFile": "Import settings file",
|
|
289
305
|
"paintCanvas.settings.imported": "Settings imported",
|
|
290
306
|
"paintCanvas.settings.fileIncompatible": "Settings JSON file not compatible",
|
|
307
|
+
"paintCanvas.settings.fileUnsupported": "Unsupported settings file version",
|
|
291
308
|
"paintCanvas.settings.fileReadFailed": "Failed to read settings JSON file",
|
|
292
309
|
"paintCanvas.settings.exportFailed": "Error exporting settings JSON file",
|
|
310
|
+
"paintCanvas.settings.gpu": "Draw with the GPU",
|
|
311
|
+
"paintCanvas.settings.gpuHint": "Try this if drawing is slow. It applies after reloading the page.",
|
|
312
|
+
"paintCanvas.settings.reloadToApply": "Reload the page to apply this change.",
|
|
293
313
|
"paintCanvas.stats.label": "Canvas details",
|
|
294
314
|
"paintCanvas.stats.size": "Canvas: {width} × {height} px",
|
|
295
315
|
"paintCanvas.stats.zoom": "Zoom: {zoom}",
|
|
296
316
|
"paintCanvas.stats.colour": "Colour: {colour}",
|
|
297
317
|
"paintCanvas.stats.stored": "Stored: {size}",
|
|
318
|
+
"paintCanvas.stats.remoteSaving": "Saving to {store}…",
|
|
319
|
+
"paintCanvas.stats.remoteFailed": "Couldn't save to {store}",
|
|
320
|
+
"paintCanvas.stats.remoteStore": "the cloud",
|
|
298
321
|
"paintCanvas.theme.label": "Theme",
|
|
299
322
|
"paintCanvas.theme.light": "Light",
|
|
300
323
|
"paintCanvas.theme.dark": "Dark",
|
package/locales/en-US.json
CHANGED
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
"paintCanvas.palette.hue": "Hue",
|
|
67
67
|
"paintCanvas.palette.saturation": "Saturation",
|
|
68
68
|
"paintCanvas.palette.lightness": "Lightness",
|
|
69
|
-
"paintCanvas.palette.saved": "
|
|
70
|
-
"paintCanvas.palette.add": "Save {colour} to
|
|
69
|
+
"paintCanvas.palette.saved": "Color palettes",
|
|
70
|
+
"paintCanvas.palette.add": "Save {colour} to {name}",
|
|
71
71
|
"paintCanvas.palette.colourActions": "{colour} actions",
|
|
72
72
|
"paintCanvas.palette.deleteColour": "Delete color",
|
|
73
73
|
"paintCanvas.palette.deleteMessage": "Do you want to delete this color?",
|
|
@@ -75,11 +75,24 @@
|
|
|
75
75
|
"paintCanvas.palette.import": "Import",
|
|
76
76
|
"paintCanvas.palette.export": "Export",
|
|
77
77
|
"paintCanvas.palette.importFile": "Import color palette file",
|
|
78
|
-
"paintCanvas.palette.imported.one": "
|
|
79
|
-
"paintCanvas.palette.imported.other": "
|
|
78
|
+
"paintCanvas.palette.imported.one": "Imported {count} color palette",
|
|
79
|
+
"paintCanvas.palette.imported.other": "Imported {count} color palettes",
|
|
80
80
|
"paintCanvas.palette.fileIncompatible": "Color palette JSON file not compatible",
|
|
81
|
+
"paintCanvas.palette.fileUnsupported": "Unsupported color palettes file version",
|
|
81
82
|
"paintCanvas.palette.fileReadFailed": "Failed to read color palette JSON file",
|
|
82
83
|
"paintCanvas.palette.exportFailed": "Error exporting color palette JSON file",
|
|
84
|
+
"paintCanvas.palette.newPalette": "New palette",
|
|
85
|
+
"paintCanvas.palette.newPaletteHeading": "New color palette",
|
|
86
|
+
"paintCanvas.palette.name": "Name",
|
|
87
|
+
"paintCanvas.palette.defaultName": "My palette",
|
|
88
|
+
"paintCanvas.palette.renameHeading": "Rename color palette",
|
|
89
|
+
"paintCanvas.palette.paletteActions": "{name} actions",
|
|
90
|
+
"paintCanvas.palette.renamePalette": "Rename…",
|
|
91
|
+
"paintCanvas.palette.exportPalette": "Export",
|
|
92
|
+
"paintCanvas.palette.deletePalette": "Delete…",
|
|
93
|
+
"paintCanvas.palette.deletePaletteHeading": "Delete color palette",
|
|
94
|
+
"paintCanvas.palette.deletePaletteConfirm": "Delete \"{name}\"? This can't be undone.",
|
|
95
|
+
"paintCanvas.palette.nothingToExport": "No color palettes to export",
|
|
83
96
|
"paintCanvas.toolbar.label": "Tools",
|
|
84
97
|
"paintCanvas.toolbar.layers": "Layers",
|
|
85
98
|
"paintCanvas.toolbar.menu": "Menu",
|
|
@@ -108,7 +121,7 @@
|
|
|
108
121
|
"paintCanvas.brushMenu.size": "{tool} size",
|
|
109
122
|
"paintCanvas.numberSlider.hint": "Drag sideways to change, or tap to type",
|
|
110
123
|
"paintCanvas.brushMenu.newPreset": "New preset",
|
|
111
|
-
"paintCanvas.brushMenu.create": "
|
|
124
|
+
"paintCanvas.brushMenu.create": "New brush",
|
|
112
125
|
"paintCanvas.brushMenu.import": "Import",
|
|
113
126
|
"paintCanvas.brushMenu.export": "Export",
|
|
114
127
|
"paintCanvas.presets.myPresets": "My presets",
|
|
@@ -125,6 +138,7 @@
|
|
|
125
138
|
"paintCanvas.presets.imported.one": "Imported {count} brush preset",
|
|
126
139
|
"paintCanvas.presets.imported.other": "Imported {count} brush presets",
|
|
127
140
|
"paintCanvas.presets.fileIncompatible": "Brush preset JSON file not compatible",
|
|
141
|
+
"paintCanvas.presets.fileUnsupported": "Unsupported brush presets file version",
|
|
128
142
|
"paintCanvas.presets.fileReadFailed": "Failed to read brush preset JSON file",
|
|
129
143
|
"paintCanvas.presets.exportFailed": "Error exporting brush preset JSON file",
|
|
130
144
|
"paintCanvas.presets.nothingToExport": "No brush presets to export",
|
|
@@ -163,6 +177,8 @@
|
|
|
163
177
|
"paintCanvas.layers.alphaLock": "Alpha lock",
|
|
164
178
|
"paintCanvas.layers.blendMode": "Blending mode",
|
|
165
179
|
"paintCanvas.layers.actions": "Layer actions",
|
|
180
|
+
"paintCanvas.layers.rename": "Rename…",
|
|
181
|
+
"paintCanvas.layers.renameTitle": "Rename layer",
|
|
166
182
|
"paintCanvas.layers.reorder": "Reorder {name}: drag, or press for actions",
|
|
167
183
|
"paintCanvas.layers.duplicate": "Duplicate",
|
|
168
184
|
"paintCanvas.layers.createMask": "Create mask",
|
|
@@ -288,13 +304,20 @@
|
|
|
288
304
|
"paintCanvas.settings.importFile": "Import settings file",
|
|
289
305
|
"paintCanvas.settings.imported": "Settings imported",
|
|
290
306
|
"paintCanvas.settings.fileIncompatible": "Settings JSON file not compatible",
|
|
307
|
+
"paintCanvas.settings.fileUnsupported": "Unsupported settings file version",
|
|
291
308
|
"paintCanvas.settings.fileReadFailed": "Failed to read settings JSON file",
|
|
292
309
|
"paintCanvas.settings.exportFailed": "Error exporting settings JSON file",
|
|
310
|
+
"paintCanvas.settings.gpu": "Draw with the GPU",
|
|
311
|
+
"paintCanvas.settings.gpuHint": "Try this if drawing is slow. It applies after reloading the page.",
|
|
312
|
+
"paintCanvas.settings.reloadToApply": "Reload the page to apply this change.",
|
|
293
313
|
"paintCanvas.stats.label": "Canvas details",
|
|
294
314
|
"paintCanvas.stats.size": "Canvas: {width} × {height} px",
|
|
295
315
|
"paintCanvas.stats.zoom": "Zoom: {zoom}",
|
|
296
316
|
"paintCanvas.stats.colour": "Color: {colour}",
|
|
297
317
|
"paintCanvas.stats.stored": "Stored: {size}",
|
|
318
|
+
"paintCanvas.stats.remoteSaving": "Saving to {store}…",
|
|
319
|
+
"paintCanvas.stats.remoteFailed": "Couldn't save to {store}",
|
|
320
|
+
"paintCanvas.stats.remoteStore": "the cloud",
|
|
298
321
|
"paintCanvas.theme.label": "Theme",
|
|
299
322
|
"paintCanvas.theme.light": "Light",
|
|
300
323
|
"paintCanvas.theme.dark": "Dark",
|
package/locales/fr.json
CHANGED
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
"paintCanvas.palette.hue": "Teinte",
|
|
67
67
|
"paintCanvas.palette.saturation": "Saturation",
|
|
68
68
|
"paintCanvas.palette.lightness": "Luminosité",
|
|
69
|
-
"paintCanvas.palette.saved": "
|
|
70
|
-
"paintCanvas.palette.add": "Enregistrer {colour} dans
|
|
69
|
+
"paintCanvas.palette.saved": "Palettes de couleurs",
|
|
70
|
+
"paintCanvas.palette.add": "Enregistrer {colour} dans {name}",
|
|
71
71
|
"paintCanvas.palette.colourActions": "Actions pour {colour}",
|
|
72
72
|
"paintCanvas.palette.deleteColour": "Supprimer la couleur",
|
|
73
73
|
"paintCanvas.palette.deleteMessage": "Voulez-vous supprimer cette couleur ?",
|
|
@@ -75,11 +75,24 @@
|
|
|
75
75
|
"paintCanvas.palette.import": "Importer",
|
|
76
76
|
"paintCanvas.palette.export": "Exporter",
|
|
77
77
|
"paintCanvas.palette.importFile": "Importer un fichier de palette de couleurs",
|
|
78
|
-
"paintCanvas.palette.imported.one": "{count}
|
|
79
|
-
"paintCanvas.palette.imported.other": "{count} couleurs
|
|
78
|
+
"paintCanvas.palette.imported.one": "{count} palette de couleurs importée",
|
|
79
|
+
"paintCanvas.palette.imported.other": "{count} palettes de couleurs importées",
|
|
80
80
|
"paintCanvas.palette.fileIncompatible": "Fichier JSON de palette de couleurs incompatible",
|
|
81
|
+
"paintCanvas.palette.fileUnsupported": "Version de fichier de palettes de couleurs non prise en charge",
|
|
81
82
|
"paintCanvas.palette.fileReadFailed": "Échec de la lecture du fichier JSON de palette de couleurs",
|
|
82
83
|
"paintCanvas.palette.exportFailed": "Erreur lors de l'exportation du fichier JSON de palette de couleurs",
|
|
84
|
+
"paintCanvas.palette.newPalette": "Nouvelle palette",
|
|
85
|
+
"paintCanvas.palette.newPaletteHeading": "Nouvelle palette de couleurs",
|
|
86
|
+
"paintCanvas.palette.name": "Nom",
|
|
87
|
+
"paintCanvas.palette.defaultName": "Ma palette",
|
|
88
|
+
"paintCanvas.palette.renameHeading": "Renommer la palette de couleurs",
|
|
89
|
+
"paintCanvas.palette.paletteActions": "Actions de {name}",
|
|
90
|
+
"paintCanvas.palette.renamePalette": "Renommer…",
|
|
91
|
+
"paintCanvas.palette.exportPalette": "Exporter",
|
|
92
|
+
"paintCanvas.palette.deletePalette": "Supprimer…",
|
|
93
|
+
"paintCanvas.palette.deletePaletteHeading": "Supprimer la palette de couleurs",
|
|
94
|
+
"paintCanvas.palette.deletePaletteConfirm": "Supprimer « {name} » ? Cette action est irréversible.",
|
|
95
|
+
"paintCanvas.palette.nothingToExport": "Aucune palette de couleurs à exporter",
|
|
83
96
|
"paintCanvas.toolbar.label": "Outils",
|
|
84
97
|
"paintCanvas.toolbar.layers": "Calques",
|
|
85
98
|
"paintCanvas.toolbar.menu": "Menu",
|
|
@@ -108,7 +121,7 @@
|
|
|
108
121
|
"paintCanvas.brushMenu.size": "Taille : {tool}",
|
|
109
122
|
"paintCanvas.numberSlider.hint": "Faire glisser latéralement pour modifier, ou toucher pour saisir",
|
|
110
123
|
"paintCanvas.brushMenu.newPreset": "Nouveau préréglage",
|
|
111
|
-
"paintCanvas.brushMenu.create": "
|
|
124
|
+
"paintCanvas.brushMenu.create": "Nouveau pinceau",
|
|
112
125
|
"paintCanvas.brushMenu.import": "Importer",
|
|
113
126
|
"paintCanvas.brushMenu.export": "Exporter",
|
|
114
127
|
"paintCanvas.presets.myPresets": "Mes préréglages",
|
|
@@ -125,6 +138,7 @@
|
|
|
125
138
|
"paintCanvas.presets.imported.one": "{count} préréglage de pinceau importé",
|
|
126
139
|
"paintCanvas.presets.imported.other": "{count} préréglages de pinceau importés",
|
|
127
140
|
"paintCanvas.presets.fileIncompatible": "Fichier JSON de préréglages de pinceau incompatible",
|
|
141
|
+
"paintCanvas.presets.fileUnsupported": "Version de fichier de préréglages de pinceau non prise en charge",
|
|
128
142
|
"paintCanvas.presets.fileReadFailed": "Échec de la lecture du fichier JSON de préréglages de pinceau",
|
|
129
143
|
"paintCanvas.presets.exportFailed": "Erreur lors de l’exportation du fichier JSON de préréglages de pinceau",
|
|
130
144
|
"paintCanvas.presets.nothingToExport": "Aucun préréglage de pinceau à exporter",
|
|
@@ -163,6 +177,8 @@
|
|
|
163
177
|
"paintCanvas.layers.alphaLock": "Verrouillage alpha",
|
|
164
178
|
"paintCanvas.layers.blendMode": "Mode de fusion",
|
|
165
179
|
"paintCanvas.layers.actions": "Actions du calque",
|
|
180
|
+
"paintCanvas.layers.rename": "Renommer…",
|
|
181
|
+
"paintCanvas.layers.renameTitle": "Renommer le calque",
|
|
166
182
|
"paintCanvas.layers.reorder": "Réorganiser {name} : faire glisser, ou appuyer pour les actions",
|
|
167
183
|
"paintCanvas.layers.duplicate": "Dupliquer",
|
|
168
184
|
"paintCanvas.layers.createMask": "Créer un masque",
|
|
@@ -288,13 +304,20 @@
|
|
|
288
304
|
"paintCanvas.settings.importFile": "Importer un fichier de réglages",
|
|
289
305
|
"paintCanvas.settings.imported": "Réglages importés",
|
|
290
306
|
"paintCanvas.settings.fileIncompatible": "Fichier JSON de réglages incompatible",
|
|
307
|
+
"paintCanvas.settings.fileUnsupported": "Version de fichier de paramètres non prise en charge",
|
|
291
308
|
"paintCanvas.settings.fileReadFailed": "Échec de la lecture du fichier JSON de réglages",
|
|
292
309
|
"paintCanvas.settings.exportFailed": "Erreur lors de l'exportation du fichier JSON de réglages",
|
|
310
|
+
"paintCanvas.settings.gpu": "Dessiner avec le GPU",
|
|
311
|
+
"paintCanvas.settings.gpuHint": "Essayez ceci si le dessin est lent. Le changement s’applique après le rechargement de la page.",
|
|
312
|
+
"paintCanvas.settings.reloadToApply": "Rechargez la page pour appliquer ce changement.",
|
|
293
313
|
"paintCanvas.stats.label": "Détails de la toile",
|
|
294
314
|
"paintCanvas.stats.size": "Toile : {width} × {height} px",
|
|
295
315
|
"paintCanvas.stats.zoom": "Zoom : {zoom}",
|
|
296
316
|
"paintCanvas.stats.colour": "Couleur : {colour}",
|
|
297
317
|
"paintCanvas.stats.stored": "Stocké : {size}",
|
|
318
|
+
"paintCanvas.stats.remoteSaving": "Enregistrement dans {store}…",
|
|
319
|
+
"paintCanvas.stats.remoteFailed": "Impossible d'enregistrer dans {store}",
|
|
320
|
+
"paintCanvas.stats.remoteStore": "le cloud",
|
|
298
321
|
"paintCanvas.theme.label": "Thème",
|
|
299
322
|
"paintCanvas.theme.light": "Clair",
|
|
300
323
|
"paintCanvas.theme.dark": "Sombre",
|