@vicinae/api 0.16.0 → 0.16.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/bin/run.js +1 -1
- package/dist/api/ai.d.ts +2 -2
- package/dist/api/ai.js +2 -2
- package/dist/api/bus.d.ts +2 -2
- package/dist/api/cache.js +14 -9
- package/dist/api/clipboard.js +2 -2
- package/dist/api/command.js +2 -2
- package/dist/api/components/action-pannel.js +1 -1
- package/dist/api/components/actions.d.ts +12 -0
- package/dist/api/components/actions.js +19 -1
- package/dist/api/components/dropdown.js +2 -2
- package/dist/api/components/form.d.ts +4 -0
- package/dist/api/components/form.js +9 -8
- package/dist/api/components/grid.d.ts +1 -1
- package/dist/api/components/grid.js +11 -11
- package/dist/api/controls.js +6 -4
- package/dist/api/file-search.d.ts +18 -18
- package/dist/api/file-search.js +18 -19
- package/dist/api/keyboard.d.ts +1 -1
- package/dist/api/keyboard.js +15 -17
- package/dist/api/lib/result.js +7 -1
- package/dist/api/preference.js +2 -2
- package/dist/api/utils.js +1 -1
- package/dist/api/window-management.d.ts +2 -2
- package/dist/api/window-management.js +12 -10
- package/dist/commands/develop/index.js +13 -11
- package/dist/schemas/manifest.js +5 -3
- package/package.json +73 -76
- package/types/jsx.d.ts +177 -170
package/bin/run.js
CHANGED
package/dist/api/ai.d.ts
CHANGED
|
@@ -65,8 +65,8 @@ export declare namespace AI {
|
|
|
65
65
|
Anthropic_Claude_Opus = "anthropic-claude-opus",
|
|
66
66
|
Anthropic_Claude_Sonnet = "anthropic-claude-sonnet",
|
|
67
67
|
MixtraL_8x7B = "mixtral-8x7b",
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
Mistral_Nemo = "mistral-nemo",
|
|
69
|
+
Mistral_Large2 = "mistral-large-2",
|
|
70
70
|
Llama3_70B = "llama3-70b",
|
|
71
71
|
"Llama3.1_70B" = "llama3.1-70b",
|
|
72
72
|
"Llama3.1_8B" = "llama3.1-8b",
|
package/dist/api/ai.js
CHANGED
|
@@ -33,7 +33,7 @@ var AI;
|
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
35
|
function ask(prompt, options) {
|
|
36
|
-
throw new Error(
|
|
36
|
+
throw new Error("not implemented");
|
|
37
37
|
}
|
|
38
38
|
AI.ask = ask;
|
|
39
39
|
/**
|
|
@@ -77,6 +77,6 @@ var AI;
|
|
|
77
77
|
Model["OpenAI_GPT3.5-turbo"] = "openai-gpt-3.5-turbo";
|
|
78
78
|
})(Model = AI.Model || (AI.Model = {}));
|
|
79
79
|
AI.getModels = async () => {
|
|
80
|
-
throw new Error(
|
|
80
|
+
throw new Error("not implemented");
|
|
81
81
|
};
|
|
82
82
|
})(AI || (exports.AI = AI = {}));
|
package/dist/api/bus.d.ts
CHANGED
|
@@ -94,11 +94,11 @@ declare class Bus {
|
|
|
94
94
|
};
|
|
95
95
|
emit(action: string, data: Record<string, any>): void;
|
|
96
96
|
sendMessage(message: ipc.ExtensionMessage): void;
|
|
97
|
-
addEventHandler(cb: EventListenerInfo[
|
|
97
|
+
addEventHandler(cb: EventListenerInfo["callback"]): {
|
|
98
98
|
id: string;
|
|
99
99
|
unsubscribe: () => void;
|
|
100
100
|
};
|
|
101
|
-
replaceEventHandler(id: string, handler: EventListenerInfo[
|
|
101
|
+
replaceEventHandler(id: string, handler: EventListenerInfo["callback"]): void;
|
|
102
102
|
removeEventHandler(id: string): void;
|
|
103
103
|
private request2;
|
|
104
104
|
}
|
package/dist/api/cache.js
CHANGED
|
@@ -58,7 +58,7 @@ class Cache {
|
|
|
58
58
|
* @remarks You can use this method to check for entries without affecting the LRU access.
|
|
59
59
|
*/
|
|
60
60
|
has = (key) => {
|
|
61
|
-
return typeof this.index.keys[key] !==
|
|
61
|
+
return typeof this.index.keys[key] !== "undefined";
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
64
|
* @returns whether the cache is empty.
|
|
@@ -80,7 +80,7 @@ class Cache {
|
|
|
80
80
|
let newTotalSize = this.index.size + data.length - (info?.size ?? 0);
|
|
81
81
|
if (newTotalSize > this.capacity) {
|
|
82
82
|
this.popLRU();
|
|
83
|
-
return this.set(key, data); // FIXME: get rid of recursion
|
|
83
|
+
return this.set(key, data); // FIXME: get rid of recursion
|
|
84
84
|
}
|
|
85
85
|
this.index.size = newTotalSize;
|
|
86
86
|
this.index.keys[key] = { size: data.length };
|
|
@@ -131,22 +131,22 @@ class Cache {
|
|
|
131
131
|
return this.dataPath(this.keyHash(key));
|
|
132
132
|
}
|
|
133
133
|
readKeyData(key) {
|
|
134
|
-
return (0, node_fs_1.readFileSync)(this.keyDataPath(key),
|
|
134
|
+
return (0, node_fs_1.readFileSync)(this.keyDataPath(key), "utf8");
|
|
135
135
|
}
|
|
136
136
|
writeKeyData(key, data) {
|
|
137
137
|
(0, node_fs_1.writeFileSync)(this.keyDataPath(key), data);
|
|
138
138
|
}
|
|
139
139
|
keyHash(key) {
|
|
140
|
-
return (0, node_crypto_1.hash)(
|
|
140
|
+
return (0, node_crypto_1.hash)("md5", key);
|
|
141
141
|
}
|
|
142
142
|
get dataDir() {
|
|
143
|
-
return node_path_1.default.join(this.storageDir,
|
|
143
|
+
return node_path_1.default.join(this.storageDir, "data");
|
|
144
144
|
}
|
|
145
145
|
dataPath(id) {
|
|
146
146
|
return node_path_1.default.join(this.dataDir, id);
|
|
147
147
|
}
|
|
148
148
|
get indexPath() {
|
|
149
|
-
return node_path_1.default.join(this.storageDir,
|
|
149
|
+
return node_path_1.default.join(this.storageDir, "index.json");
|
|
150
150
|
}
|
|
151
151
|
updateLRU(key) {
|
|
152
152
|
const idx = this.index.lru.findIndex((entry) => key == entry.key);
|
|
@@ -172,7 +172,12 @@ class Cache {
|
|
|
172
172
|
return true;
|
|
173
173
|
}
|
|
174
174
|
initIndex() {
|
|
175
|
-
const index = {
|
|
175
|
+
const index = {
|
|
176
|
+
revision: this.revision,
|
|
177
|
+
keys: {},
|
|
178
|
+
size: 0,
|
|
179
|
+
lru: [],
|
|
180
|
+
};
|
|
176
181
|
(0, node_fs_1.mkdirSync)(this.dataDir, { recursive: true });
|
|
177
182
|
const indexPath = node_path_1.default.join(this.storageDir, "index.json");
|
|
178
183
|
(0, node_fs_1.writeFileSync)(indexPath, JSON.stringify(index, null, 2));
|
|
@@ -182,7 +187,7 @@ class Cache {
|
|
|
182
187
|
const indexPath = node_path_1.default.join(this.storageDir, "index.json");
|
|
183
188
|
if (!(0, node_fs_1.existsSync)(indexPath))
|
|
184
189
|
return null;
|
|
185
|
-
return JSON.parse((0, node_fs_1.readFileSync)(indexPath,
|
|
190
|
+
return JSON.parse((0, node_fs_1.readFileSync)(indexPath, "utf8"));
|
|
186
191
|
}
|
|
187
192
|
removeCacheDirectory() {
|
|
188
193
|
(0, node_fs_1.rmSync)(this.dataDir, { recursive: true, force: true });
|
|
@@ -199,7 +204,7 @@ class Cache {
|
|
|
199
204
|
* If we want to change the way the data is stored we just change this,
|
|
200
205
|
* which will force a full cache clear and use the new format.
|
|
201
206
|
*/
|
|
202
|
-
revision =
|
|
207
|
+
revision = "1";
|
|
203
208
|
capacity;
|
|
204
209
|
subscribers = [];
|
|
205
210
|
storageDir;
|
package/dist/api/clipboard.js
CHANGED
|
@@ -56,7 +56,7 @@ var Clipboard;
|
|
|
56
56
|
* ```
|
|
57
57
|
*/
|
|
58
58
|
async function read(options) {
|
|
59
|
-
const res = await bus_1.bus.turboRequest(
|
|
59
|
+
const res = await bus_1.bus.turboRequest("clipboard.readContent", {});
|
|
60
60
|
return res.unwrap().content;
|
|
61
61
|
}
|
|
62
62
|
Clipboard.read = read;
|
|
@@ -79,7 +79,7 @@ var Clipboard;
|
|
|
79
79
|
* Clear the current clipboard content.
|
|
80
80
|
*/
|
|
81
81
|
async function clear() {
|
|
82
|
-
await bus_1.bus.turboRequest(
|
|
82
|
+
await bus_1.bus.turboRequest("clipboard.clear", {});
|
|
83
83
|
}
|
|
84
84
|
Clipboard.clear = clear;
|
|
85
85
|
})(Clipboard || (exports.Clipboard = Clipboard = {}));
|
package/dist/api/command.js
CHANGED
|
@@ -10,8 +10,8 @@ const bus_1 = require("./bus");
|
|
|
10
10
|
*/
|
|
11
11
|
async function updateCommandMetadata(metadata) {
|
|
12
12
|
const payload = {};
|
|
13
|
-
if (Object.prototype.hasOwnProperty.call(metadata,
|
|
13
|
+
if (Object.prototype.hasOwnProperty.call(metadata, "subtitle")) {
|
|
14
14
|
payload.subtitle = metadata.subtitle ?? undefined;
|
|
15
15
|
}
|
|
16
|
-
await bus_1.bus.turboRequest(
|
|
16
|
+
await bus_1.bus.turboRequest("command.updateCommandMetadata", payload);
|
|
17
17
|
}
|
|
@@ -13,7 +13,7 @@ const ActionPanelSection = (props) => {
|
|
|
13
13
|
return ((0, jsx_runtime_1.jsx)("action-panel-section", { ...nativeProps, children: props.children }));
|
|
14
14
|
};
|
|
15
15
|
const ActionPannelSubmenu = ({ children, ...props }) => {
|
|
16
|
-
return (
|
|
16
|
+
return (0, jsx_runtime_1.jsx)("action-panel-submenu", { ...props, children: children });
|
|
17
17
|
};
|
|
18
18
|
exports.ActionPanel = Object.assign(ActionPanelRoot, {
|
|
19
19
|
Section: ActionPanelSection,
|
|
@@ -4,6 +4,7 @@ import { ImageLike } from "../image";
|
|
|
4
4
|
import { Keyboard } from "../keyboard";
|
|
5
5
|
import { Application } from "../utils";
|
|
6
6
|
import { Form } from "./form";
|
|
7
|
+
import { Icon } from "../icon";
|
|
7
8
|
export type BaseActionProps = {
|
|
8
9
|
title: string;
|
|
9
10
|
icon?: ImageLike;
|
|
@@ -43,6 +44,16 @@ export type ActionSubmitFormProps = Omit<BaseActionProps, "title"> & {
|
|
|
43
44
|
onSubmit: (input: Form.Values) => boolean | void | Promise<boolean | void>;
|
|
44
45
|
title?: string;
|
|
45
46
|
};
|
|
47
|
+
export type Quicklink = {
|
|
48
|
+
name?: string;
|
|
49
|
+
link: string;
|
|
50
|
+
application?: string | Application;
|
|
51
|
+
icon?: Icon;
|
|
52
|
+
};
|
|
53
|
+
export type ActionCreateQuicklinkProps = Omit<BaseActionProps, "title"> & {
|
|
54
|
+
title?: string;
|
|
55
|
+
quicklink: Quicklink;
|
|
56
|
+
};
|
|
46
57
|
export declare const Action: React.FC<ActionProps> & {
|
|
47
58
|
CopyToClipboard: React.FC<CopyToClipboardProps>;
|
|
48
59
|
Push: React.FC<ActionPushProps>;
|
|
@@ -50,6 +61,7 @@ export declare const Action: React.FC<ActionProps> & {
|
|
|
50
61
|
Paste: React.FC<ActionPasteProps>;
|
|
51
62
|
SubmitForm: React.FC<ActionSubmitFormProps>;
|
|
52
63
|
OpenInBrowser: React.FC<ActionOpenInBrowserProps>;
|
|
64
|
+
CreateQuicklink: React.FC<ActionCreateQuicklinkProps>;
|
|
53
65
|
Style: {
|
|
54
66
|
Regular: "regular";
|
|
55
67
|
Destructive: "destructive";
|
|
@@ -45,7 +45,24 @@ const SubmitForm = ({ title = "Submit", ...props }) => {
|
|
|
45
45
|
const nativeProps = {
|
|
46
46
|
...props,
|
|
47
47
|
title,
|
|
48
|
-
onAction: () => { }
|
|
48
|
+
onAction: () => { },
|
|
49
|
+
};
|
|
50
|
+
return (0, jsx_runtime_1.jsx)("action", { ...nativeProps });
|
|
51
|
+
};
|
|
52
|
+
const CreateQuicklink = ({ title = "Create Quicklink", quicklink, ...props }) => {
|
|
53
|
+
const nativeProps = {
|
|
54
|
+
...props,
|
|
55
|
+
title,
|
|
56
|
+
type: "create-quicklink",
|
|
57
|
+
quicklink: {
|
|
58
|
+
link: quicklink.link,
|
|
59
|
+
name: quicklink.name,
|
|
60
|
+
application: typeof quicklink.application === "string"
|
|
61
|
+
? quicklink.application
|
|
62
|
+
: quicklink.application?.name,
|
|
63
|
+
icon: quicklink.icon,
|
|
64
|
+
},
|
|
65
|
+
onAction: () => { },
|
|
49
66
|
};
|
|
50
67
|
return (0, jsx_runtime_1.jsx)("action", { ...nativeProps });
|
|
51
68
|
};
|
|
@@ -56,6 +73,7 @@ exports.Action = Object.assign(ActionRoot, {
|
|
|
56
73
|
Paste,
|
|
57
74
|
SubmitForm,
|
|
58
75
|
OpenInBrowser,
|
|
76
|
+
CreateQuicklink,
|
|
59
77
|
Style: {
|
|
60
78
|
Regular: "regular",
|
|
61
79
|
Destructive: "destructive",
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Dropdown = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const DropdownRoot = ({ children, ...props }) => {
|
|
6
|
-
return (
|
|
6
|
+
return (0, jsx_runtime_1.jsx)("dropdown", { ...props, children: children });
|
|
7
7
|
};
|
|
8
8
|
const Item = ({ title, value, icon }) => {
|
|
9
|
-
return (
|
|
9
|
+
return (0, jsx_runtime_1.jsx)("dropdown-item", { title: title, value: value, icon: icon });
|
|
10
10
|
};
|
|
11
11
|
const Section = ({ title, children }) => {
|
|
12
12
|
return (0, jsx_runtime_1.jsx)("dropdown-section", { title: title, children: children });
|
|
@@ -110,5 +110,9 @@ export declare const Form: import("react").FC<FormProps> & {
|
|
|
110
110
|
};
|
|
111
111
|
FilePicker: import("react").FC<FilePickerProps>;
|
|
112
112
|
Separator: () => import("react/jsx-runtime").JSX.Element;
|
|
113
|
+
LinkAccessory: ({ target, text }: {
|
|
114
|
+
target: string;
|
|
115
|
+
text: string;
|
|
116
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
113
117
|
};
|
|
114
118
|
export {};
|
|
@@ -8,14 +8,14 @@ const wrapFormItemProps = (props) => {
|
|
|
8
8
|
return {
|
|
9
9
|
...props,
|
|
10
10
|
onFocus: () => props.onFocus?.({
|
|
11
|
-
type:
|
|
11
|
+
type: "focus",
|
|
12
12
|
target: {
|
|
13
13
|
id: props.id,
|
|
14
14
|
value: (props.value ?? props.defaultValue),
|
|
15
15
|
},
|
|
16
16
|
}),
|
|
17
17
|
onBlur: () => props.onBlur?.({
|
|
18
|
-
type:
|
|
18
|
+
type: "blur",
|
|
19
19
|
target: {
|
|
20
20
|
id: props.id,
|
|
21
21
|
value: (props.value ?? props.defaultValue),
|
|
@@ -30,7 +30,7 @@ const FormRoot = ({ enableDrafts = false, actions, children, isLoading = false,
|
|
|
30
30
|
};
|
|
31
31
|
const TextField = ({ ref, ...props }) => {
|
|
32
32
|
(0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
|
|
33
|
-
return (
|
|
33
|
+
return (0, jsx_runtime_1.jsx)("text-field", { ...wrapFormItemProps(props) });
|
|
34
34
|
};
|
|
35
35
|
const PasswordField = ({ ref, ...props }) => {
|
|
36
36
|
(0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
|
|
@@ -42,7 +42,7 @@ const DatePicker = ({ ref, ...props }) => {
|
|
|
42
42
|
};
|
|
43
43
|
const Checkbox = ({ ref, ...props }) => {
|
|
44
44
|
(0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
|
|
45
|
-
return (
|
|
45
|
+
return (0, jsx_runtime_1.jsx)("checkbox-field", { ...wrapFormItemProps(props) });
|
|
46
46
|
};
|
|
47
47
|
//FIXME: we probably need to reuse the existing dropdown in
|
|
48
48
|
// a smarter way.
|
|
@@ -53,7 +53,7 @@ const DropdownRoot = ({ ref, children, ...props }) => {
|
|
|
53
53
|
};
|
|
54
54
|
const Dropdown = Object.assign(DropdownRoot, {
|
|
55
55
|
Item: dropdown_1.Dropdown.Item,
|
|
56
|
-
Section: dropdown_1.Dropdown.Section
|
|
56
|
+
Section: dropdown_1.Dropdown.Section,
|
|
57
57
|
});
|
|
58
58
|
const TagPickerRoot = ({ children, ...props }) => {
|
|
59
59
|
return ((0, jsx_runtime_1.jsx)("tag-picker-field", { ...wrapFormItemProps(props), children: children }));
|
|
@@ -62,15 +62,15 @@ const TagPickerItem = ({ icon, ...props }) => {
|
|
|
62
62
|
return (0, jsx_runtime_1.jsx)("tag-picker-item", { ...props, icon: icon });
|
|
63
63
|
};
|
|
64
64
|
const TagPicker = Object.assign(TagPickerRoot, {
|
|
65
|
-
Item: TagPickerItem
|
|
65
|
+
Item: TagPickerItem,
|
|
66
66
|
});
|
|
67
67
|
const TextArea = ({ ref, ...props }) => {
|
|
68
68
|
(0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
|
|
69
|
-
return (
|
|
69
|
+
return (0, jsx_runtime_1.jsx)("text-area-field", { ...wrapFormItemProps(props) });
|
|
70
70
|
};
|
|
71
71
|
const FilePicker = ({ ref, ...props }) => {
|
|
72
72
|
(0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
|
|
73
|
-
return (
|
|
73
|
+
return (0, jsx_runtime_1.jsx)("file-picker-field", { ...wrapFormItemProps(props) });
|
|
74
74
|
};
|
|
75
75
|
const Description = (props) => {
|
|
76
76
|
return (0, jsx_runtime_1.jsx)("form-description", { ...props });
|
|
@@ -86,4 +86,5 @@ exports.Form = Object.assign(FormRoot, {
|
|
|
86
86
|
TagPicker,
|
|
87
87
|
FilePicker,
|
|
88
88
|
Separator: () => (0, jsx_runtime_1.jsx)("separator", {}),
|
|
89
|
+
LinkAccessory: ({ target, text }) => ((0, jsx_runtime_1.jsx)("link-accessory", { target: target, text: text })),
|
|
89
90
|
});
|
|
@@ -54,7 +54,7 @@ export declare namespace Grid {
|
|
|
54
54
|
export type Fit = GridFit;
|
|
55
55
|
export type Inset = GridInset;
|
|
56
56
|
export type ItemSize = GridItemSize;
|
|
57
|
-
export type AspectRatio = "1" | "3/2" | "2/3" | "4/3" | "3/4" | "16/9" | "9/16" |
|
|
57
|
+
export type AspectRatio = "1" | "3/2" | "2/3" | "4/3" | "3/4" | "16/9" | "9/16" | "21/9" | "9/21" | "32/9" | "9/32";
|
|
58
58
|
export namespace Item {
|
|
59
59
|
export type Props = {
|
|
60
60
|
title?: string;
|
|
@@ -24,17 +24,17 @@ var GridItemSize;
|
|
|
24
24
|
GridItemSize["Large"] = "large";
|
|
25
25
|
})(GridItemSize || (GridItemSize = {}));
|
|
26
26
|
const aspectRatioMap = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
"1": 1,
|
|
28
|
+
"3/2": 3 / 2,
|
|
29
|
+
"2/3": 2 / 3,
|
|
30
|
+
"4/3": 4 / 3,
|
|
31
|
+
"3/4": 3 / 4,
|
|
32
|
+
"16/9": 16 / 9,
|
|
33
|
+
"9/16": 9 / 16,
|
|
34
|
+
"21/9": 21 / 9,
|
|
35
|
+
"9/21": 9 / 21,
|
|
36
|
+
"32/9": 32 / 9,
|
|
37
|
+
"9/32": 9 / 32,
|
|
38
38
|
};
|
|
39
39
|
var GridFit;
|
|
40
40
|
(function (GridFit) {
|
package/dist/api/controls.js
CHANGED
|
@@ -67,10 +67,10 @@ const popToRootProtoMap = {
|
|
|
67
67
|
* @see closeWindow
|
|
68
68
|
*/
|
|
69
69
|
const showHUD = async (title, options) => {
|
|
70
|
-
bus_1.bus.turboRequest(
|
|
70
|
+
bus_1.bus.turboRequest("ui.showHud", {
|
|
71
71
|
text: title,
|
|
72
72
|
clearRootSearch: options?.clearRootSearch ?? false,
|
|
73
|
-
popToRoot: popToRootProtoMap[options?.popToRootType ?? PopToRootType.Default]
|
|
73
|
+
popToRoot: popToRootProtoMap[options?.popToRootType ?? PopToRootType.Default],
|
|
74
74
|
});
|
|
75
75
|
};
|
|
76
76
|
exports.showHUD = showHUD;
|
|
@@ -82,7 +82,7 @@ const closeMainWindow = async (options = {}) => {
|
|
|
82
82
|
const { clearRootSearch = false, popToRootType = PopToRootType.Default } = options;
|
|
83
83
|
await bus_1.bus.turboRequest("ui.closeMainWindow", {
|
|
84
84
|
clearRootSearch,
|
|
85
|
-
popToRoot: popToRootProtoMap[popToRootType]
|
|
85
|
+
popToRoot: popToRootProtoMap[popToRootType],
|
|
86
86
|
});
|
|
87
87
|
};
|
|
88
88
|
exports.closeMainWindow = closeMainWindow;
|
|
@@ -107,6 +107,8 @@ exports.getSelectedText = getSelectedText;
|
|
|
107
107
|
* Pop to the root of the navigation stack, optionally clearing the search bar.
|
|
108
108
|
*/
|
|
109
109
|
const popToRoot = async (options) => {
|
|
110
|
-
await bus_1.bus.turboRequest(
|
|
110
|
+
await bus_1.bus.turboRequest("ui.popToRoot", {
|
|
111
|
+
clearSearchBar: options?.clearSearchBar ?? false,
|
|
112
|
+
});
|
|
111
113
|
};
|
|
112
114
|
exports.popToRoot = popToRoot;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FileInfo as ProtoFileInfo } from
|
|
1
|
+
import { FileInfo as ProtoFileInfo } from "./proto/file-search";
|
|
2
2
|
/**
|
|
3
3
|
* Access Vicinae's built-in file search functionality.
|
|
4
4
|
*
|
|
@@ -24,22 +24,22 @@ export declare namespace FileSearch {
|
|
|
24
24
|
type SearchOptions = {};
|
|
25
25
|
type FileInfo = ProtoFileInfo;
|
|
26
26
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
* Search for files matching the provided query string.
|
|
28
|
+
*
|
|
29
|
+
* @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
|
|
30
|
+
* @param options - Search configuration options
|
|
31
|
+
* @returns Promise resolving to array of matching files
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* Uses prefix matching on filename tokens. For example:
|
|
35
|
+
* - File: "invoice-new-motherboard.pdf"
|
|
36
|
+
* - Matches: "inv", "new", "mother", "pdf"
|
|
37
|
+
* - No match: "board", "oice" (not prefixes)
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const files = await fileSearch.search('invoice');
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
44
|
function search(query: string, _?: FileSearch.SearchOptions): Promise<FileSearch.FileInfo[]>;
|
|
45
45
|
}
|
package/dist/api/file-search.js
CHANGED
|
@@ -23,27 +23,26 @@ const bus_1 = require("./bus");
|
|
|
23
23
|
var FileSearch;
|
|
24
24
|
(function (FileSearch) {
|
|
25
25
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
* Search for files matching the provided query string.
|
|
27
|
+
*
|
|
28
|
+
* @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
|
|
29
|
+
* @param options - Search configuration options
|
|
30
|
+
* @returns Promise resolving to array of matching files
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* Uses prefix matching on filename tokens. For example:
|
|
34
|
+
* - File: "invoice-new-motherboard.pdf"
|
|
35
|
+
* - Matches: "inv", "new", "mother", "pdf"
|
|
36
|
+
* - No match: "board", "oice" (not prefixes)
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const files = await fileSearch.search('invoice');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
43
|
async function search(query, _ = {}) {
|
|
44
|
-
const res = await bus_1.bus.turboRequest(
|
|
44
|
+
const res = await bus_1.bus.turboRequest("fileSearch.search", { query });
|
|
45
45
|
return res.unwrap().files;
|
|
46
46
|
}
|
|
47
47
|
FileSearch.search = search;
|
|
48
48
|
})(FileSearch || (exports.FileSearch = FileSearch = {}));
|
|
49
|
-
;
|
package/dist/api/keyboard.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export type KeyEquivalent = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i"
|
|
|
2
2
|
export type KeyModifier = "cmd" | "ctrl" | "opt" | "shift";
|
|
3
3
|
export declare namespace Keyboard {
|
|
4
4
|
namespace Shortcut {
|
|
5
|
-
type Common =
|
|
5
|
+
type Common = "copy" | "copy-deeplink" | "copy-name" | "copy-path" | "save" | "duplicate" | "edit" | "move-down" | "move-up" | "new" | "open" | "open-with" | "pin" | "refresh" | "remove" | "remove-all";
|
|
6
6
|
const Common: {
|
|
7
7
|
Copy: string;
|
|
8
8
|
CopyDeeplink: string;
|
package/dist/api/keyboard.js
CHANGED
|
@@ -7,23 +7,21 @@ var Keyboard;
|
|
|
7
7
|
(function (Shortcut) {
|
|
8
8
|
Shortcut.Common = {
|
|
9
9
|
Copy: "copy",
|
|
10
|
-
CopyDeeplink:
|
|
11
|
-
CopyName:
|
|
12
|
-
CopyPath:
|
|
13
|
-
Save:
|
|
14
|
-
Duplicate:
|
|
15
|
-
Edit:
|
|
16
|
-
MoveDown:
|
|
17
|
-
MoveUp:
|
|
18
|
-
New:
|
|
19
|
-
Open:
|
|
20
|
-
OpenWith:
|
|
21
|
-
Pin:
|
|
22
|
-
Refresh:
|
|
23
|
-
Remove:
|
|
24
|
-
RemoveAll:
|
|
10
|
+
CopyDeeplink: "copy",
|
|
11
|
+
CopyName: "copy",
|
|
12
|
+
CopyPath: "copy",
|
|
13
|
+
Save: "save",
|
|
14
|
+
Duplicate: "duplicate",
|
|
15
|
+
Edit: "edit",
|
|
16
|
+
MoveDown: "move-down",
|
|
17
|
+
MoveUp: "move-up",
|
|
18
|
+
New: "new",
|
|
19
|
+
Open: "open",
|
|
20
|
+
OpenWith: "open-with",
|
|
21
|
+
Pin: "pin",
|
|
22
|
+
Refresh: "refresh",
|
|
23
|
+
Remove: "remove",
|
|
24
|
+
RemoveAll: "remove-all",
|
|
25
25
|
};
|
|
26
26
|
})(Shortcut = Keyboard.Shortcut || (Keyboard.Shortcut = {}));
|
|
27
|
-
;
|
|
28
27
|
})(Keyboard || (exports.Keyboard = Keyboard = {}));
|
|
29
|
-
;
|
package/dist/api/lib/result.js
CHANGED
package/dist/api/preference.js
CHANGED
|
@@ -8,10 +8,10 @@ const getPreferenceValues = () => {
|
|
|
8
8
|
};
|
|
9
9
|
exports.getPreferenceValues = getPreferenceValues;
|
|
10
10
|
const openExtensionPreferences = async () => {
|
|
11
|
-
console.error(
|
|
11
|
+
console.error("openExtensionPreferences is not implemented");
|
|
12
12
|
};
|
|
13
13
|
exports.openExtensionPreferences = openExtensionPreferences;
|
|
14
14
|
const openCommandPreferences = async () => {
|
|
15
|
-
console.error(
|
|
15
|
+
console.error("openCommandPreferences is not implemented");
|
|
16
16
|
};
|
|
17
17
|
exports.openCommandPreferences = openCommandPreferences;
|
package/dist/api/utils.js
CHANGED
|
@@ -41,7 +41,7 @@ const getApplications = async (target) => {
|
|
|
41
41
|
};
|
|
42
42
|
exports.getApplications = getApplications;
|
|
43
43
|
const getDefaultApplication = async (path) => {
|
|
44
|
-
const res = await bus_1.bus.turboRequest(
|
|
44
|
+
const res = await bus_1.bus.turboRequest("app.getDefault", { target: path });
|
|
45
45
|
const app = res.unwrap().app;
|
|
46
46
|
if (!app)
|
|
47
47
|
throw new Error(`No default application for target ${path}`);
|
|
@@ -7,7 +7,7 @@ const transformWorkspace = (proto) => {
|
|
|
7
7
|
id: proto.id,
|
|
8
8
|
name: proto.name,
|
|
9
9
|
active: proto.active,
|
|
10
|
-
monitorId: proto.monitor
|
|
10
|
+
monitorId: proto.monitor,
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
const transformWindow = (proto) => {
|
|
@@ -15,8 +15,11 @@ const transformWindow = (proto) => {
|
|
|
15
15
|
id: proto.id,
|
|
16
16
|
workspaceId: proto.workspaceId,
|
|
17
17
|
active: proto.active,
|
|
18
|
-
bounds: {
|
|
19
|
-
|
|
18
|
+
bounds: {
|
|
19
|
+
position: { x: proto.x, y: proto.y },
|
|
20
|
+
size: { width: proto.width, height: proto.height },
|
|
21
|
+
},
|
|
22
|
+
application: proto.app,
|
|
20
23
|
};
|
|
21
24
|
};
|
|
22
25
|
/**
|
|
@@ -38,22 +41,22 @@ const transformWindow = (proto) => {
|
|
|
38
41
|
var WindowManagement;
|
|
39
42
|
(function (WindowManagement) {
|
|
40
43
|
async function ping() {
|
|
41
|
-
const res = await bus_1.bus.turboRequest(
|
|
44
|
+
const res = await bus_1.bus.turboRequest("wm.ping", {});
|
|
42
45
|
return res.unwrap().ok;
|
|
43
46
|
}
|
|
44
47
|
WindowManagement.ping = ping;
|
|
45
48
|
async function getWindows(options = {}) {
|
|
46
|
-
const res = await bus_1.bus.turboRequest(
|
|
49
|
+
const res = await bus_1.bus.turboRequest("wm.getWindows", options);
|
|
47
50
|
return res.unwrap().windows.map(transformWindow);
|
|
48
51
|
}
|
|
49
52
|
WindowManagement.getWindows = getWindows;
|
|
50
53
|
async function getActiveWorkspace() {
|
|
51
|
-
const res = await bus_1.bus.turboRequest(
|
|
54
|
+
const res = await bus_1.bus.turboRequest("wm.getActiveWorkspace", {});
|
|
52
55
|
return transformWorkspace(res.unwrap().workspace);
|
|
53
56
|
}
|
|
54
57
|
WindowManagement.getActiveWorkspace = getActiveWorkspace;
|
|
55
58
|
async function getWorkspaces() {
|
|
56
|
-
const res = await bus_1.bus.turboRequest(
|
|
59
|
+
const res = await bus_1.bus.turboRequest("wm.getWorkspaces", {});
|
|
57
60
|
return res.unwrap().workspaces.map(transformWorkspace);
|
|
58
61
|
}
|
|
59
62
|
WindowManagement.getWorkspaces = getWorkspaces;
|
|
@@ -63,13 +66,12 @@ var WindowManagement;
|
|
|
63
66
|
}
|
|
64
67
|
WindowManagement.getWindowsOnActiveWorkspace = getWindowsOnActiveWorkspace;
|
|
65
68
|
async function setWindowBounds(payload) {
|
|
66
|
-
await bus_1.bus.turboRequest(
|
|
69
|
+
await bus_1.bus.turboRequest("wm.setWindowBounds", payload);
|
|
67
70
|
}
|
|
68
71
|
WindowManagement.setWindowBounds = setWindowBounds;
|
|
69
72
|
async function getActiveWindow() {
|
|
70
|
-
const res = await bus_1.bus.turboRequest(
|
|
73
|
+
const res = await bus_1.bus.turboRequest("wm.getActiveWindow", {});
|
|
71
74
|
return transformWindow(res.unwrap().window);
|
|
72
75
|
}
|
|
73
76
|
WindowManagement.getActiveWindow = getActiveWindow;
|
|
74
77
|
})(WindowManagement || (exports.WindowManagement = WindowManagement = {}));
|
|
75
|
-
;
|
|
@@ -94,16 +94,18 @@ class Develop extends core_1.Command {
|
|
|
94
94
|
};
|
|
95
95
|
const build = async (outDir) => {
|
|
96
96
|
/*
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const entryPoints = manifest.commands
|
|
97
|
+
logger.logInfo("Started type checking in background thread");
|
|
98
|
+
typeCheck().then(({ error, ok }) => {
|
|
99
|
+
if (!ok) {
|
|
100
|
+
logger.logInfo(`Type checking error: ${error}`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
logger.logInfo("Done type checking");
|
|
104
|
+
});
|
|
105
|
+
*/
|
|
106
|
+
const entryPoints = manifest.commands
|
|
107
|
+
.map((cmd) => (0, node_path_1.join)("src", `${cmd.name}.tsx`))
|
|
108
|
+
.filter(node_fs_1.existsSync);
|
|
107
109
|
logger.logInfo(`entrypoints [${entryPoints.join(", ")}]`);
|
|
108
110
|
const promises = manifest.commands.map((cmd) => {
|
|
109
111
|
const base = (0, node_path_1.join)(process.cwd(), "src", `${cmd.name}`);
|
|
@@ -190,7 +192,7 @@ class Develop extends core_1.Command {
|
|
|
190
192
|
ignoreInitial: true,
|
|
191
193
|
})
|
|
192
194
|
.on("all", async (_, path) => {
|
|
193
|
-
if (path.endsWith(
|
|
195
|
+
if (path.endsWith("package.json")) {
|
|
194
196
|
manifest = parseManifest();
|
|
195
197
|
}
|
|
196
198
|
logger.logEvent(`changed file ${path}`);
|
package/dist/schemas/manifest.js
CHANGED
|
@@ -194,7 +194,8 @@ exports.default = zod_1.z.object({
|
|
|
194
194
|
.any()
|
|
195
195
|
.describe("Extensions can contribute preferences that are shown in Vicinae Preferences > Extensions. You can use preferences for configuration values and passwords or personal access tokens.")
|
|
196
196
|
.optional(),
|
|
197
|
-
categories: zod_1.z
|
|
197
|
+
categories: zod_1.z
|
|
198
|
+
.array(zod_1.z.enum([
|
|
198
199
|
"Applications",
|
|
199
200
|
"Communication",
|
|
200
201
|
"Data",
|
|
@@ -209,8 +210,9 @@ exports.default = zod_1.z.object({
|
|
|
209
210
|
"Security",
|
|
210
211
|
"System",
|
|
211
212
|
"Web",
|
|
212
|
-
"Other"
|
|
213
|
-
]))
|
|
213
|
+
"Other",
|
|
214
|
+
]))
|
|
215
|
+
.optional(),
|
|
214
216
|
contributors: zod_1.z
|
|
215
217
|
.array(zod_1.z
|
|
216
218
|
.string()
|
package/package.json
CHANGED
|
@@ -1,78 +1,75 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"topics": {}
|
|
76
|
-
},
|
|
77
|
-
"repository": "vicinaehq/vicinae"
|
|
2
|
+
"name": "@vicinae/api",
|
|
3
|
+
"version": "0.16.1",
|
|
4
|
+
"description": "TypeScript SDK to build Vicinae extensions",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
7
|
+
"build": "tsc --outDir dist",
|
|
8
|
+
"protogen": "mkdir -p ./src/api/proto && protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto -I../../proto ../../proto/*.proto --ts_proto_out ./src/api/proto",
|
|
9
|
+
"pack": "npm run build && npm pack",
|
|
10
|
+
"docgen-html": "typedoc src/api/index.ts",
|
|
11
|
+
"docgen-md": "typedoc src/api/index.ts --disableSources --readme none --plugin typedoc-plugin-markdown --out ./docs",
|
|
12
|
+
"format": "biome format --write"
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"vici": "./bin/run.js"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"types"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "ISC",
|
|
24
|
+
"types": [
|
|
25
|
+
"./dist/index.d.ts"
|
|
26
|
+
],
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"main": "dist/index.js",
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@jgoz/esbuild-plugin-typecheck": "^4.0.3",
|
|
33
|
+
"@oclif/core": "^4",
|
|
34
|
+
"@oclif/plugin-help": "^6",
|
|
35
|
+
"@oclif/plugin-plugins": "^5",
|
|
36
|
+
"@types/node": ">=18",
|
|
37
|
+
"@types/react": "19.0.10",
|
|
38
|
+
"chalk": "^5.6.0",
|
|
39
|
+
"chokidar": "^4.0.3",
|
|
40
|
+
"esbuild": "^0.25.2",
|
|
41
|
+
"react": "19.0.0",
|
|
42
|
+
"zod": "^4.0.17"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@types/node": ">=18",
|
|
46
|
+
"@types/react": "19.0.10"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@biomejs/biome": "2.3.2",
|
|
50
|
+
"@bufbuild/protobuf": "^2.7.0",
|
|
51
|
+
"@oclif/test": "^4",
|
|
52
|
+
"@types/chai": "^4",
|
|
53
|
+
"@types/mocha": "^10",
|
|
54
|
+
"chai": "^4",
|
|
55
|
+
"mocha": "^10",
|
|
56
|
+
"oclif": "^4",
|
|
57
|
+
"shx": "^0.3.3",
|
|
58
|
+
"ts-node": "^10",
|
|
59
|
+
"ts-proto": "^2.7.5",
|
|
60
|
+
"typedoc": "^0.28.13",
|
|
61
|
+
"typedoc-plugin-markdown": "^4.8.1",
|
|
62
|
+
"typescript": "^5"
|
|
63
|
+
},
|
|
64
|
+
"oclif": {
|
|
65
|
+
"bin": "vici",
|
|
66
|
+
"dirname": "vici",
|
|
67
|
+
"commands": "./dist/commands",
|
|
68
|
+
"plugins": [
|
|
69
|
+
"@oclif/plugin-help"
|
|
70
|
+
],
|
|
71
|
+
"topicSeparator": " ",
|
|
72
|
+
"topics": {}
|
|
73
|
+
},
|
|
74
|
+
"repository": "vicinaehq/vicinae"
|
|
78
75
|
}
|
package/types/jsx.d.ts
CHANGED
|
@@ -1,190 +1,197 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import type { ListItemDetailProps } from "../api/components/list";
|
|
4
4
|
import { ImageLike } from "../api/image";
|
|
5
5
|
import { SerializedColorLike } from "../api/color";
|
|
6
6
|
import { Keyboard } from "../api/keyboard";
|
|
7
7
|
import { Grid } from "../api/components/grid";
|
|
8
8
|
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
9
|
+
import "react";
|
|
10
|
+
import type { Application, Quicklink } from "../src";
|
|
11
11
|
|
|
12
12
|
type BaseFormField = {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
onBlur?: Function;
|
|
14
|
+
onFocus?: Function;
|
|
15
|
+
onChange?: Function;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
declare module "react" {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
19
|
+
namespace JSX {
|
|
20
|
+
interface IntrinsicElements {
|
|
21
|
+
detail: {
|
|
22
|
+
navigationTitle?: string;
|
|
23
|
+
markdown: string;
|
|
24
|
+
};
|
|
25
|
+
list: {
|
|
26
|
+
children?: React.ReactNode;
|
|
27
|
+
filtering?: boolean;
|
|
28
|
+
isLoading?: boolean;
|
|
29
|
+
isShowingDetail?: boolean;
|
|
30
|
+
searchBarPlaceholder?: string;
|
|
31
|
+
navigationTitle?: string;
|
|
32
|
+
onSearchTextChange?: (text: string) => void;
|
|
33
|
+
onSelectionChange?: (selectedItemId: string) => void;
|
|
34
|
+
};
|
|
35
|
+
"list-section": {
|
|
36
|
+
title?: string;
|
|
37
|
+
subtitle?: string;
|
|
38
|
+
children?: React.ReactNode;
|
|
39
|
+
};
|
|
40
|
+
"list-item": {
|
|
41
|
+
title: string;
|
|
42
|
+
id?: string;
|
|
43
|
+
subtitle?: string;
|
|
44
|
+
icon?: ImageLike;
|
|
45
|
+
keywords?: string[];
|
|
46
|
+
children?: ReactNode;
|
|
47
|
+
};
|
|
48
|
+
"list-item-detail": ListItemDetailProps;
|
|
49
|
+
"list-item-detail-metadata": any;
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
grid: {
|
|
52
|
+
inset?: Grid.Inset;
|
|
53
|
+
columns?: number;
|
|
54
|
+
fit: Grid.Fit;
|
|
55
|
+
aspectRatio: Grid.AspectRatio;
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
children?: React.ReactNode;
|
|
58
|
+
filtering?: boolean;
|
|
59
|
+
isLoading?: boolean;
|
|
60
|
+
isShowingDetail?: boolean;
|
|
61
|
+
searchBarPlaceholder?: string;
|
|
62
|
+
navigationTitle?: string;
|
|
63
|
+
onSearchTextChange?: (text: string) => void;
|
|
64
|
+
onSelectionChange?: (selectedItemId: string) => void;
|
|
65
|
+
};
|
|
66
|
+
"grid-section": {
|
|
67
|
+
inset?: Grid.Inset;
|
|
68
|
+
columns?: number;
|
|
69
|
+
fit?: Grid.Fit;
|
|
70
|
+
aspectRatio?: Grid.AspectRatio;
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
72
|
+
title?: string;
|
|
73
|
+
subtitle?: string;
|
|
74
|
+
children?: React.ReactNode;
|
|
75
|
+
};
|
|
76
|
+
"grid-item": {
|
|
77
|
+
title?: string;
|
|
78
|
+
id?: string;
|
|
79
|
+
subtitle?: string;
|
|
80
|
+
content?:
|
|
81
|
+
| ImageLike
|
|
82
|
+
| { color: ColorLike }
|
|
83
|
+
| { value: ImageLike; tooltip?: string };
|
|
84
|
+
keywords?: string[];
|
|
85
|
+
children?: ReactNode;
|
|
86
|
+
};
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
88
|
+
"empty-view": {
|
|
89
|
+
description?: string;
|
|
90
|
+
title?: string;
|
|
91
|
+
icon?: ImageLike;
|
|
92
|
+
};
|
|
93
|
+
metadata: {
|
|
94
|
+
children?: React.ReactNode;
|
|
95
|
+
};
|
|
96
|
+
"metadata-label": {
|
|
97
|
+
title: string;
|
|
98
|
+
text: string;
|
|
99
|
+
icon?: ImageLike;
|
|
100
|
+
};
|
|
101
|
+
"metadata-separator": {};
|
|
102
|
+
"metadata-link": {
|
|
103
|
+
title: string;
|
|
104
|
+
target: string;
|
|
105
|
+
text: string;
|
|
106
|
+
};
|
|
107
|
+
"action-panel": {
|
|
108
|
+
title?: string;
|
|
109
|
+
children?: React.ReactNode;
|
|
110
|
+
};
|
|
111
|
+
"action-panel-submenu": {
|
|
112
|
+
title: string;
|
|
113
|
+
icon?: ImageLike;
|
|
114
|
+
onOpen?: () => void;
|
|
115
|
+
onSearchTextChange?: (text: string) => void;
|
|
116
|
+
children?: React.ReactNode;
|
|
117
|
+
};
|
|
118
|
+
"action-panel-section": {
|
|
119
|
+
title?: string;
|
|
120
|
+
children?: React.ReactNode;
|
|
121
|
+
};
|
|
122
|
+
action: {
|
|
123
|
+
title: string;
|
|
124
|
+
onAction: () => void;
|
|
125
|
+
onSubmit?: Function;
|
|
126
|
+
shortcut?: Keyboard.Shortcut;
|
|
127
|
+
icon?: ImageLike;
|
|
128
|
+
autoFocus?: boolean;
|
|
129
|
+
type?: string;
|
|
130
|
+
quicklink?: Quicklink;
|
|
131
|
+
};
|
|
132
|
+
"tag-list": {
|
|
133
|
+
title?: string;
|
|
134
|
+
children?: React.ReactNode;
|
|
135
|
+
};
|
|
136
|
+
"tag-item": {
|
|
137
|
+
color?: SerializedColorLike;
|
|
138
|
+
icon?: ImageLike;
|
|
139
|
+
text?: string;
|
|
140
|
+
onAction?: () => void;
|
|
141
|
+
};
|
|
142
|
+
form: {
|
|
143
|
+
enableDrafts: boolean;
|
|
144
|
+
isLoading: boolean;
|
|
145
|
+
navigationTitle?: string;
|
|
146
|
+
children?: React.ReactNode;
|
|
147
|
+
};
|
|
148
|
+
"link-accessory": {
|
|
149
|
+
target: string;
|
|
150
|
+
text: string;
|
|
151
|
+
};
|
|
152
|
+
"text-field": BaseFormField & {};
|
|
153
|
+
"tag-picker-field": BaseFormField & {};
|
|
154
|
+
"tag-picker-item": {
|
|
155
|
+
title: string;
|
|
156
|
+
value: string;
|
|
157
|
+
icon?: ImageLike;
|
|
158
|
+
};
|
|
159
|
+
"text-area-field": BaseFormField & {};
|
|
160
|
+
"file-picker-field": BaseFormField & {};
|
|
161
|
+
"dropdown-field": BaseFormField & {
|
|
162
|
+
children?: ReactNode;
|
|
163
|
+
};
|
|
164
|
+
"date-picker-field": {};
|
|
165
|
+
"checkbox-field": BaseFormField & {};
|
|
166
|
+
"password-field": {};
|
|
167
|
+
"textarea-field": {};
|
|
161
168
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
169
|
+
dropdown: {
|
|
170
|
+
onChange?: Function;
|
|
171
|
+
onSearchTextChange?: (text: string) => void;
|
|
172
|
+
children?: ReactNode;
|
|
173
|
+
};
|
|
174
|
+
"dropdown-section": {
|
|
175
|
+
title?: string;
|
|
176
|
+
children: ReactNode;
|
|
177
|
+
};
|
|
178
|
+
"dropdown-item": {
|
|
179
|
+
title: string;
|
|
180
|
+
value: string;
|
|
181
|
+
icon?: ImageLike;
|
|
182
|
+
keywords?: string[];
|
|
183
|
+
};
|
|
177
184
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
185
|
+
"form-description": {
|
|
186
|
+
title?: string;
|
|
187
|
+
text: string;
|
|
188
|
+
};
|
|
182
189
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
separator: {};
|
|
191
|
+
"menu-bar": {};
|
|
192
|
+
"menu-bar-item": {};
|
|
193
|
+
"menu-bar-submenu": {};
|
|
194
|
+
"menu-bar-section": {};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
190
197
|
}
|