clickgo 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/app/demo.cga +0 -0
  2. package/dist/app/task.cga +0 -0
  3. package/dist/clickgo.d.ts +128 -0
  4. package/dist/control/arteditor.cgc +0 -0
  5. package/dist/control/box.cgc +0 -0
  6. package/dist/control/captcha.cgc +0 -0
  7. package/dist/control/common.cgc +0 -0
  8. package/dist/control/desc.cgc +0 -0
  9. package/dist/control/drawer.cgc +0 -0
  10. package/dist/control/echarts.cgc +0 -0
  11. package/dist/control/form.cgc +0 -0
  12. package/dist/control/iconview.cgc +0 -0
  13. package/dist/control/jodit.cgc +0 -0
  14. package/dist/control/map.cgc +0 -0
  15. package/dist/control/monaco.cgc +0 -0
  16. package/dist/control/mpegts.cgc +0 -0
  17. package/dist/control/nav.cgc +0 -0
  18. package/dist/control/novnc.cgc +0 -0
  19. package/dist/control/page.cgc +0 -0
  20. package/dist/control/pdf.cgc +0 -0
  21. package/dist/control/property.cgc +0 -0
  22. package/dist/control/qrcode.cgc +0 -0
  23. package/dist/control/table.cgc +0 -0
  24. package/dist/control/task.cgc +0 -0
  25. package/dist/control/tplink.cgc +0 -0
  26. package/dist/control/tuieditor.cgc +0 -0
  27. package/dist/control/tuiviewer.cgc +0 -0
  28. package/dist/control/tums.cgc +0 -0
  29. package/dist/control/xterm.cgc +0 -0
  30. package/dist/index.js +1 -1
  31. package/dist/lib/control.d.ts +662 -0
  32. package/dist/lib/core.d.ts +337 -0
  33. package/dist/lib/dom.d.ts +491 -0
  34. package/dist/lib/form.d.ts +720 -0
  35. package/dist/lib/fs.d.ts +186 -0
  36. package/dist/lib/native.d.ts +134 -0
  37. package/dist/lib/storage.d.ts +39 -0
  38. package/dist/lib/task.d.ts +244 -0
  39. package/dist/lib/theme.d.ts +63 -0
  40. package/dist/lib/tool.d.ts +504 -0
  41. package/dist/lib/zip.d.ts +128 -0
  42. package/dist/theme/dark.cgt +0 -0
  43. package/dist/theme/light.cgt +0 -0
  44. package/package.json +1 -1
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Copyright 2007-2025 MAIYUN.NET
3
+
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import * as clickgo from '../clickgo';
17
+ import * as lForm from './form';
18
+ import * as lControl from './control';
19
+ import * as lCore from './core';
20
+ /**
21
+ * --- 初始化系统级 ID,仅能设置一次 ---
22
+ * @param id 系统级 ID
23
+ */
24
+ export declare function initSysId(id: string): void;
25
+ /** --- Config 配置对象 --- */
26
+ export declare let config: IConfig;
27
+ /** --- App 抽象类 --- */
28
+ export declare abstract class AbstractApp {
29
+ /** --- 当前 js 文件在包内的完整路径 --- */
30
+ filename: string;
31
+ /** --- 系统会自动设置本项 --- */
32
+ taskId: string;
33
+ /** --- App 的入口文件 --- */
34
+ abstract main(data: Record<string, any>): Promise<void>;
35
+ /**
36
+ * --- 以某个窗体进行正式启动这个 app(入口 form),不启动则任务也启动失败 ---
37
+ * @param form 窗体对象
38
+ */
39
+ run(form: lForm.AbstractForm): Promise<void>;
40
+ /** --- 全局错误事件 --- */
41
+ onError(taskId: string, formId: string, error: Error, info: string): void | Promise<void>;
42
+ /** --- 屏幕大小改变事件 --- */
43
+ onScreenResize(): void | Promise<void>;
44
+ /** --- 系统配置变更事件 --- */
45
+ onConfigChanged<T extends IConfig, TK extends keyof T>(n: TK, v: T[TK]): void | Promise<void>;
46
+ /** --- 窗体创建事件 --- */
47
+ onFormCreated(taskId: string, formId: string, title: string, icon: string, showInSystemTask: boolean): void | Promise<void>;
48
+ /** --- 窗体销毁事件 */
49
+ onFormRemoved(taskId: string, formId: string, title: string, icon: string): void | Promise<void>;
50
+ /** --- 窗体标题改变事件 */
51
+ onFormTitleChanged(taskId: string, formId: string, title: string): void | Promise<void>;
52
+ /** --- 窗体图标改变事件 --- */
53
+ onFormIconChanged(taskId: string, formId: string, icon: string): void | Promise<void>;
54
+ /** --- 窗体最小化状态改变事件 --- */
55
+ onFormStateMinChanged(taskId: string, formId: string, state: boolean): void | Promise<void>;
56
+ /** --- 窗体最大化状态改变事件 --- */
57
+ onFormStateMaxChanged(taskId: string, formId: string, state: boolean): void | Promise<void>;
58
+ /** --- 窗体显示状态改变事件 --- */
59
+ onFormShowChanged(taskId: string, formId: string, state: boolean): void | Promise<void>;
60
+ /** --- 窗体获得焦点事件 --- */
61
+ onFormFocused(taskId: string, formId: string): void | Promise<void>;
62
+ /** --- 窗体丢失焦点事件 --- */
63
+ onFormBlurred(taskId: string, formId: string): void | Promise<void>;
64
+ /** --- 窗体闪烁事件 --- */
65
+ onFormFlash(taskId: string, formId: string): void | Promise<void>;
66
+ /** --- 窗体是否显示在任务栏属性改变事件 --- */
67
+ onFormShowInSystemTaskChange(taskId: string, formId: string, value: boolean): void | Promise<void>;
68
+ /** --- 窗体的 formHash 改变事件 --- */
69
+ onFormHashChange(taskId: string, formId: string, value: string, data: Record<string, any>): void | Promise<void>;
70
+ /** --- 任务开始事件 --- */
71
+ onTaskStarted(taskId: string): void | Promise<void>;
72
+ /** --- 任务结束事件 --- */
73
+ onTaskEnded(taskId: string): void | Promise<void>;
74
+ /** --- launcher 文件夹名称修改事件 --- */
75
+ onLauncherFolderNameChanged(id: string, name: string): void | Promise<void>;
76
+ /** --- location hash 改变事件 --- */
77
+ onHashChanged(hash: string): void | Promise<void>;
78
+ /** --- 键盘按下事件 --- */
79
+ onKeydown(e: KeyboardEvent): void | Promise<void>;
80
+ /** --- 键盘弹起事件 --- */
81
+ onKeyup(e: KeyboardEvent): void | Promise<void>;
82
+ }
83
+ export declare function setBoot(b: clickgo.AbstractBoot): void;
84
+ /**
85
+ * --- 主动触发系统级事件,用 this.trigger 替代 ---
86
+ */
87
+ export declare function trigger(name: TGlobalEvent, taskId?: string | boolean | KeyboardEvent, formId?: string | boolean | Record<string, any> | null, param1?: boolean | Error | string, param2?: string | Record<string, any>, param3?: boolean): Promise<void>;
88
+ /**
89
+ * --- cga blob 文件解包 ---
90
+ * @param blob blob 对象
91
+ */
92
+ export declare function readApp(blob: Blob): Promise<false | IApp>;
93
+ /**
94
+ * --- 从网址下载应用 ---
95
+ * @param url 对于当前网页的相对、绝对路径,以 .cga 结尾的文件 ---
96
+ * @param opt,notifyId:显示进度条的 notify id,current:设置则以设置的为准,不以 / 结尾,否则以 location 为准 ---
97
+ * @param taskId 所属任务 ID
98
+ */
99
+ export declare function fetchApp(taskId: string, url: string, opt?: ICoreFetchAppOptions): Promise<null | IApp>;
100
+ /**
101
+ * --- 获取屏幕可用区域 ---
102
+ */
103
+ export declare function getAvailArea(): IAvailArea;
104
+ /**
105
+ * --- 修改浏览器 hash ---
106
+ * @param taskId 当前任务 id
107
+ * @param hash 修改的值,不含 #
108
+ */
109
+ export declare function hash(current: TCurrent, hash: string): Promise<boolean>;
110
+ /**
111
+ * --- 获取当前浏览器的 hash ---
112
+ */
113
+ export declare function getHash(): string;
114
+ /**
115
+ * --- 获取当前浏览器的 host ---
116
+ */
117
+ export declare function getHost(): string;
118
+ /**
119
+ * --- 对浏览器做跳转操作 ---
120
+ * @param current 当前任务 id
121
+ * @param url 要跳转的新 URL
122
+ */
123
+ export declare function location(current: TCurrent, url: string): Promise<boolean>;
124
+ /**
125
+ * --- 获取当前的浏览器的 url ---
126
+ */
127
+ export declare function getLocation(): string;
128
+ /**
129
+ * --- 对浏览器做返回操作 ---
130
+ * @param current 当前任务 id
131
+ */
132
+ export declare function back(current: TCurrent): Promise<boolean>;
133
+ /**
134
+ * --- 打开新的标签页
135
+ * @param url 要访问的网址
136
+ */
137
+ export declare function open(url: string): void;
138
+ /**
139
+ * --- 注册模块 ---
140
+ * @param current 当前任务 id
141
+ * @param name 模块名
142
+ * @param func 执行加载函数
143
+ * @param version 版本号,非 ESM 可留空
144
+ */
145
+ export declare function regModule(current: TCurrent, name: string, opt: {
146
+ /** --- ESM 模式必填 --- */
147
+ 'version'?: string;
148
+ /** --- 除 ESM 模式外必填 --- */
149
+ func?: () => any | Promise<any>;
150
+ }): Promise<boolean>;
151
+ /**
152
+ * --- 检查特殊模块是否注册 ---
153
+ * @param name 模块名
154
+ */
155
+ export declare function checkModule(name: string): boolean;
156
+ export declare function getModule(name: 'tums-player'): Promise<ITumsPlayer | null>;
157
+ export declare function getModule(name: string): Promise<any | null>;
158
+ /**
159
+ * --- 加载模块,返回 true / false ---
160
+ * @param name 模块名
161
+ */
162
+ export declare function loadModule(name: string): Promise<boolean>;
163
+ export declare function init(): void;
164
+ /** --- Config 对象 --- */
165
+ export interface IConfig {
166
+ 'locale': string;
167
+ ['task.position']: 'left' | 'right' | 'top' | 'bottom';
168
+ ['task.pin']: Record<string, {
169
+ 'name': string;
170
+ 'icon': string;
171
+ }>;
172
+ ['desktop.icon.storage']: boolean;
173
+ ['desktop.icon.recycler']: boolean;
174
+ ['desktop.wallpaper']: string | null;
175
+ ['desktop.path']: string | null;
176
+ ['launcher.list']: IConfigLauncherItem[];
177
+ }
178
+ /** --- Launcher 的 item 对象 --- */
179
+ export interface IConfigLauncherItem {
180
+ 'id'?: string;
181
+ 'name': string;
182
+ 'path'?: string;
183
+ 'icon'?: string;
184
+ 'list'?: Array<{
185
+ 'id'?: string;
186
+ 'name': string;
187
+ 'path': string;
188
+ 'icon': string;
189
+ }>;
190
+ }
191
+ /** --- 屏幕可用区域 --- */
192
+ export interface IAvailArea {
193
+ 'left': number;
194
+ 'top': number;
195
+ 'width': number;
196
+ 'height': number;
197
+ 'owidth': number;
198
+ 'oheight': number;
199
+ }
200
+ /** --- 全局事件类型 --- */
201
+ export type TGlobalEvent = 'error' | 'screenResize' | 'configChanged' | 'formCreated' | 'formRemoved' | 'formTitleChanged' | 'formIconChanged' | 'formStateMinChanged' | 'formStateMaxChanged' | 'formShowChanged' | 'formFocused' | 'formBlurred' | 'formFlash' | 'formShowInSystemTaskChange' | 'formHashChange' | 'taskStarted' | 'taskEnded' | 'launcherFolderNameChanged' | 'hashChanged' | 'keydown' | 'keyup';
202
+ /** --- 现场下载 app 的参数 --- */
203
+ export interface ICoreFetchAppOptions {
204
+ 'notify'?: number | {
205
+ /** --- notify id --- */
206
+ 'id': number;
207
+ /** --- 偏移基准 --- */
208
+ 'loaded': number;
209
+ /** --- 偏移总量 --- */
210
+ 'total': number;
211
+ };
212
+ /** --- 网址后面附带的前缀,如 ?123 --- */
213
+ 'after'?: string;
214
+ /**
215
+ * --- 下载进度 ---
216
+ * @param loaded 已下载字节
217
+ * @param total 总字节
218
+ * @param per 含偏移进度百分比(0 - 1)
219
+ */
220
+ 'progress'?: (loaded: number, total: number, per: number) => void | Promise<void>;
221
+ }
222
+ /** --- 应用包解包后对象 --- */
223
+ export interface IApp {
224
+ 'type': 'app';
225
+ /** --- 控件对象配置文件 --- */
226
+ 'config': IAppConfig;
227
+ /** --- 所有已加载的文件内容 --- */
228
+ 'files': Record<string, Blob | string>;
229
+ /** --- 应用图标 --- */
230
+ 'icon': string;
231
+ }
232
+ /** --- 应用文件包 config --- */
233
+ export interface IAppConfig {
234
+ /** --- 应用名 --- */
235
+ 'name': string;
236
+ /** --- 发行版本 --- */
237
+ 'ver': number;
238
+ /** --- 发行版本字符串 --- */
239
+ 'version': string;
240
+ /** --- 作者 --- */
241
+ 'author': string;
242
+ /** --- 将要加载的控件 --- */
243
+ 'controls': string[];
244
+ /** --- 将自动加载的主题 --- */
245
+ 'themes'?: string[];
246
+ /** --- 将自动申请的权限 --- */
247
+ 'permissions'?: string[];
248
+ /** --- 将自动加载的语言包,path: lang --- */
249
+ 'locales'?: Record<string, string>;
250
+ /** --- 全局样式,不带扩展名,系统会在末尾添加 .css --- */
251
+ 'style'?: string;
252
+ /** --- 图标路径,需包含扩展名 --- */
253
+ 'icon'?: string;
254
+ /** --- 将要加载的非 js 文件列表,打包为 cga 模式下此配置可省略 --- */
255
+ 'files'?: string[];
256
+ /** --- 要提前加载的库名 --- */
257
+ 'modules'?: string[];
258
+ }
259
+ /** --- Vue 实例 --- */
260
+ export interface IVue {
261
+ '$attrs': Record<string, string>;
262
+ '$data': Record<string, any>;
263
+ '$el': HTMLElement;
264
+ $emit(name: string, ...arg: any): void;
265
+ $forceUpdate(): void;
266
+ $nextTick(): Promise<void>;
267
+ '$options': Record<string, any>;
268
+ '$parent': IVue | null;
269
+ '$props': Record<string, any>;
270
+ '$refs': Record<string, HTMLElement & IVue>;
271
+ '$root': IVue;
272
+ '$slots': {
273
+ 'default': undefined | ((o?: any) => IVNode[]);
274
+ [key: string]: undefined | ((o?: any) => IVNode[]);
275
+ };
276
+ '$watch': (o: any, cb: (n: any, o: any) => void) => void;
277
+ [key: string]: any;
278
+ }
279
+ /** --- Vue 节点 --- */
280
+ export interface IVNode {
281
+ 'children': {
282
+ 'default': undefined | (() => IVNode[]);
283
+ [key: string]: undefined | (() => IVNode[]);
284
+ } & IVNode[];
285
+ 'props': Record<string, any>;
286
+ 'type': symbol | Record<string, any>;
287
+ [key: string]: any;
288
+ }
289
+ export interface IVueObject {
290
+ createApp(opt: any): IVApp;
291
+ ref<T extends number | string>(obj: T): {
292
+ 'value': T;
293
+ };
294
+ reactive<T>(obj: T): T;
295
+ watch(v: any, cb: (n: any, o: any) => void | Promise<void>, opt: Record<string, string | boolean>): void;
296
+ h(tag: string, props?: Record<string, any> | any[], list?: any[]): any;
297
+ }
298
+ /** --- Vue 选项合并函数 --- */
299
+ export type IVueOptionMergeFunction = (to: unknown, from: unknown, instance: IVue) => any;
300
+ /** --- Vue 配置 --- */
301
+ export interface IVueConfig {
302
+ errorHandler?(err: unknown, instance: IVue | null, info: string): void;
303
+ 'globalProperties': Record<string, any>;
304
+ isCustomElement(tag: string): boolean;
305
+ 'optionMergeStrategies': Record<string, IVueOptionMergeFunction>;
306
+ 'performance': boolean;
307
+ warnHandler?(msg: string, instance: IVue | null, trace: string): void;
308
+ }
309
+ /** --- Vue 应用 --- */
310
+ export interface IVApp {
311
+ component(name: string): any | undefined;
312
+ component(name: string, config: any): this;
313
+ 'config': IVueConfig;
314
+ directive(name: string): any | undefined;
315
+ directive(name: string, config: any): this;
316
+ mixin(mixin: any): this;
317
+ mount(rootContainer: HTMLElement | string): IVue;
318
+ provide<T>(key: string, value: T): this;
319
+ unmount(): void;
320
+ 'version': string;
321
+ ['_container']: HTMLElement;
322
+ }
323
+ export type TCurrent = string | lForm.AbstractForm | lForm.AbstractPanel | lControl.AbstractControl | lCore.AbstractApp;
324
+ /** --- tums-player 模块对象 --- */
325
+ export interface ITumsPlayer {
326
+ 'default': any;
327
+ /** --- 开始对讲 --- */
328
+ 'startTalk': (opt: {
329
+ 'sid': string;
330
+ 'skey': string;
331
+ 'url': string;
332
+ /** --- half_duplex-半双工模式,vad-VAD 人声检测模式,aec-AEC 全双工模式,默认 vad --- */
333
+ 'mode'?: 'half_duplex' | 'vad' | 'aec';
334
+ }) => Promise<void>;
335
+ /** --- 停止对讲 --- */
336
+ 'stopTalk': () => void;
337
+ }