@cyanheads/pixoo-mcp-server 1.1.4 → 1.2.1
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/AGENTS.md +11 -7
- package/CLAUDE.md +11 -7
- package/Dockerfile +30 -10
- package/README.md +61 -85
- package/changelog/1.2.x/1.2.0.md +28 -0
- package/changelog/1.2.x/1.2.1.md +35 -0
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js +1 -0
- package/dist/mcp-server/resources/definitions/pixoo-design-guide.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts +77 -11
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js +69 -59
- package/dist/mcp-server/tools/definitions/pixoo-compose-scene.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.d.ts +3 -3
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js +57 -45
- package/dist/mcp-server/tools/definitions/pixoo-design-brief.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts +1 -0
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js +121 -32
- package/dist/mcp-server/tools/definitions/pixoo-display-text.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js +17 -3
- package/dist/mcp-server/tools/definitions/pixoo-overlay-text.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js +9 -8
- package/dist/mcp-server/tools/definitions/pixoo-push-image.tool.js.map +1 -1
- package/dist/mcp-server/tools/device-push.d.ts +24 -0
- package/dist/mcp-server/tools/device-push.d.ts.map +1 -0
- package/dist/mcp-server/tools/device-push.js +50 -0
- package/dist/mcp-server/tools/device-push.js.map +1 -0
- package/dist/renderer/icons.d.ts +14 -4
- package/dist/renderer/icons.d.ts.map +1 -1
- package/dist/renderer/icons.js +30 -22
- package/dist/renderer/icons.js.map +1 -1
- package/dist/renderer/keyframes.d.ts +35 -3
- package/dist/renderer/keyframes.d.ts.map +1 -1
- package/dist/renderer/keyframes.js +85 -52
- package/dist/renderer/keyframes.js.map +1 -1
- package/dist/renderer/preview.d.ts +17 -19
- package/dist/renderer/preview.d.ts.map +1 -1
- package/dist/renderer/preview.js +55 -34
- package/dist/renderer/preview.js.map +1 -1
- package/dist/renderer/remote-image.d.ts +10 -2
- package/dist/renderer/remote-image.d.ts.map +1 -1
- package/dist/renderer/remote-image.js +13 -1
- package/dist/renderer/remote-image.js.map +1 -1
- package/dist/renderer/scene-renderer.d.ts +14 -9
- package/dist/renderer/scene-renderer.d.ts.map +1 -1
- package/dist/renderer/scene-renderer.js +166 -137
- package/dist/renderer/scene-renderer.js.map +1 -1
- package/dist/renderer/text-engine.d.ts +14 -1
- package/dist/renderer/text-engine.d.ts.map +1 -1
- package/dist/renderer/text-engine.js +22 -4
- package/dist/renderer/text-engine.js.map +1 -1
- package/dist/services/pixoo/pixoo-service.js +1 -1
- package/dist/services/pixoo/pixoo-service.js.map +1 -1
- package/package.json +6 -5
- package/server.json +3 -3
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
6
|
import { JsonRpcErrorCode, validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { resolveColor } from '@cyanheads/pixoo-toolkit';
|
|
8
|
+
import { getServerConfig } from '../../../config/server-config.js';
|
|
8
9
|
import { classifyDeviceFailure, getPixooService } from '../../../services/pixoo/pixoo-service.js';
|
|
9
10
|
export const pixooOverlayText = tool('pixoo_overlay_text', {
|
|
10
11
|
title: 'pixoo_overlay_text',
|
|
@@ -25,14 +26,14 @@ export const pixooOverlayText = tool('pixoo_overlay_text', {
|
|
|
25
26
|
.min(0)
|
|
26
27
|
.max(64)
|
|
27
28
|
.default(0)
|
|
28
|
-
.describe('X start position on display
|
|
29
|
+
.describe('X start position, 0 to display size − 1 (63 on a 64px display; default: 0).'),
|
|
29
30
|
y: z
|
|
30
31
|
.number()
|
|
31
32
|
.int()
|
|
32
33
|
.min(0)
|
|
33
34
|
.max(64)
|
|
34
35
|
.default(0)
|
|
35
|
-
.describe('Y start position on display
|
|
36
|
+
.describe('Y start position, 0 to display size − 1 (63 on a 64px display; default: 0).'),
|
|
36
37
|
font: z
|
|
37
38
|
.number()
|
|
38
39
|
.int()
|
|
@@ -64,7 +65,7 @@ export const pixooOverlayText = tool('pixoo_overlay_text', {
|
|
|
64
65
|
.int()
|
|
65
66
|
.min(0)
|
|
66
67
|
.optional()
|
|
67
|
-
.describe('Text region width in pixels (
|
|
68
|
+
.describe('Text region width in pixels, 0 to display size (64 on a 64px display; defaults to display width).'),
|
|
68
69
|
}),
|
|
69
70
|
output: z.object({
|
|
70
71
|
acknowledged: z
|
|
@@ -130,6 +131,19 @@ export const pixooOverlayText = tool('pixoo_overlay_text', {
|
|
|
130
131
|
if (!input.text) {
|
|
131
132
|
throw validationError('text is required when mode is "set".');
|
|
132
133
|
}
|
|
134
|
+
// The schema's ceiling is fixed at import; the configured display sets the real edge.
|
|
135
|
+
const size = getServerConfig().pixooSize;
|
|
136
|
+
for (const [axis, value] of [
|
|
137
|
+
['x', input.x],
|
|
138
|
+
['y', input.y],
|
|
139
|
+
]) {
|
|
140
|
+
if (value >= size) {
|
|
141
|
+
throw validationError(`${axis} must be 0–${size - 1} on a ${size}px display (PIXOO_SIZE=${size}); received ${value}.`, { [axis]: value, max: size - 1 });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (input.width !== undefined && input.width > size) {
|
|
145
|
+
throw validationError(`width must be 0–${size} on a ${size}px display (PIXOO_SIZE=${size}); received ${input.width}.`, { width: input.width, max: size });
|
|
146
|
+
}
|
|
133
147
|
ctx.log.info('Setting text overlay', { id: input.id, textLength: input.text.length });
|
|
134
148
|
let color;
|
|
135
149
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixoo-overlay-text.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-overlay-text.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAE3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACzD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EACT,ubAAub;IACzb,WAAW,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;IAE7D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACvF,EAAE,EAAE,CAAC;aACF,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAChF,CAAC,EAAE,CAAC;aACD,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"pixoo-overlay-text.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-overlay-text.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixoo-push-image.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-push-image.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"pixoo-push-image.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-push-image.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAajE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwLzB,CAAC"}
|
|
@@ -7,7 +7,8 @@ import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
|
7
7
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
8
8
|
import { loadImage } from '@cyanheads/pixoo-toolkit';
|
|
9
9
|
import { getServerConfig } from '../../../config/server-config.js';
|
|
10
|
-
import {
|
|
10
|
+
import { pushKeepingPreview, visibilityNotice } from '../device-push.js';
|
|
11
|
+
import { autoSavePreview, encodePreviewBlock, savePngPreview, } from '../../../renderer/preview.js';
|
|
11
12
|
import { fetchRemoteImageToTempPng, isRemoteSource } from '../../../renderer/remote-image.js';
|
|
12
13
|
import { getPixooService } from '../../../services/pixoo/pixoo-service.js';
|
|
13
14
|
export const pixooPushImage = tool('pixoo_push_image', {
|
|
@@ -130,18 +131,18 @@ export const pixooPushImage = tool('pixoo_push_image', {
|
|
|
130
131
|
// absent from `output` — routing it through ctx.content carries the base64 once
|
|
131
132
|
// instead of duplicating it into structuredContent.
|
|
132
133
|
ctx.content.image(encodePreviewBlock(canvas).data, 'image/png');
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
const
|
|
136
|
-
if (savedPath)
|
|
137
|
-
outputFiles.push(savedPath);
|
|
138
|
-
// Push
|
|
134
|
+
const baseName = `push-image-${Date.now()}`;
|
|
135
|
+
const writePreview = (dir) => savePngPreview(canvas, dir, baseName);
|
|
136
|
+
const outputFiles = await autoSavePreview(writePreview);
|
|
139
137
|
let pushed = false;
|
|
140
138
|
let deviceState;
|
|
141
139
|
if (input.push) {
|
|
142
140
|
const svc = getPixooService();
|
|
143
|
-
deviceState = await svc.pushFrame(canvas, ctx);
|
|
141
|
+
deviceState = await pushKeepingPreview(() => svc.pushFrame(canvas, ctx), outputFiles, writePreview);
|
|
144
142
|
pushed = true;
|
|
143
|
+
const notice = visibilityNotice(deviceState);
|
|
144
|
+
if (notice)
|
|
145
|
+
ctx.enrich.notice(notice);
|
|
145
146
|
}
|
|
146
147
|
return {
|
|
147
148
|
pushed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pixoo-push-image.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-push-image.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAkB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"pixoo-push-image.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/pixoo-push-image.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The post-render push path shared by the three push tools: keep the
|
|
3
|
+
* rendered preview when a push fails, and flag a successful push the panel won't show.
|
|
4
|
+
* @module mcp-server/tools/device-push
|
|
5
|
+
*/
|
|
6
|
+
import { type PreviewWriter } from '../../renderer/preview.js';
|
|
7
|
+
import type { DeviceStateSnapshot } from '../../services/pixoo/pixoo-service.js';
|
|
8
|
+
/** Brightness at or below this reads as dark on the panel. */
|
|
9
|
+
export declare const DIM_BRIGHTNESS = 10;
|
|
10
|
+
/**
|
|
11
|
+
* Run a device push. A failed push rethrows its typed error — code, `reason`,
|
|
12
|
+
* `retryable`, and recovery hint untouched — with the preview's path added as
|
|
13
|
+
* `data.outputFiles` and named in the message: the files this call already saved, or
|
|
14
|
+
* a copy written under the OS temp dir when it saved none. Error results carry no
|
|
15
|
+
* `ctx.content` blocks, so the file is how the render outlives the failure.
|
|
16
|
+
*/
|
|
17
|
+
export declare function pushKeepingPreview(push: () => Promise<DeviceStateSnapshot>, savedFiles: string[], writePreview: PreviewWriter): Promise<DeviceStateSnapshot>;
|
|
18
|
+
/**
|
|
19
|
+
* Name every reason a pushed render may not show on the panel, each with the call
|
|
20
|
+
* that fixes it. Undefined when the device reads as visible, or when the read-back
|
|
21
|
+
* never reached it and there is nothing to judge.
|
|
22
|
+
*/
|
|
23
|
+
export declare function visibilityNotice(state: DeviceStateSnapshot): string | undefined;
|
|
24
|
+
//# sourceMappingURL=device-push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-push.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/device-push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,8DAA8D;AAC9D,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,EACxC,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAa9B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAgB/E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The post-render push path shared by the three push tools: keep the
|
|
3
|
+
* rendered preview when a push fails, and flag a successful push the panel won't show.
|
|
4
|
+
* @module mcp-server/tools/device-push
|
|
5
|
+
*/
|
|
6
|
+
import { McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { saveTempPreview } from '../../renderer/preview.js';
|
|
8
|
+
/** Brightness at or below this reads as dark on the panel. */
|
|
9
|
+
export const DIM_BRIGHTNESS = 10;
|
|
10
|
+
/**
|
|
11
|
+
* Run a device push. A failed push rethrows its typed error — code, `reason`,
|
|
12
|
+
* `retryable`, and recovery hint untouched — with the preview's path added as
|
|
13
|
+
* `data.outputFiles` and named in the message: the files this call already saved, or
|
|
14
|
+
* a copy written under the OS temp dir when it saved none. Error results carry no
|
|
15
|
+
* `ctx.content` blocks, so the file is how the render outlives the failure.
|
|
16
|
+
*/
|
|
17
|
+
export async function pushKeepingPreview(push, savedFiles, writePreview) {
|
|
18
|
+
try {
|
|
19
|
+
return await push();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
if (!(err instanceof McpError))
|
|
23
|
+
throw err;
|
|
24
|
+
const outputFiles = savedFiles.length > 0 ? savedFiles : [await saveTempPreview(writePreview)];
|
|
25
|
+
throw new McpError(err.code, `${err.message.replace(/[^.!?]$/, '$&.')} Rendered preview saved to ${outputFiles.join(', ')}.`, { ...err.data, outputFiles }, { cause: err });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Name every reason a pushed render may not show on the panel, each with the call
|
|
30
|
+
* that fixes it. Undefined when the device reads as visible, or when the read-back
|
|
31
|
+
* never reached it and there is nothing to judge.
|
|
32
|
+
*/
|
|
33
|
+
export function visibilityNotice(state) {
|
|
34
|
+
if (!state.reachable)
|
|
35
|
+
return;
|
|
36
|
+
const problems = [];
|
|
37
|
+
if (state.screenOn === false) {
|
|
38
|
+
problems.push('the screen is off (pixoo_control_device with screen: "on")');
|
|
39
|
+
}
|
|
40
|
+
if (state.brightness !== undefined && state.brightness <= DIM_BRIGHTNESS) {
|
|
41
|
+
problems.push(`brightness is ${state.brightness} (pixoo_control_device with brightness: 80)`);
|
|
42
|
+
}
|
|
43
|
+
if (state.channel !== undefined && state.channel !== 'custom') {
|
|
44
|
+
problems.push(`the device is on the ${state.channel} channel (pixoo_control_device with channel: "custom")`);
|
|
45
|
+
}
|
|
46
|
+
if (problems.length === 0)
|
|
47
|
+
return;
|
|
48
|
+
return `Pushed, but the render may not be visible: ${problems.join('; ')}.`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=device-push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-push.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/device-push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAsB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG5E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAwC,EACxC,UAAoB,EACpB,YAA2B;IAE3B,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC;YAAE,MAAM,GAAG,CAAC;QAC1C,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/F,MAAM,IAAI,QAAQ,CAChB,GAAG,CAAC,IAAI,EACR,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,8BAA8B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC/F,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,EAC5B,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA0B;IACzD,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,IAAI,cAAc,EAAE,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,UAAU,6CAA6C,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9D,QAAQ,CAAC,IAAI,CACX,wBAAwB,KAAK,CAAC,OAAO,wDAAwD,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAClC,OAAO,8CAA8C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9E,CAAC"}
|
package/dist/renderer/icons.d.ts
CHANGED
|
@@ -2,15 +2,25 @@
|
|
|
2
2
|
* @fileoverview Built-in icon registry with SVG path data by category.
|
|
3
3
|
* @module renderer/icons
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* An icon's SVG path data, split by how each part draws. `fill` subpaths rasterize with the
|
|
7
|
+
* even-odd rule; `stroke` subpaths draw as 1-pixel lines along their segments — the parts
|
|
8
|
+
* designed as outlines, since a line has no area for a fill to cover.
|
|
9
|
+
*/
|
|
10
|
+
export type IconPaths = {
|
|
11
|
+
fill: string;
|
|
12
|
+
stroke?: string;
|
|
13
|
+
} | {
|
|
14
|
+
fill?: undefined;
|
|
15
|
+
stroke: string;
|
|
16
|
+
};
|
|
5
17
|
/** A single icon entry. */
|
|
6
|
-
export
|
|
18
|
+
export type IconEntry = IconPaths & {
|
|
7
19
|
category: string;
|
|
8
|
-
/** SVG d attribute for the icon path. */
|
|
9
|
-
d: string;
|
|
10
20
|
name: string;
|
|
11
21
|
/** viewBox string (default "0 0 16 16"). */
|
|
12
22
|
viewBox: string;
|
|
13
|
-
}
|
|
23
|
+
};
|
|
14
24
|
/** All icons indexed by name. */
|
|
15
25
|
export declare const ICONS: Record<string, IconEntry>;
|
|
16
26
|
export declare const ICON_NAMES: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/renderer/icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/renderer/icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAKF,iCAAiC;AACjC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAoI3C,CAAC;AAEF,eAAO,MAAM,UAAU,UAAqB,CAAC;AAE7C,eAAO,MAAM,eAAe,UAA4D,CAAC;AAEzF,qCAAqC;AACrC,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAO7D"}
|
package/dist/renderer/icons.js
CHANGED
|
@@ -2,130 +2,138 @@
|
|
|
2
2
|
* @fileoverview Built-in icon registry with SVG path data by category.
|
|
3
3
|
* @module renderer/icons
|
|
4
4
|
*/
|
|
5
|
+
/** The circle every status badge is drawn around, as a stroke. */
|
|
6
|
+
const STATUS_RING = 'M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1z';
|
|
5
7
|
/** All icons indexed by name. */
|
|
6
8
|
export const ICONS = {
|
|
7
9
|
// --- weather ---
|
|
8
10
|
sun: {
|
|
9
11
|
name: 'sun',
|
|
10
12
|
category: 'weather',
|
|
11
|
-
|
|
13
|
+
fill: 'M8 5a3 3 0 1 0 0 6 3 3 0 0 0 0-6z',
|
|
14
|
+
stroke: 'M8 1v2M8 13v2M3.22 3.22l1.41 1.41M11.37 11.37l1.41 1.41M1 8h2M13 8h2M3.22 12.78l1.41-1.41M11.37 4.63l1.41-1.41',
|
|
12
15
|
viewBox: '0 0 16 16',
|
|
13
16
|
},
|
|
14
17
|
cloud: {
|
|
15
18
|
name: 'cloud',
|
|
16
19
|
category: 'weather',
|
|
17
|
-
|
|
20
|
+
fill: 'M13 10a3 3 0 0 0-3-3h-.5A4.5 4.5 0 1 0 3 10h10z',
|
|
18
21
|
viewBox: '0 0 16 16',
|
|
19
22
|
},
|
|
20
23
|
rain: {
|
|
21
24
|
name: 'rain',
|
|
22
25
|
category: 'weather',
|
|
23
|
-
|
|
26
|
+
fill: 'M13 8a3 3 0 0 0-3-3h-.5A4.5 4.5 0 1 0 3 8h10z',
|
|
27
|
+
stroke: 'M5 12l-1 3M8 12v3M11 12l1 3',
|
|
24
28
|
viewBox: '0 0 16 16',
|
|
25
29
|
},
|
|
26
30
|
snow: {
|
|
27
31
|
name: 'snow',
|
|
28
32
|
category: 'weather',
|
|
29
|
-
|
|
33
|
+
stroke: 'M8 1v14M3.5 4l9 8M12.5 4l-9 8M1 8h14M3 5.5l-2-2M13 5.5l2-2M3 10.5l-2 2M13 10.5l2 2',
|
|
30
34
|
viewBox: '0 0 16 16',
|
|
31
35
|
},
|
|
32
36
|
wind: {
|
|
33
37
|
name: 'wind',
|
|
34
38
|
category: 'weather',
|
|
35
|
-
|
|
39
|
+
stroke: 'M1 6h8a2 2 0 1 0-2-2M1 10h12a2 2 0 1 1-2 2M1 8h6',
|
|
36
40
|
viewBox: '0 0 16 16',
|
|
37
41
|
},
|
|
38
42
|
lightning: {
|
|
39
43
|
name: 'lightning',
|
|
40
44
|
category: 'weather',
|
|
41
|
-
|
|
45
|
+
fill: 'M9 1L4 9h5l-2 6 7-8H9z',
|
|
42
46
|
viewBox: '0 0 16 16',
|
|
43
47
|
},
|
|
44
|
-
// --- arrows ---
|
|
48
|
+
// --- arrows: a filled head on a stroked shaft ---
|
|
45
49
|
'arrow-up': {
|
|
46
50
|
name: 'arrow-up',
|
|
47
51
|
category: 'arrows',
|
|
48
|
-
|
|
52
|
+
fill: 'M3 7l5-5 5 5',
|
|
53
|
+
stroke: 'M8 2L8 14',
|
|
49
54
|
viewBox: '0 0 16 16',
|
|
50
55
|
},
|
|
51
56
|
'arrow-down': {
|
|
52
57
|
name: 'arrow-down',
|
|
53
58
|
category: 'arrows',
|
|
54
|
-
|
|
59
|
+
fill: 'M3 9l5 5 5-5',
|
|
60
|
+
stroke: 'M8 14L8 2',
|
|
55
61
|
viewBox: '0 0 16 16',
|
|
56
62
|
},
|
|
57
63
|
'arrow-left': {
|
|
58
64
|
name: 'arrow-left',
|
|
59
65
|
category: 'arrows',
|
|
60
|
-
|
|
66
|
+
fill: 'M7 3L2 8l5 5',
|
|
67
|
+
stroke: 'M2 8L14 8',
|
|
61
68
|
viewBox: '0 0 16 16',
|
|
62
69
|
},
|
|
63
70
|
'arrow-right': {
|
|
64
71
|
name: 'arrow-right',
|
|
65
72
|
category: 'arrows',
|
|
66
|
-
|
|
73
|
+
fill: 'M9 3L14 8l-5 5',
|
|
74
|
+
stroke: 'M14 8L2 8',
|
|
67
75
|
viewBox: '0 0 16 16',
|
|
68
76
|
},
|
|
69
|
-
// --- status ---
|
|
77
|
+
// --- status: a stroked ring around a stroked mark, so the mark shows ---
|
|
70
78
|
'check-circle': {
|
|
71
79
|
name: 'check-circle',
|
|
72
80
|
category: 'status',
|
|
73
|
-
|
|
81
|
+
stroke: `${STATUS_RING}M5 8l2 2 4-4`,
|
|
74
82
|
viewBox: '0 0 16 16',
|
|
75
83
|
},
|
|
76
84
|
'x-circle': {
|
|
77
85
|
name: 'x-circle',
|
|
78
86
|
category: 'status',
|
|
79
|
-
|
|
87
|
+
stroke: `${STATUS_RING}M5 5l6 6M11 5l-6 6`,
|
|
80
88
|
viewBox: '0 0 16 16',
|
|
81
89
|
},
|
|
82
90
|
'alert-circle': {
|
|
83
91
|
name: 'alert-circle',
|
|
84
92
|
category: 'status',
|
|
85
|
-
|
|
93
|
+
stroke: `${STATUS_RING}M8 5v4M8 11v1`,
|
|
86
94
|
viewBox: '0 0 16 16',
|
|
87
95
|
},
|
|
88
96
|
info: {
|
|
89
97
|
name: 'info',
|
|
90
98
|
category: 'status',
|
|
91
|
-
|
|
99
|
+
stroke: `${STATUS_RING}M8 8v4M8 5v1`,
|
|
92
100
|
viewBox: '0 0 16 16',
|
|
93
101
|
},
|
|
94
102
|
heart: {
|
|
95
103
|
name: 'heart',
|
|
96
104
|
category: 'status',
|
|
97
|
-
|
|
105
|
+
fill: 'M8 13S1 9 1 4.5a3.5 3.5 0 0 1 7 0 3.5 3.5 0 0 1 7 0C15 9 8 13 8 13z',
|
|
98
106
|
viewBox: '0 0 16 16',
|
|
99
107
|
},
|
|
100
108
|
star: {
|
|
101
109
|
name: 'star',
|
|
102
110
|
category: 'status',
|
|
103
|
-
|
|
111
|
+
fill: 'M8 1l2 5h5l-4 3 1.5 5L8 11l-4.5 3L5 9 1 6h5z',
|
|
104
112
|
viewBox: '0 0 16 16',
|
|
105
113
|
},
|
|
106
114
|
// --- media ---
|
|
107
115
|
play: {
|
|
108
116
|
name: 'play',
|
|
109
117
|
category: 'media',
|
|
110
|
-
|
|
118
|
+
fill: 'M3 2l10 6-10 6z',
|
|
111
119
|
viewBox: '0 0 16 16',
|
|
112
120
|
},
|
|
113
121
|
pause: {
|
|
114
122
|
name: 'pause',
|
|
115
123
|
category: 'media',
|
|
116
|
-
|
|
124
|
+
fill: 'M5 2h2v12H5zM9 2h2v12H9z',
|
|
117
125
|
viewBox: '0 0 16 16',
|
|
118
126
|
},
|
|
119
127
|
stop: {
|
|
120
128
|
name: 'stop',
|
|
121
129
|
category: 'media',
|
|
122
|
-
|
|
130
|
+
fill: 'M3 3h10v10H3z',
|
|
123
131
|
viewBox: '0 0 16 16',
|
|
124
132
|
},
|
|
125
133
|
music: {
|
|
126
134
|
name: 'music',
|
|
127
135
|
category: 'media',
|
|
128
|
-
|
|
136
|
+
fill: 'M12 2v7a2 2 0 1 1-2-2V4l-6 1v5a2 2 0 1 1-2-2V3z',
|
|
129
137
|
viewBox: '0 0 16 16',
|
|
130
138
|
},
|
|
131
139
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/renderer/icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/renderer/icons.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,46 @@ export type KeyframeMap = Record<string, KeyframeEntry[]>;
|
|
|
9
9
|
/** Effect preset names. */
|
|
10
10
|
export type EffectName = 'float' | 'scroll-left' | 'scroll-right' | 'pulse' | 'blink' | 'twinkle' | 'drift' | 'fade-in' | 'fade-out';
|
|
11
11
|
export declare const EFFECT_NAMES: EffectName[];
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Compile a named effect preset into a keyframe map.
|
|
14
|
+
*
|
|
15
|
+
* `amplitude` is pixels of movement for `float`, `scroll-left`/`scroll-right` (speed), and
|
|
16
|
+
* `drift`, default 2. For `pulse` and `twinkle` it is the depth of the opacity dip below 100,
|
|
17
|
+
* on a 0–1 scale: default 0.5 for `pulse` (a 50–100 ramp) and 0.6 for `twinkle` (40–100).
|
|
18
|
+
* `blink`, `fade-in`, and `fade-out` ignore it.
|
|
19
|
+
*/
|
|
13
20
|
export declare function compileEffect(name: EffectName, opts: {
|
|
14
21
|
amplitude?: number;
|
|
15
22
|
period?: number;
|
|
16
23
|
phase?: number;
|
|
17
24
|
}, totalFrames: number): KeyframeMap;
|
|
18
|
-
/**
|
|
19
|
-
|
|
25
|
+
/** A keyframe's value. */
|
|
26
|
+
type KeyframeValue = KeyframeEntry[1];
|
|
27
|
+
/**
|
|
28
|
+
* A number, or a string that reads as one (`"40"`, `"000"`, `"-2.5"`); `undefined` otherwise.
|
|
29
|
+
* `pixoo_compose_scene` validates `dx`, `dy`, and `opacity` keyframes with it, so the input
|
|
30
|
+
* schema and the interpolation agree on what a numeric string is.
|
|
31
|
+
*/
|
|
32
|
+
export declare function numericValue(value: KeyframeValue): number | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Interpolate a keyframe property at a given frame index. Booleans snap at the midpoint.
|
|
35
|
+
* Numbers lerp, and so do numeric strings, read as the same numbers — `"000"` is 0 here, never
|
|
36
|
+
* a color: only the `color` track lerps through RGB, in {@link interpolateColorKeyframe}.
|
|
37
|
+
* Any other value holds until the next keyframe.
|
|
38
|
+
*/
|
|
39
|
+
export declare function interpolateKeyframe(frames: KeyframeEntry[], frameIdx: number): KeyframeValue;
|
|
40
|
+
/**
|
|
41
|
+
* Interpolate a `color` keyframe track at a frame index: each keyframe value, number or
|
|
42
|
+
* string, is read as a color and the track lerps through RGB, returning `#rrggbb` between
|
|
43
|
+
* keyframes so it resolves like any other color. Every keyframe value is resolved first, so
|
|
44
|
+
* one that isn't a color fails on every frame — including a keyframe the scene never
|
|
45
|
+
* reaches, which interpolation alone would skip past by holding the previous color.
|
|
46
|
+
*
|
|
47
|
+
* @throws {Error} The toolkit's `Unknown color` error for the first value that isn't a color,
|
|
48
|
+
* or an error for an empty track, which input validation rejects before any render.
|
|
49
|
+
*/
|
|
50
|
+
export declare function interpolateColorKeyframe(frames: KeyframeEntry[], frameIdx: number): string;
|
|
20
51
|
/** Get the interpolated value for a named property at a frame index. */
|
|
21
52
|
export declare function getKeyframeValue(keyframes: KeyframeMap | undefined, prop: string, frameIdx: number, defaultValue: number | string | boolean): number | string | boolean;
|
|
53
|
+
export {};
|
|
22
54
|
//# sourceMappingURL=keyframes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyframes.d.ts","sourceRoot":"","sources":["../../src/renderer/keyframes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEhE,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAE1D,2BAA2B;AAC3B,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,aAAa,GACb,cAAc,GACd,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,UAAU,CAAC;AAEf,eAAO,MAAM,YAAY,EAAE,UAAU,EAUpC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"keyframes.d.ts","sourceRoot":"","sources":["../../src/renderer/keyframes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEhE,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAE1D,2BAA2B;AAC3B,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,aAAa,GACb,cAAc,GACd,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,UAAU,CAAC;AAEf,eAAO,MAAM,YAAY,EAAE,UAAU,EAUpC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,WAAW,EAAE,MAAM,GAClB,WAAW,CAoFb;AAED,0BAA0B;AAC1B,KAAK,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AA4BtC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAY5F;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ1F;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GACtC,MAAM,GAAG,MAAM,GAAG,OAAO,CAG3B"}
|