@gd-kirie/tray 0.0.0-stage → 0.12.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 +23 -2
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +7 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +14 -0
- package/dist/plugin.js.map +1 -0
- package/package.json +43 -3
package/README.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `@gd-kirie/tray`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`@gd-kirie/tray` adds system tray support to desktop Kirie applications. It
|
|
4
|
+
uses the application's existing Eventa context.
|
|
5
|
+
|
|
6
|
+
Add the plugin to `kirie.config.ts`:
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import tray from "@gd-kirie/tray/plugin";
|
|
10
|
+
import { defineKirieConfig } from "kirie";
|
|
11
|
+
import core from "kirie/plugin/core";
|
|
12
|
+
|
|
13
|
+
export default defineKirieConfig({
|
|
14
|
+
plugins: [core, tray],
|
|
15
|
+
});
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Install the plugin dependencies:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
pnpm kirie doctor --fix plugin:tray
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
See the [`tray` example](../../examples/tray/README.md) for a complete setup.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { InboundEventa } from "@moeru/eventa";
|
|
2
|
+
import { KirieEventaContext } from "@gd-kirie/ipc-eventa";
|
|
3
|
+
|
|
4
|
+
//#region src/index.d.ts
|
|
5
|
+
interface TrayIcon {
|
|
6
|
+
icon: string;
|
|
7
|
+
iconAsTemplate?: boolean;
|
|
8
|
+
}
|
|
9
|
+
type TrayMenuItem = {
|
|
10
|
+
type: "item";
|
|
11
|
+
id: string;
|
|
12
|
+
text: string;
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
} | {
|
|
15
|
+
type: "check";
|
|
16
|
+
id: string;
|
|
17
|
+
text: string;
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
checked?: boolean;
|
|
20
|
+
} | {
|
|
21
|
+
type: "submenu";
|
|
22
|
+
text: string;
|
|
23
|
+
enabled?: boolean;
|
|
24
|
+
children: TrayMenuItem[];
|
|
25
|
+
} | {
|
|
26
|
+
type: "separator";
|
|
27
|
+
};
|
|
28
|
+
interface TrayClient {
|
|
29
|
+
create: (icon: TrayIcon) => Promise<void>;
|
|
30
|
+
setIcon: (icon: TrayIcon) => Promise<void>;
|
|
31
|
+
setMenu: (items: TrayMenuItem[]) => Promise<void>;
|
|
32
|
+
setTooltip: (tooltip: string | null) => Promise<void>;
|
|
33
|
+
setVisible: (visible: boolean) => Promise<void>;
|
|
34
|
+
destroy: () => Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
declare const trayMenuItemActivated: InboundEventa<string>;
|
|
37
|
+
declare function createTrayClient(context: KirieEventaContext): TrayClient;
|
|
38
|
+
//#endregion
|
|
39
|
+
export { TrayClient, TrayIcon, TrayMenuItem, createTrayClient, trayMenuItemActivated };
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;;UAIiB,QAAA;EACf,IAAA;EACA,cAAA;AAAA;AAAA,KAGU,YAAA;EACN,IAAA;EAAc,EAAA;EAAY,IAAA;EAAc,OAAA;AAAA;EAC1C,IAAA;EAAe,EAAA;EAAY,IAAA;EAAc,OAAA;EAAmB,OAAA;AAAA;EAC5D,IAAA;EAAiB,IAAA;EAAc,OAAA;EAAmB,QAAA,EAAU,YAAA;AAAA;EAC5D,IAAA;AAAA;AAAA,UAEa,UAAA;EACf,MAAA,GAAS,IAAA,EAAM,QAAA,KAAa,OAAA;EAC5B,OAAA,GAAU,IAAA,EAAM,QAAA,KAAa,OAAA;EAC7B,OAAA,GAAU,KAAA,EAAO,YAAA,OAAmB,OAAA;EACpC,UAAA,GAAa,OAAA,oBAA2B,OAAA;EACxC,UAAA,GAAa,OAAA,cAAqB,OAAA;EAClC,OAAA,QAAe,OAAA;AAAA;AAAA,cAcJ,qBAAA,EAAuB,aAAA;AAAA,iBAIpB,gBAAA,CAAiB,OAAA,EAAS,kBAAA,GAAqB,UAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { defineInboundEventa, defineInvokeEventa, defineInvokes } from "@moeru/eventa";
|
|
2
|
+
//#region src/index.ts
|
|
3
|
+
const events = {
|
|
4
|
+
create: defineInvokeEventa("kirie:tray:create"),
|
|
5
|
+
setIcon: defineInvokeEventa("kirie:tray:set-icon"),
|
|
6
|
+
setMenu: defineInvokeEventa("kirie:tray:set-menu"),
|
|
7
|
+
setTooltip: defineInvokeEventa("kirie:tray:set-tooltip"),
|
|
8
|
+
setVisible: defineInvokeEventa("kirie:tray:set-visible"),
|
|
9
|
+
destroy: defineInvokeEventa("kirie:tray:destroy")
|
|
10
|
+
};
|
|
11
|
+
const trayMenuItemActivated = defineInboundEventa("kirie:tray:menu-item-activated");
|
|
12
|
+
function createTrayClient(context) {
|
|
13
|
+
const invokes = defineInvokes(context, events);
|
|
14
|
+
return {
|
|
15
|
+
async create(icon) {
|
|
16
|
+
await invokes.create(icon);
|
|
17
|
+
},
|
|
18
|
+
async setIcon(icon) {
|
|
19
|
+
await invokes.setIcon(icon);
|
|
20
|
+
},
|
|
21
|
+
async setMenu(items) {
|
|
22
|
+
await invokes.setMenu(items);
|
|
23
|
+
},
|
|
24
|
+
async setTooltip(tooltip) {
|
|
25
|
+
await invokes.setTooltip(tooltip);
|
|
26
|
+
},
|
|
27
|
+
async setVisible(visible) {
|
|
28
|
+
await invokes.setVisible(visible);
|
|
29
|
+
},
|
|
30
|
+
async destroy() {
|
|
31
|
+
await invokes.destroy({});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { createTrayClient, trayMenuItemActivated };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { KirieEventaContext } from \"@gd-kirie/ipc-eventa\";\nimport type { InboundEventa } from \"@moeru/eventa\";\nimport { defineInboundEventa, defineInvokeEventa, defineInvokes } from \"@moeru/eventa\";\n\nexport interface TrayIcon {\n icon: string;\n iconAsTemplate?: boolean;\n}\n\nexport type TrayMenuItem =\n | { type: \"item\"; id: string; text: string; enabled?: boolean } |\n { type: \"check\"; id: string; text: string; enabled?: boolean; checked?: boolean } |\n { type: \"submenu\"; text: string; enabled?: boolean; children: TrayMenuItem[] } |\n { type: \"separator\" };\n\nexport interface TrayClient {\n create: (icon: TrayIcon) => Promise<void>;\n setIcon: (icon: TrayIcon) => Promise<void>;\n setMenu: (items: TrayMenuItem[]) => Promise<void>;\n setTooltip: (tooltip: string | null) => Promise<void>;\n setVisible: (visible: boolean) => Promise<void>;\n destroy: () => Promise<void>;\n}\n\ntype EmptyPayload = Record<string, never>;\n\nconst events = {\n create: defineInvokeEventa<EmptyPayload, TrayIcon>(\"kirie:tray:create\"),\n setIcon: defineInvokeEventa<EmptyPayload, TrayIcon>(\"kirie:tray:set-icon\"),\n setMenu: defineInvokeEventa<EmptyPayload, TrayMenuItem[]>(\"kirie:tray:set-menu\"),\n setTooltip: defineInvokeEventa<EmptyPayload, string | null>(\"kirie:tray:set-tooltip\"),\n setVisible: defineInvokeEventa<EmptyPayload, boolean>(\"kirie:tray:set-visible\"),\n destroy: defineInvokeEventa<EmptyPayload, EmptyPayload>(\"kirie:tray:destroy\"),\n};\n\nexport const trayMenuItemActivated: InboundEventa<string> = defineInboundEventa(\n \"kirie:tray:menu-item-activated\",\n);\n\nexport function createTrayClient(context: KirieEventaContext): TrayClient {\n const invokes = defineInvokes(context, events);\n\n return {\n async create(icon) {\n await invokes.create(icon);\n },\n async setIcon(icon) {\n await invokes.setIcon(icon);\n },\n async setMenu(items) {\n await invokes.setMenu(items);\n },\n async setTooltip(tooltip) {\n await invokes.setTooltip(tooltip);\n },\n async setVisible(visible) {\n await invokes.setVisible(visible);\n },\n async destroy() {\n await invokes.destroy({});\n },\n };\n}\n"],"mappings":";;AA0BA,MAAM,SAAS;CACb,QAAQ,mBAA2C,mBAAmB;CACtE,SAAS,mBAA2C,qBAAqB;CACzE,SAAS,mBAAiD,qBAAqB;CAC/E,YAAY,mBAAgD,wBAAwB;CACpF,YAAY,mBAA0C,wBAAwB;CAC9E,SAAS,mBAA+C,oBAAoB;AAC9E;AAEA,MAAa,wBAA+C,oBAC1D,gCACF;AAEA,SAAgB,iBAAiB,SAAyC;CACxE,MAAM,UAAU,cAAc,SAAS,MAAM;CAE7C,OAAO;EACL,MAAM,OAAO,MAAM;GACjB,MAAM,QAAQ,OAAO,IAAI;EAC3B;EACA,MAAM,QAAQ,MAAM;GAClB,MAAM,QAAQ,QAAQ,IAAI;EAC5B;EACA,MAAM,QAAQ,OAAO;GACnB,MAAM,QAAQ,QAAQ,KAAK;EAC7B;EACA,MAAM,WAAW,SAAS;GACxB,MAAM,QAAQ,WAAW,OAAO;EAClC;EACA,MAAM,WAAW,SAAS;GACxB,MAAM,QAAQ,WAAW,OAAO;EAClC;EACA,MAAM,UAAU;GACd,MAAM,QAAQ,QAAQ,CAAC,CAAC;EAC1B;CACF;AACF"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;cAMA,QAAA,EAQM,WAAA"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineKiriePlugin } from "kirie/plugin";
|
|
2
|
+
//#endregion
|
|
3
|
+
//#region src/plugin.ts
|
|
4
|
+
var plugin_default = defineKiriePlugin({
|
|
5
|
+
id: "tray",
|
|
6
|
+
dotnetPackages: [{
|
|
7
|
+
id: "GdKirie.Tray",
|
|
8
|
+
version: "0.12.0"
|
|
9
|
+
}]
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { plugin_default as default };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":["packageJson.version"],"sources":["../package.json","../src/plugin.ts"],"sourcesContent":["","import type { KiriePlugin } from \"kirie/plugin\";\nimport { defineKiriePlugin } from \"kirie/plugin\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\n// ADR-0013: Tray stays an explicit plugin and owns its .NET and native host.\n// See docs/decisions/0013-use-tray-icon-for-the-tray-plugin.md.\nexport default defineKiriePlugin({\n id: \"tray\",\n dotnetPackages: [\n {\n id: \"GdKirie.Tray\",\n version: packageJson.version,\n },\n ],\n}) as KiriePlugin;\n"],"mappings":";;;ACMA,IAAA,iBAAe,kBAAkB;CAC/B,IAAI;CACJ,gBAAgB,CACd;EACE,IAAI;EACKA;CACX,CACF;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gd-kirie/tray",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.12.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/moeru-ai/godot-kirie.git",
|
|
8
|
+
"directory": "packages/tray"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./plugin": {
|
|
18
|
+
"types": "./dist/plugin.d.ts",
|
|
19
|
+
"import": "./dist/plugin.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@gd-kirie/ipc-eventa": "0.12.0",
|
|
27
|
+
"@moeru/eventa": "^1.0.2"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"kirie": "^0.12.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"tsdown": "^0.22.2",
|
|
34
|
+
"typescript": "^6.0.3",
|
|
35
|
+
"vitest": "4.1.10"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public",
|
|
39
|
+
"registry": "https://registry.npmjs.org"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsdown",
|
|
43
|
+
"test:run": "vitest run",
|
|
44
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
45
|
+
}
|
|
6
46
|
}
|