jodit-pro 4.12.39 → 4.12.40
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/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.js +3 -3
- package/es2015/jodit.js +2 -2
- package/es2015/jodit.min.js +2 -2
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.css +1 -1
- package/es2015/plugins/autocomplete/autocomplete.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2015/plugins/backup/backup.css +1 -1
- package/es2015/plugins/backup/backup.js +1 -1
- package/es2015/plugins/backup/backup.min.js +1 -1
- package/es2015/plugins/button-generator/button-generator.css +1 -1
- package/es2015/plugins/button-generator/button-generator.js +1 -1
- package/es2015/plugins/button-generator/button-generator.min.js +1 -1
- package/es2015/plugins/change-case/change-case.js +1 -1
- package/es2015/plugins/change-case/change-case.min.js +1 -1
- package/es2015/plugins/color-picker/color-picker.css +1 -1
- package/es2015/plugins/color-picker/color-picker.js +1 -1
- package/es2015/plugins/color-picker/color-picker.min.js +1 -1
- package/es2015/plugins/emoji/emoji.css +1 -1
- package/es2015/plugins/emoji/emoji.js +1 -1
- package/es2015/plugins/emoji/emoji.min.js +1 -1
- package/es2015/plugins/export-docs/export-docs.js +1 -1
- package/es2015/plugins/export-docs/export-docs.min.js +1 -1
- package/es2015/plugins/finder/finder.css +1 -1
- package/es2015/plugins/finder/finder.js +19 -3
- package/es2015/plugins/finder/finder.min.js +2 -2
- package/es2015/plugins/google-maps/google-maps.css +1 -1
- package/es2015/plugins/google-maps/google-maps.js +1 -1
- package/es2015/plugins/google-maps/google-maps.min.js +1 -1
- package/es2015/plugins/google-search/google-search.js +1 -1
- package/es2015/plugins/google-search/google-search.min.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2015/plugins/keyboard/keyboard.css +1 -1
- package/es2015/plugins/keyboard/keyboard.js +1 -1
- package/es2015/plugins/keyboard/keyboard.min.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2015/plugins/page-break/page-break.js +1 -1
- package/es2015/plugins/page-break/page-break.min.js +1 -1
- package/es2015/plugins/paste-code/paste-code.css +1 -1
- package/es2015/plugins/paste-code/paste-code.js +1 -1
- package/es2015/plugins/paste-code/paste-code.min.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2015/plugins/style/style.css +1 -1
- package/es2015/plugins/style/style.js +1 -1
- package/es2015/plugins/style/style.min.js +1 -1
- package/es2015/plugins/templates/templates.css +1 -1
- package/es2015/plugins/templates/templates.js +1 -1
- package/es2015/plugins/templates/templates.min.js +1 -1
- package/es2015/plugins/todo-list/todo-list.css +1 -1
- package/es2015/plugins/todo-list/todo-list.js +1 -1
- package/es2015/plugins/todo-list/todo-list.min.js +1 -1
- package/es2015/plugins/translate/translate.css +1 -1
- package/es2015/plugins/translate/translate.js +1 -1
- package/es2015/plugins/translate/translate.min.js +1 -1
- package/es2015/plugins/tune-block/tune-block.css +1 -1
- package/es2015/plugins/tune-block/tune-block.js +1 -1
- package/es2015/plugins/tune-block/tune-block.min.js +1 -1
- package/es2018/jodit.fat.min.js +3 -3
- package/es2018/jodit.min.js +2 -2
- package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2018/plugins/backup/backup.min.js +1 -1
- package/es2018/plugins/button-generator/button-generator.min.js +1 -1
- package/es2018/plugins/change-case/change-case.min.js +1 -1
- package/es2018/plugins/color-picker/color-picker.min.js +1 -1
- package/es2018/plugins/emoji/emoji.min.js +1 -1
- package/es2018/plugins/export-docs/export-docs.min.js +1 -1
- package/es2018/plugins/finder/finder.min.js +2 -2
- package/es2018/plugins/google-maps/google-maps.min.js +1 -1
- package/es2018/plugins/google-search/google-search.min.js +1 -1
- package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2018/plugins/keyboard/keyboard.min.js +1 -1
- package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2018/plugins/page-break/page-break.min.js +1 -1
- package/es2018/plugins/paste-code/paste-code.min.js +1 -1
- package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2018/plugins/style/style.min.js +1 -1
- package/es2018/plugins/templates/templates.min.js +1 -1
- package/es2018/plugins/todo-list/todo-list.min.js +1 -1
- package/es2018/plugins/translate/translate.min.js +1 -1
- package/es2018/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021/jodit.css +1 -1
- package/es2021/jodit.fat.min.js +3 -3
- package/es2021/jodit.js +2 -2
- package/es2021/jodit.min.js +2 -2
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021/plugins/backup/backup.css +1 -1
- package/es2021/plugins/backup/backup.js +1 -1
- package/es2021/plugins/backup/backup.min.js +1 -1
- package/es2021/plugins/button-generator/button-generator.css +1 -1
- package/es2021/plugins/button-generator/button-generator.js +1 -1
- package/es2021/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021/plugins/change-case/change-case.js +1 -1
- package/es2021/plugins/change-case/change-case.min.js +1 -1
- package/es2021/plugins/color-picker/color-picker.css +1 -1
- package/es2021/plugins/color-picker/color-picker.js +1 -1
- package/es2021/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021/plugins/emoji/emoji.css +1 -1
- package/es2021/plugins/emoji/emoji.js +1 -1
- package/es2021/plugins/emoji/emoji.min.js +1 -1
- package/es2021/plugins/export-docs/export-docs.js +1 -1
- package/es2021/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021/plugins/finder/finder.css +1 -1
- package/es2021/plugins/finder/finder.js +19 -3
- package/es2021/plugins/finder/finder.min.js +2 -2
- package/es2021/plugins/google-maps/google-maps.css +1 -1
- package/es2021/plugins/google-maps/google-maps.js +1 -1
- package/es2021/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021/plugins/google-search/google-search.js +1 -1
- package/es2021/plugins/google-search/google-search.min.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021/plugins/keyboard/keyboard.css +1 -1
- package/es2021/plugins/keyboard/keyboard.js +1 -1
- package/es2021/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021/plugins/page-break/page-break.js +1 -1
- package/es2021/plugins/page-break/page-break.min.js +1 -1
- package/es2021/plugins/paste-code/paste-code.css +1 -1
- package/es2021/plugins/paste-code/paste-code.js +1 -1
- package/es2021/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021/plugins/style/style.css +1 -1
- package/es2021/plugins/style/style.js +1 -1
- package/es2021/plugins/style/style.min.js +1 -1
- package/es2021/plugins/templates/templates.css +1 -1
- package/es2021/plugins/templates/templates.js +1 -1
- package/es2021/plugins/templates/templates.min.js +1 -1
- package/es2021/plugins/todo-list/todo-list.css +1 -1
- package/es2021/plugins/todo-list/todo-list.js +1 -1
- package/es2021/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021/plugins/translate/translate.css +1 -1
- package/es2021/plugins/translate/translate.js +1 -1
- package/es2021/plugins/translate/translate.min.js +1 -1
- package/es2021/plugins/tune-block/tune-block.css +1 -1
- package/es2021/plugins/tune-block/tune-block.js +1 -1
- package/es2021/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021.en/jodit.css +1 -1
- package/es2021.en/jodit.fat.min.js +3 -3
- package/es2021.en/jodit.js +2 -2
- package/es2021.en/jodit.min.js +2 -2
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021.en/plugins/backup/backup.css +1 -1
- package/es2021.en/plugins/backup/backup.js +1 -1
- package/es2021.en/plugins/backup/backup.min.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.css +1 -1
- package/es2021.en/plugins/button-generator/button-generator.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021.en/plugins/change-case/change-case.js +1 -1
- package/es2021.en/plugins/change-case/change-case.min.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.css +1 -1
- package/es2021.en/plugins/color-picker/color-picker.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021.en/plugins/emoji/emoji.css +1 -1
- package/es2021.en/plugins/emoji/emoji.js +1 -1
- package/es2021.en/plugins/emoji/emoji.min.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021.en/plugins/finder/finder.css +1 -1
- package/es2021.en/plugins/finder/finder.js +19 -3
- package/es2021.en/plugins/finder/finder.min.js +2 -2
- package/es2021.en/plugins/google-maps/google-maps.css +1 -1
- package/es2021.en/plugins/google-maps/google-maps.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021.en/plugins/google-search/google-search.js +1 -1
- package/es2021.en/plugins/google-search/google-search.min.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.css +1 -1
- package/es2021.en/plugins/keyboard/keyboard.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021.en/plugins/page-break/page-break.js +1 -1
- package/es2021.en/plugins/page-break/page-break.min.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.css +1 -1
- package/es2021.en/plugins/paste-code/paste-code.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021.en/plugins/style/style.css +1 -1
- package/es2021.en/plugins/style/style.js +1 -1
- package/es2021.en/plugins/style/style.min.js +1 -1
- package/es2021.en/plugins/templates/templates.css +1 -1
- package/es2021.en/plugins/templates/templates.js +1 -1
- package/es2021.en/plugins/templates/templates.min.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.css +1 -1
- package/es2021.en/plugins/todo-list/todo-list.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021.en/plugins/translate/translate.css +1 -1
- package/es2021.en/plugins/translate/translate.js +1 -1
- package/es2021.en/plugins/translate/translate.min.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.css +1 -1
- package/es2021.en/plugins/tune-block/tune-block.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/jodit.css +2 -2
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +2 -2
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.css +1 -1
- package/es5/plugins/autocomplete/autocomplete.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es5/plugins/backup/backup.css +1 -1
- package/es5/plugins/backup/backup.js +1 -1
- package/es5/plugins/backup/backup.min.js +1 -1
- package/es5/plugins/button-generator/button-generator.css +1 -1
- package/es5/plugins/button-generator/button-generator.js +1 -1
- package/es5/plugins/button-generator/button-generator.min.js +1 -1
- package/es5/plugins/change-case/change-case.js +1 -1
- package/es5/plugins/change-case/change-case.min.js +1 -1
- package/es5/plugins/color-picker/color-picker.css +1 -1
- package/es5/plugins/color-picker/color-picker.js +1 -1
- package/es5/plugins/color-picker/color-picker.min.js +1 -1
- package/es5/plugins/emoji/emoji.css +1 -1
- package/es5/plugins/emoji/emoji.js +1 -1
- package/es5/plugins/emoji/emoji.min.js +1 -1
- package/es5/plugins/export-docs/export-docs.js +1 -1
- package/es5/plugins/export-docs/export-docs.min.js +1 -1
- package/es5/plugins/finder/finder.css +1 -1
- package/es5/plugins/finder/finder.js +22 -3
- package/es5/plugins/finder/finder.min.js +2 -2
- package/es5/plugins/google-maps/google-maps.css +1 -1
- package/es5/plugins/google-maps/google-maps.js +1 -1
- package/es5/plugins/google-maps/google-maps.min.js +1 -1
- package/es5/plugins/google-search/google-search.js +1 -1
- package/es5/plugins/google-search/google-search.min.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es5/plugins/keyboard/keyboard.css +1 -1
- package/es5/plugins/keyboard/keyboard.js +1 -1
- package/es5/plugins/keyboard/keyboard.min.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es5/plugins/page-break/page-break.js +1 -1
- package/es5/plugins/page-break/page-break.min.js +1 -1
- package/es5/plugins/paste-code/paste-code.css +1 -1
- package/es5/plugins/paste-code/paste-code.js +1 -1
- package/es5/plugins/paste-code/paste-code.min.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es5/plugins/style/style.css +1 -1
- package/es5/plugins/style/style.js +1 -1
- package/es5/plugins/style/style.min.js +1 -1
- package/es5/plugins/templates/templates.css +1 -1
- package/es5/plugins/templates/templates.js +1 -1
- package/es5/plugins/templates/templates.min.js +1 -1
- package/es5/plugins/todo-list/todo-list.css +1 -1
- package/es5/plugins/todo-list/todo-list.js +1 -1
- package/es5/plugins/todo-list/todo-list.min.js +1 -1
- package/es5/plugins/translate/translate.css +1 -1
- package/es5/plugins/translate/translate.js +1 -1
- package/es5/plugins/translate/translate.min.js +1 -1
- package/es5/plugins/tune-block/tune-block.css +1 -1
- package/es5/plugins/tune-block/tune-block.js +1 -1
- package/es5/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/plugins/finder/browser.d.ts +10 -1
- package/esm/plugins/finder/browser.js +1 -1
- package/package.json +1 -1
- package/types/plugins/finder/browser.d.ts +10 -1
package/es5/polyfills.fat.min.js
CHANGED
package/es5/polyfills.js
CHANGED
package/es5/polyfills.min.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license information.
|
|
4
4
|
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
5
|
*/
|
|
6
|
-
import type { CanUndef, IFileBrowserCallBackData, IFileBrowserDataProvider, IFileBrowserItemWrapper, IProgressBar, IUIGroup } from "jodit/esm/types/index";
|
|
6
|
+
import type { CanUndef, IFileBrowserAnswer, IFileBrowserCallBackData, IFileBrowserDataProvider, IFileBrowserItemWrapper, IProgressBar, IUIGroup } from "jodit/esm/types/index";
|
|
7
7
|
import "./ui/assets/icons/index";
|
|
8
8
|
import { ContextMenuManager } from "./helpers/context-menu";
|
|
9
9
|
import { LoadingManager } from "./helpers/loading-manager";
|
|
@@ -30,6 +30,15 @@ export declare class FileBrowserPro extends Dialog implements IFileBrowserPro {
|
|
|
30
30
|
lock(name?: string): boolean;
|
|
31
31
|
unlock(): boolean;
|
|
32
32
|
status(message: string | Error, success?: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Upload error handler bound to the uploader. The uploader calls it with
|
|
35
|
+
* either an `Error` or the raw connector answer. `status` alone only
|
|
36
|
+
* understands string/Error, so a raw answer — whose text lives in
|
|
37
|
+
* `data.messages`, not `.message` — was silently dropped and the user saw
|
|
38
|
+
* no error. Mirror the core file-browser: pull the message out of the
|
|
39
|
+
* answer via the data provider and show it as an error.
|
|
40
|
+
*/
|
|
41
|
+
errorHandler(resp: Error | IFileBrowserAnswer): void;
|
|
33
42
|
private header;
|
|
34
43
|
panel: UIBrowserPanel;
|
|
35
44
|
files: IUIGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var E=Object.defineProperty;var d=(m,e)=>E(m,"name",{value:e,configurable:!0});var u,o=function(m,e,t,s){var i=arguments.length,n=i<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,t):s,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(m,e,t,s);else for(var l=m.length-1;l>=0;l--)(h=m[l])&&(n=(i<3?h(n):i>3?h(e,t,n):h(e,t))||n);return i>3&&n&&Object.defineProperty(e,t,n),n};import"./ui/assets/icons/index.js";import{ContextMenuManager as M}from"./helpers/context-menu.js";import{parentPath as c}from"./helpers/helpers.js";import{HistoryManager as S}from"./helpers/history-manager.js";import{LoadingManager as F}from"./helpers/loading-manager.js";import{PersistentStore as _}from"./helpers/persistent-store.js";import{StateManager as C}from"./helpers/state-manager.js";import{UIBrowserHeader as I}from"./ui/header/header.js";import{UILightBox as B}from"./ui/lightboox/lightbox.js";import{UIBrowserPanel as O}from"./ui/panel/panel.js";import{UIProgress as L}from"./ui/progress/progress.js";import{Config as p}from"jodit/esm/config.js";import{IS_PROD as x,KEY_DELETE as D,KEY_DOWN as b,KEY_ENTER as k,KEY_LEFT as y,KEY_RIGHT as f,KEY_UP as U}from"jodit/esm/core/constants.js";import{autobind as g,cache as K,component as N,derive as z,watch as a}from"jodit/esm/core/decorators/index.js";import{ConfigProto as v,css as T,isAbortError as j,isString as P,isValidName as R}from"jodit/esm/core/helpers/index.js";import{Dlgs as H}from"jodit/esm/core/traits/dlgs.js";import{Dom as W,observable as G}from"jodit/esm/modules/index.js";import{Dialog as Y}from"jodit/esm/modules/dialog/index.js";import{makeDataProvider as A}from"jodit/esm/modules/file-browser/factories.js";import{openImageEditor as J}from"jodit/esm/modules/image-editor/image-editor.js";import{JoditPro as w}from"../../jodit-pro.js";import{license as V}from"../license/license.js";let r=(u=class extends Y{className(){return"FileBrowserPro"}lock(e="any"){return this.container.classList.add("jodit_disabled"),super.lock(e)}unlock(){return this.container.classList.remove("jodit_disabled"),super.unlock()}status(e,t=!(e instanceof Error)){j(e)||(!x&&!P(e)&&console.error(e),this.message.message(P(e)?e:e.message,t?"success":"error",this.options.howLongShowMsg))}get progressbar(){return new L(this,this.stateManager.state)}constructor(e){super(v(Object.assign(e||{},{resizable:!0,draggable:!0,toolbarButtons:e?.toolbarButtons||p.defaultOptions.filebrowser.buttons,buttons:w.atom(["filebrowser.settings","fullsize","dialog.close"])}),p.defaultOptions.filebrowser)),this.dataProvider=A(this,this.options),this.state=G({onSelectCallBack:null,theme:"default",showSideBar:!0,showFavorites:!0,showSettings:!1,showPreview:!1,withFolders:!0,foldersPosition:"bottom",info:"",metaInfo:null,currentPath:"",currentSource:"",currentBaseUrl:"",tree:[],activeElements:[],favorites:[],progress:0,lastSelectedIndex:0,elements:[],messages:[],sources:[],view:"tiles",tileSize:"default",sortBy:"name-asc",filterWord:"",onlyImages:!1}),this.persistent=new _(this,this.state),this.loadingManager=new F(this,this.state),this.stateManager=new C(this.state),this.historyManager=new S(this,this.state),this.contextMenuManager=new M(this),this.header=new I(this,this.options,this.stateManager),this.panel=new O(this,this.stateManager),this.files=this.panel,this.tree=this.panel,V.make(this),!this.persistent.theme&&this.options.theme&&(this.persistent.theme=this.options.theme),this.panel.append(this.progressbar),this.toolbar.setMod("mode","header"),this.setSize(Math.min(this.options.width,screen.width),Math.min(this.options.height,screen.height)).setHeader(this.header),this.onResizeWindow(),this.initUploader(),this.onChangeTheme(),this.fullFillOptions(),this.dataProvider.onProgress(t=>{t===0&&(t=30),this.state.progress=t}),this.e.on("beforeClose",this.removeGlobalListeners),this.e.fire("afterInit"),w.prototype.afterInitHook.call(this)}addDisclaimer(e){this.dialog.appendChild(e)}async open(e=this.o.defaultCallback,t){return this.state.onlyImages=!!t,this.prepareOpening(e),super.open(this.panel.container),this.e.fire("update.filebrowser")}onResizeWindow(){T(this.dialog,{maxWidth:screen.width,minHeight:Math.min(this.options.height,screen.height),minWidth:Math.min(this.options.width,screen.width)})}onChangePath(){const{currentPath:e,currentSource:t}=this.state;this.uploader.setPath(e),this.uploader.setSource(t)}onChangeTheme(){this.setMod("theme",this.state.theme),this.header.setMod("theme",this.state.theme),this.panel.setMod("theme",this.state.theme),this.options.theme=this.state.theme}onToggleSettings(){this.state.showSettings=!this.state.showSettings}prepareOpening(e){this.registerGlobalListeners(),e&&(this.state.onSelectCallBack=t=>{this.close(),e(t)}),this.persistent.syncWithState()}registerGlobalListeners(){this.e.on(this.ow,"keydown",this.onKeyPress)}onKeyPress(e){const{activeElement:t}=this.od;if(!this.state.activeElements.length||!t||!W.isOrContains(this.panel.items.container,t))return;const s=this.state.elements;switch(e.key){case k:return this.onChooseItems();case D:return this.onFileRemove();case f:case y:case b:case U:{const i=e.key===f||e.key===b,n=this.state.lastSelectedIndex;let h;if([f,y].includes(e.key))i?h=s[n+1]?n+1:0:h=s[n-1]?n-1:s.length-1;else{const{countInRow:l}=this.panel;h=Math.round(((n+1)/l+(i?1:-1))*l-1)}return s[h]&&this.stateManager.addActive(s[h],e.shiftKey),!1}}}removeGlobalListeners(){this.e.off(this.ow,"keydown",this.onKeyPress)}onFileRemove(){this.state.activeElements.length&&this.confirm("Are you sure?","Delete",e=>{e&&this.__itemsRemove(this.state.activeElements)}).bindDestruct(this)}__itemsRemove(e){if(!e.length)return Promise.resolve();const t=[];return e.forEach(s=>{var i;t.push(s.type==="folder"?this.__folderRemove(c(s.path),(i=s.name)!==null&&i!==void 0?i:"",s.sourceName):this.__removeFile(s.file||s.name||"",s.sourceName))}),this.state.activeElements.forEach(s=>{this.stateManager.isFavorite(s)&&this.stateManager.toggleFavorite(s)}),this.state.activeElements=[],Promise.allSettled(t).then(()=>Promise.allSettled([this.loadingManager.loadItems(),this.loadingManager.loadFolders()]))}__removeFile(e,t){return this.dataProvider.fileRemove(this.state.currentPath,e,t).then(s=>{this.status(s||this.i18n('File "%s" was deleted',e),!0)}).catch(this.status)}__folderRemove(e,t,s){return this.dataProvider.folderRemove(e,t,s).then(i=>{this.status(i||this.i18n('Folder "%s" was deleted',t),!0),this.state.currentPath===e&&(this.state.currentPath=c(e),this.state.currentSource=s)}).catch(this.status)}onFileEdit(){if(this.state.activeElements.length===1){const[e]=this.state.activeElements;J.call(this,e.fileURL,e.file||"",e.path,e.sourceName,void 0,this.status)}}onFolderRename(e){this.prompt("Enter new name","Rename",t=>{if(!R(t)||t===e.name)return this.status(this.i18n("Enter new name")),!1;this.dataProvider.folderRename(c(e.path),e.name,t,e.sourceName).then(s=>{this.state.activeElements=[],this.status(s,!0),this.state.currentPath=c(e.path)+"/"+t,this.state.currentSource=e.sourceName,this.historyManager.updateCurrent(),this.loadingManager.loadFolders()}).catch(this.status)},this.i18n("type name"),e.name).bindDestruct(this)}onFolderRemove(e){this.confirm("Are you sure?","Delete",t=>{t&&this.__itemsRemove([{type:"folder",name:e.name,path:e.path,sourceName:e.sourceName}])}).bindDestruct(this)}onFolderCreate(e){this.prompt("Enter Directory name","Create directory",t=>{const s=e.path||"/";this.dataProvider.createFolder(t,e.path||"/",e.sourceName).then(()=>{this.state.currentSource===e.sourceName&&this.state.currentPath===s?this.e.fire("update.filebrowser"):(this.state.currentSource=e.sourceName,this.state.currentPath=s),this.historyManager.updateCurrent()},this.status)},this.i18n("type name")).bindDestruct(this)}onFileRename(e){const t=e.file||e.name||"";this.state.activeElements.length===1&&t&&this.prompt("Enter new name","Rename",s=>{if(!R(s))return this.status(this.i18n("Enter new name")),!1;this.dataProvider.fileRename(this.state.currentPath,t,s,this.state.currentSource).then(i=>{this.state.activeElements=[],this.status(i,!0),this.loadingManager.loadItems()}).catch(this.status)},this.i18n("type name"),t).bindDestruct(this)}onChooseItems(){const e=this.stateManager.state.activeElements;if(e.length){if(e[0].type==="folder"){this.state.currentPath=this.state.currentPath+"/"+e[0].name,this.state.currentSource=e[0].sourceName,this.e.fire("afterOpenFolder.filebrowser");return}this.state.onSelectCallBack?this.stateManager.callSelectHandler():this.onOpenLightBox(e[0])}}onOpenLightBox(e){B.open(this,e,this.state.elements)}initUploader(){const e=this,t=v(e.o.uploader||{},p.defaultOptions.uploader),s=d(()=>this.loadingManager.loadItems(),"uploadHandler");e.uploader=e.getInstance("Uploader",t),e.uploader.bind(e.panel.container,s,e.status),e.e.on("bindUploader.filebrowser",i=>{e.uploader.bind(i,s,e.status)})}destruct(){this.removeGlobalListeners(),this.header.destruct(),this.panel.destruct(),super.destruct()}fullFillOptions(){["getLocalFileByUrl","crop","resize","create","fileMove","folderMove","fileRename","folderRename","fileRemove","folderRemove","folder","items","permissions"].forEach(t=>{this.options[t]!=null&&(this.options[t]=v(this.options[t],this.o.ajax))})}},d(u,"FileBrowserPro"),u);o([g],r.prototype,"status",null),o([K],r.prototype,"progressbar",null),o([a(":resize",{context:window})],r.prototype,"onResizeWindow",null),o([a(["state.currentPath","state.currentSource"])],r.prototype,"onChangePath",null),o([a("state.theme")],r.prototype,"onChangeTheme",null),o([a(":toggleSettings.filebrowser")],r.prototype,"onToggleSettings",null),o([g],r.prototype,"onKeyPress",null),o([g],r.prototype,"removeGlobalListeners",null),o([a(":fileRemove.filebrowser")],r.prototype,"onFileRemove",null),o([a(":edit.filebrowser")],r.prototype,"onFileEdit",null),o([a(":folderRename.filebrowser")],r.prototype,"onFolderRename",null),o([a(":folderRemove.filebrowser")],r.prototype,"onFolderRemove",null),o([a(":folderCreate.filebrowser")],r.prototype,"onFolderCreate",null),o([a(":fileRename.filebrowser")],r.prototype,"onFileRename",null),o([a(":select.filebrowser")],r.prototype,"onChooseItems",null),o([a(":openLightBox.filebrowser")],r.prototype,"onOpenLightBox",null),r=o([N,z(H)],r);Object.defineProperty(w.modules,"FileBrowserPro",{value:r,writable:!1,enumerable:!0,configurable:!0});export{r as FileBrowserPro};
|
|
1
|
+
var M=Object.defineProperty;var p=(m,e)=>M(m,"name",{value:e,configurable:!0});var u,i=function(m,e,t,s){var o=arguments.length,n=o<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,t):s,h;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(m,e,t,s);else for(var l=m.length-1;l>=0;l--)(h=m[l])&&(n=(o<3?h(n):o>3?h(e,t,n):h(e,t))||n);return o>3&&n&&Object.defineProperty(e,t,n),n};import"./ui/assets/icons/index.js";import{ContextMenuManager as S}from"./helpers/context-menu.js";import{parentPath as c}from"./helpers/helpers.js";import{HistoryManager as F}from"./helpers/history-manager.js";import{LoadingManager as _}from"./helpers/loading-manager.js";import{PersistentStore as C}from"./helpers/persistent-store.js";import{StateManager as I}from"./helpers/state-manager.js";import{UIBrowserHeader as B}from"./ui/header/header.js";import{UILightBox as O}from"./ui/lightboox/lightbox.js";import{UIBrowserPanel as L}from"./ui/panel/panel.js";import{UIProgress as x}from"./ui/progress/progress.js";import{Config as f}from"jodit/esm/config.js";import{IS_PROD as D,KEY_DELETE as k,KEY_DOWN as b,KEY_ENTER as H,KEY_LEFT as y,KEY_RIGHT as g,KEY_UP as U}from"jodit/esm/core/constants.js";import{autobind as d,cache as K,component as N,derive as z,watch as a}from"jodit/esm/core/decorators/index.js";import{ConfigProto as v,css as T,isAbortError as P,isString as E,isValidName as R}from"jodit/esm/core/helpers/index.js";import{Dlgs as j}from"jodit/esm/core/traits/dlgs.js";import{Dom as W,observable as G}from"jodit/esm/modules/index.js";import{Dialog as Y}from"jodit/esm/modules/dialog/index.js";import{makeDataProvider as A}from"jodit/esm/modules/file-browser/factories.js";import{openImageEditor as J}from"jodit/esm/modules/image-editor/image-editor.js";import{JoditPro as w}from"../../jodit-pro.js";import{license as V}from"../license/license.js";let r=(u=class extends Y{className(){return"FileBrowserPro"}lock(e="any"){return this.container.classList.add("jodit_disabled"),super.lock(e)}unlock(){return this.container.classList.remove("jodit_disabled"),super.unlock()}status(e,t=!(e instanceof Error)){P(e)||(!D&&!E(e)&&console.error(e),this.message.message(E(e)?e:e.message,t?"success":"error",this.options.howLongShowMsg))}errorHandler(e){P(e)||this.status(e instanceof Error?this.i18n(e.message):this.dataProvider.getMessage(e),!1)}get progressbar(){return new x(this,this.stateManager.state)}constructor(e){super(v(Object.assign(e||{},{resizable:!0,draggable:!0,toolbarButtons:e?.toolbarButtons||f.defaultOptions.filebrowser.buttons,buttons:w.atom(["filebrowser.settings","fullsize","dialog.close"])}),f.defaultOptions.filebrowser)),this.dataProvider=A(this,this.options),this.state=G({onSelectCallBack:null,theme:"default",showSideBar:!0,showFavorites:!0,showSettings:!1,showPreview:!1,withFolders:!0,foldersPosition:"bottom",info:"",metaInfo:null,currentPath:"",currentSource:"",currentBaseUrl:"",tree:[],activeElements:[],favorites:[],progress:0,lastSelectedIndex:0,elements:[],messages:[],sources:[],view:"tiles",tileSize:"default",sortBy:"name-asc",filterWord:"",onlyImages:!1}),this.persistent=new C(this,this.state),this.loadingManager=new _(this,this.state),this.stateManager=new I(this.state),this.historyManager=new F(this,this.state),this.contextMenuManager=new S(this),this.header=new B(this,this.options,this.stateManager),this.panel=new L(this,this.stateManager),this.files=this.panel,this.tree=this.panel,V.make(this),!this.persistent.theme&&this.options.theme&&(this.persistent.theme=this.options.theme),this.panel.append(this.progressbar),this.toolbar.setMod("mode","header"),this.setSize(Math.min(this.options.width,screen.width),Math.min(this.options.height,screen.height)).setHeader(this.header),this.onResizeWindow(),this.initUploader(),this.onChangeTheme(),this.fullFillOptions(),this.dataProvider.onProgress(t=>{t===0&&(t=30),this.state.progress=t}),this.e.on("beforeClose",this.removeGlobalListeners),this.e.fire("afterInit"),w.prototype.afterInitHook.call(this)}addDisclaimer(e){this.dialog.appendChild(e)}async open(e=this.o.defaultCallback,t){return this.state.onlyImages=!!t,this.prepareOpening(e),super.open(this.panel.container),this.e.fire("update.filebrowser")}onResizeWindow(){T(this.dialog,{maxWidth:screen.width,minHeight:Math.min(this.options.height,screen.height),minWidth:Math.min(this.options.width,screen.width)})}onChangePath(){const{currentPath:e,currentSource:t}=this.state;this.uploader.setPath(e),this.uploader.setSource(t)}onChangeTheme(){this.setMod("theme",this.state.theme),this.header.setMod("theme",this.state.theme),this.panel.setMod("theme",this.state.theme),this.options.theme=this.state.theme}onToggleSettings(){this.state.showSettings=!this.state.showSettings}prepareOpening(e){this.registerGlobalListeners(),e&&(this.state.onSelectCallBack=t=>{this.close(),e(t)}),this.persistent.syncWithState()}registerGlobalListeners(){this.e.on(this.ow,"keydown",this.onKeyPress)}onKeyPress(e){const{activeElement:t}=this.od;if(!this.state.activeElements.length||!t||!W.isOrContains(this.panel.items.container,t))return;const s=this.state.elements;switch(e.key){case H:return this.onChooseItems();case k:return this.onFileRemove();case g:case y:case b:case U:{const o=e.key===g||e.key===b,n=this.state.lastSelectedIndex;let h;if([g,y].includes(e.key))o?h=s[n+1]?n+1:0:h=s[n-1]?n-1:s.length-1;else{const{countInRow:l}=this.panel;h=Math.round(((n+1)/l+(o?1:-1))*l-1)}return s[h]&&this.stateManager.addActive(s[h],e.shiftKey),!1}}}removeGlobalListeners(){this.e.off(this.ow,"keydown",this.onKeyPress)}onFileRemove(){this.state.activeElements.length&&this.confirm("Are you sure?","Delete",e=>{e&&this.__itemsRemove(this.state.activeElements)}).bindDestruct(this)}__itemsRemove(e){if(!e.length)return Promise.resolve();const t=[];return e.forEach(s=>{var o;t.push(s.type==="folder"?this.__folderRemove(c(s.path),(o=s.name)!==null&&o!==void 0?o:"",s.sourceName):this.__removeFile(s.file||s.name||"",s.sourceName))}),this.state.activeElements.forEach(s=>{this.stateManager.isFavorite(s)&&this.stateManager.toggleFavorite(s)}),this.state.activeElements=[],Promise.allSettled(t).then(()=>Promise.allSettled([this.loadingManager.loadItems(),this.loadingManager.loadFolders()]))}__removeFile(e,t){return this.dataProvider.fileRemove(this.state.currentPath,e,t).then(s=>{this.status(s||this.i18n('File "%s" was deleted',e),!0)}).catch(this.status)}__folderRemove(e,t,s){return this.dataProvider.folderRemove(e,t,s).then(o=>{this.status(o||this.i18n('Folder "%s" was deleted',t),!0),this.state.currentPath===e&&(this.state.currentPath=c(e),this.state.currentSource=s)}).catch(this.status)}onFileEdit(){if(this.state.activeElements.length===1){const[e]=this.state.activeElements;J.call(this,e.fileURL,e.file||"",e.path,e.sourceName,void 0,this.status)}}onFolderRename(e){this.prompt("Enter new name","Rename",t=>{if(!R(t)||t===e.name)return this.status(this.i18n("Enter new name")),!1;this.dataProvider.folderRename(c(e.path),e.name,t,e.sourceName).then(s=>{this.state.activeElements=[],this.status(s,!0),this.state.currentPath=c(e.path)+"/"+t,this.state.currentSource=e.sourceName,this.historyManager.updateCurrent(),this.loadingManager.loadFolders()}).catch(this.status)},this.i18n("type name"),e.name).bindDestruct(this)}onFolderRemove(e){this.confirm("Are you sure?","Delete",t=>{t&&this.__itemsRemove([{type:"folder",name:e.name,path:e.path,sourceName:e.sourceName}])}).bindDestruct(this)}onFolderCreate(e){this.prompt("Enter Directory name","Create directory",t=>{const s=e.path||"/";this.dataProvider.createFolder(t,e.path||"/",e.sourceName).then(()=>{this.state.currentSource===e.sourceName&&this.state.currentPath===s?this.e.fire("update.filebrowser"):(this.state.currentSource=e.sourceName,this.state.currentPath=s),this.historyManager.updateCurrent()},this.status)},this.i18n("type name")).bindDestruct(this)}onFileRename(e){const t=e.file||e.name||"";this.state.activeElements.length===1&&t&&this.prompt("Enter new name","Rename",s=>{if(!R(s))return this.status(this.i18n("Enter new name")),!1;this.dataProvider.fileRename(this.state.currentPath,t,s,this.state.currentSource).then(o=>{this.state.activeElements=[],this.status(o,!0),this.loadingManager.loadItems()}).catch(this.status)},this.i18n("type name"),t).bindDestruct(this)}onChooseItems(){const e=this.stateManager.state.activeElements;if(e.length){if(e[0].type==="folder"){this.state.currentPath=this.state.currentPath+"/"+e[0].name,this.state.currentSource=e[0].sourceName,this.e.fire("afterOpenFolder.filebrowser");return}this.state.onSelectCallBack?this.stateManager.callSelectHandler():this.onOpenLightBox(e[0])}}onOpenLightBox(e){O.open(this,e,this.state.elements)}initUploader(){const e=this,t=v(e.o.uploader||{},f.defaultOptions.uploader),s=p(()=>this.loadingManager.loadItems(),"uploadHandler");e.uploader=e.getInstance("Uploader",t),e.uploader.bind(e.panel.container,s,e.errorHandler),e.e.on("bindUploader.filebrowser",o=>{e.uploader.bind(o,s,e.errorHandler)})}destruct(){this.removeGlobalListeners(),this.header.destruct(),this.panel.destruct(),super.destruct()}fullFillOptions(){["getLocalFileByUrl","crop","resize","create","fileMove","folderMove","fileRename","folderRename","fileRemove","folderRemove","folder","items","permissions"].forEach(t=>{this.options[t]!=null&&(this.options[t]=v(this.options[t],this.o.ajax))})}},p(u,"FileBrowserPro"),u);i([d],r.prototype,"status",null),i([d],r.prototype,"errorHandler",null),i([K],r.prototype,"progressbar",null),i([a(":resize",{context:window})],r.prototype,"onResizeWindow",null),i([a(["state.currentPath","state.currentSource"])],r.prototype,"onChangePath",null),i([a("state.theme")],r.prototype,"onChangeTheme",null),i([a(":toggleSettings.filebrowser")],r.prototype,"onToggleSettings",null),i([d],r.prototype,"onKeyPress",null),i([d],r.prototype,"removeGlobalListeners",null),i([a(":fileRemove.filebrowser")],r.prototype,"onFileRemove",null),i([a(":edit.filebrowser")],r.prototype,"onFileEdit",null),i([a(":folderRename.filebrowser")],r.prototype,"onFolderRename",null),i([a(":folderRemove.filebrowser")],r.prototype,"onFolderRemove",null),i([a(":folderCreate.filebrowser")],r.prototype,"onFolderCreate",null),i([a(":fileRename.filebrowser")],r.prototype,"onFileRename",null),i([a(":select.filebrowser")],r.prototype,"onChooseItems",null),i([a(":openLightBox.filebrowser")],r.prototype,"onOpenLightBox",null),r=i([N,z(j)],r);Object.defineProperty(w.modules,"FileBrowserPro",{value:r,writable:!1,enumerable:!0,configurable:!0});export{r as FileBrowserPro};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license information.
|
|
4
4
|
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
5
|
*/
|
|
6
|
-
import type { CanUndef, IFileBrowserCallBackData, IFileBrowserDataProvider, IFileBrowserItemWrapper, IProgressBar, IUIGroup } from "jodit/esm/types/index";
|
|
6
|
+
import type { CanUndef, IFileBrowserAnswer, IFileBrowserCallBackData, IFileBrowserDataProvider, IFileBrowserItemWrapper, IProgressBar, IUIGroup } from "jodit/esm/types/index";
|
|
7
7
|
import "./ui/assets/icons/index";
|
|
8
8
|
import { ContextMenuManager } from "./helpers/context-menu";
|
|
9
9
|
import { LoadingManager } from "./helpers/loading-manager";
|
|
@@ -30,6 +30,15 @@ export declare class FileBrowserPro extends Dialog implements IFileBrowserPro {
|
|
|
30
30
|
lock(name?: string): boolean;
|
|
31
31
|
unlock(): boolean;
|
|
32
32
|
status(message: string | Error, success?: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Upload error handler bound to the uploader. The uploader calls it with
|
|
35
|
+
* either an `Error` or the raw connector answer. `status` alone only
|
|
36
|
+
* understands string/Error, so a raw answer — whose text lives in
|
|
37
|
+
* `data.messages`, not `.message` — was silently dropped and the user saw
|
|
38
|
+
* no error. Mirror the core file-browser: pull the message out of the
|
|
39
|
+
* answer via the data provider and show it as an error.
|
|
40
|
+
*/
|
|
41
|
+
errorHandler(resp: Error | IFileBrowserAnswer): void;
|
|
33
42
|
private header;
|
|
34
43
|
panel: UIBrowserPanel;
|
|
35
44
|
files: IUIGroup;
|