next-box 2.5.97 → 2.5.98

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 (54) hide show
  1. package/app/api/extension-api.d.ts +14 -0
  2. package/app/api/index.d.ts +5 -0
  3. package/app/api/static-api.d.ts +8 -0
  4. package/app/api/storage-api.d.ts +117 -0
  5. package/app/api/types/base.d.ts +22 -0
  6. package/app/api/user-api.d.ts +107 -0
  7. package/app/classes/api.d.ts +19 -0
  8. package/app/classes/event-emitter.d.ts +9 -0
  9. package/app/classes/file-engine.d.ts +37 -0
  10. package/app/classes/index.d.ts +3 -0
  11. package/app/components/index.d.ts +1 -0
  12. package/app/components/nb-frame.d.ts +22 -0
  13. package/app/helpers/browser-navigate.d.ts +2 -0
  14. package/app/helpers/default-state.d.ts +2 -0
  15. package/app/helpers/dirname.d.ts +1 -0
  16. package/app/helpers/file-info.d.ts +2 -0
  17. package/app/helpers/get-config-data.d.ts +10 -0
  18. package/app/helpers/get-global.d.ts +3 -0
  19. package/app/helpers/get-lang.d.ts +2 -0
  20. package/app/helpers/index.d.ts +17 -0
  21. package/app/helpers/is-browser.d.ts +1 -0
  22. package/app/helpers/is-object.d.ts +1 -0
  23. package/app/helpers/is-string.d.ts +1 -0
  24. package/app/helpers/notificate-request-error.d.ts +1 -0
  25. package/app/helpers/parent-url.d.ts +1 -0
  26. package/app/helpers/path-join.d.ts +1 -0
  27. package/app/helpers/safe-json.d.ts +1 -0
  28. package/app/helpers/send-request.d.ts +12 -0
  29. package/app/helpers/translite.d.ts +1 -0
  30. package/app/helpers/transport-props.d.ts +2 -0
  31. package/app/helpers/uuid.d.ts +1 -0
  32. package/app/index.d.ts +11 -0
  33. package/app/shim/custom-element.d.ts +0 -0
  34. package/app/shim/index.d.ts +1 -0
  35. package/app/transport/empty.d.ts +7 -0
  36. package/app/transport/index.d.ts +2 -0
  37. package/app/transport/interface.d.ts +21 -0
  38. package/app/transport/post-message.d.ts +12 -0
  39. package/app/transport/transport.d.ts +53 -0
  40. package/app/transport/websocket.d.ts +14 -0
  41. package/app/types/base.d.ts +33 -0
  42. package/app/types/config.d.ts +30 -0
  43. package/app/types/extension.d.ts +41 -0
  44. package/app/types/index.d.ts +8 -0
  45. package/app/types/setting.d.ts +58 -0
  46. package/app/types/state.d.ts +43 -0
  47. package/app/types/storage-element.d.ts +79 -0
  48. package/app/types/transport.d.ts +110 -0
  49. package/app/types/user.d.ts +32 -0
  50. package/index.d.ts +9 -0
  51. package/index.js +1 -0
  52. package/init.d.ts +3 -0
  53. package/nb-global.d.ts +9 -0
  54. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import { Api } from '../classes';
2
+ import { Extension, ExtensionFileMode, ExtensionType } from '../types';
3
+ import { RequestBaseParams, ResponseItem } from './types/base';
4
+ export interface RequestExtensionListParams extends RequestBaseParams {
5
+ file_name_ext?: string;
6
+ search?: string;
7
+ uniq_key?: string;
8
+ type?: ExtensionType[];
9
+ file_mode?: ExtensionFileMode[];
10
+ }
11
+ export declare class ExtensionApi extends Api {
12
+ list(): Promise<any>;
13
+ getByUniqKey(uniqKey: string): Promise<ResponseItem<Extension>>;
14
+ }
@@ -0,0 +1,5 @@
1
+ export * from './types/base';
2
+ export * from './static-api';
3
+ export * from './storage-api';
4
+ export * from './user-api';
5
+ export * from './extension-api';
@@ -0,0 +1,8 @@
1
+ import { Api } from '../classes/api';
2
+ import { StaticFile } from '../types/base';
3
+ export declare class StaticApi extends Api {
4
+ upload(file: Blob, name: string, filePath?: string): Promise<StaticFile>;
5
+ get(path: string): Promise<Response>;
6
+ delete(path: string): Promise<Response>;
7
+ makeApiPath(...arg: string[]): URL;
8
+ }
@@ -0,0 +1,117 @@
1
+ import { Api } from '../classes/api';
2
+ import { SpaceElement, StorageElement, StorageElementType } from '../types/storage-element';
3
+ import { RequestBaseParams, ResponseItem, ResponseList } from './types/base';
4
+ import { RequestStatus } from '../types';
5
+ export interface StorageRequestListParams extends RequestBaseParams {
6
+ path?: string;
7
+ search?: string;
8
+ is_favorite?: boolean;
9
+ is_divided?: boolean;
10
+ divide_id?: number | null;
11
+ min_size?: number | null;
12
+ max_size?: number | null;
13
+ type?: StorageElementType;
14
+ file_name_ext?: string[];
15
+ with_meta?: boolean;
16
+ meta_search?: string;
17
+ without_content_work_dir?: boolean;
18
+ /** spaces only */
19
+ parent_id?: string;
20
+ /** spaces only */
21
+ content_types?: string[];
22
+ /** spaces only */
23
+ is_search_dir?: boolean;
24
+ /** spaces only */
25
+ is_trash?: boolean;
26
+ }
27
+ export interface MakePathOption {
28
+ cache?: boolean;
29
+ imagePreview?: boolean;
30
+ }
31
+ export interface LiveReloadCacheInterface {
32
+ status: RequestStatus;
33
+ requests: {
34
+ path?: string;
35
+ body: any;
36
+ }[];
37
+ }
38
+ export interface StorageCreateConfig {
39
+ is_work_dir?: boolean;
40
+ created_by_extension?: string;
41
+ }
42
+ export interface ReplaceOption {
43
+ extSavedStartStopPropagation?: boolean;
44
+ extSavedEndStopPropagation?: boolean;
45
+ }
46
+ export declare class StorageApi extends Api {
47
+ /**
48
+ * Get list files
49
+ */
50
+ list(params: StorageRequestListParams): Promise<ResponseList<StorageElement | SpaceElement>>;
51
+ /**
52
+ * Get file model
53
+ */
54
+ info(path: string): Promise<StorageElement | SpaceElement>;
55
+ /**
56
+ * Create empty file
57
+ */
58
+ create(name: string, path: string, type: 'dir' | 'file', config?: StorageCreateConfig): Promise<ResponseItem<StorageElement> | SpaceElement>;
59
+ /**
60
+ * Delete file
61
+ */
62
+ delete(path: string, hard?: boolean): Promise<any>;
63
+ /**
64
+ * Returns the full path to download the file
65
+ */
66
+ makeDownloadPath(path?: string, options?: MakePathOption): string;
67
+ /**
68
+ * Returns the full path for the preview image
69
+ */
70
+ makeImagePreview(path?: string, options?: MakePathOption): string;
71
+ /**
72
+ * Submit a file download request
73
+ */
74
+ download(path?: string): Promise<Response>;
75
+ /**
76
+ * Submit a file change request
77
+ */
78
+ replace(body: any, path?: string, options?: ReplaceOption): Promise<ResponseItem<StorageElement> | SpaceElement>;
79
+ /**
80
+ * Synchronous writing to files
81
+ */
82
+ liveReplace(body: any, path?: string, finalize?: () => void, options?: ReplaceOption): void;
83
+ /**
84
+ * Upload file
85
+ */
86
+ upload(path: string, file: File, overwrite?: boolean): Promise<{
87
+ row: StorageElement;
88
+ } | SpaceElement>;
89
+ /**
90
+ * Upload file by net url
91
+ */
92
+ uploadNet(path: string, url: string, overwrite?: boolean): Promise<StorageElement | SpaceElement>;
93
+ /**
94
+ * Create metadata extension
95
+ */
96
+ createMeta(name?: string, path?: string, config?: StorageCreateConfig): Promise<ResponseItem<StorageElement> | SpaceElement>;
97
+ /**
98
+ * Reading metadata extension
99
+ */
100
+ readMeta(path?: string): Promise<any>;
101
+ /**
102
+ * Saving metadata extension
103
+ */
104
+ saveMeta(body: any, path?: string): Promise<any>;
105
+ /**
106
+ * Relative path (where the editor is called from)
107
+ */
108
+ relativePath(path?: string, defaultPath?: string): string;
109
+ /**
110
+ * Returns a valid URL to the API (storage or fca)
111
+ */
112
+ makeApiPath(...arg: string[]): URL;
113
+ /**
114
+ * Returns the name for the extension meta file (taken from extenstion.name.ru)
115
+ */
116
+ get metaName(): string;
117
+ }
@@ -0,0 +1,22 @@
1
+ import { PermissionType } from '../../types/base';
2
+ export declare enum OrderDirection {
3
+ DEFAULT = "",
4
+ ASC = "asc",
5
+ DESC = "desc"
6
+ }
7
+ export interface RequestBaseParams {
8
+ offset?: number;
9
+ limit: number;
10
+ order_by?: string;
11
+ order_direction?: OrderDirection;
12
+ }
13
+ export interface ResponseItem<T> {
14
+ row: T;
15
+ }
16
+ export interface ResponseList<T> {
17
+ rows: T[];
18
+ total: number;
19
+ current?: {
20
+ access_mode: PermissionType;
21
+ };
22
+ }
@@ -0,0 +1,107 @@
1
+ import { Api } from '../classes/api';
2
+ import { User } from '../types';
3
+ import { RequestBaseParams, ResponseItem, ResponseList } from './types/base';
4
+ export interface RequestUserListParams extends RequestBaseParams {
5
+ id?: number[];
6
+ first_name?: string;
7
+ middle_name?: string;
8
+ last_name?: string;
9
+ email?: string;
10
+ login?: string;
11
+ search_field?: string;
12
+ with_me?: boolean;
13
+ }
14
+ export type UpdateUserParams = Pick<User, 'first_name' | 'last_name' | 'middle_name' | 'email' | 'home_path' | 'id' | 'role_id'>;
15
+ export type CreateUserParams = Pick<User, 'first_name' | 'last_name' | 'middle_name' | 'email' | 'home_path' | 'password' | 'role_id'>;
16
+ export interface UserToken {
17
+ id: number;
18
+ name: string;
19
+ expire_in: string;
20
+ create_date: string;
21
+ token?: string;
22
+ }
23
+ export interface UserSession {
24
+ create_date: string;
25
+ expire_in: string;
26
+ ip: string;
27
+ user_agent: string;
28
+ id: number;
29
+ }
30
+ export declare class UserApi extends Api {
31
+ /**
32
+ * Logout from the system
33
+ */
34
+ logout(): Promise<void>;
35
+ /**
36
+ * Get user data by his id
37
+ */
38
+ get(id: number): Promise<User>;
39
+ /**
40
+ * List users
41
+ */
42
+ list(params: RequestUserListParams): Promise<ResponseList<User>>;
43
+ /**
44
+ * Return deleted user
45
+ */
46
+ restore(id: number): Promise<void>;
47
+ /**
48
+ * Delete user
49
+ */
50
+ delete(id: number, params?: {
51
+ hard: boolean;
52
+ }): Promise<void>;
53
+ /**
54
+ * Update user details
55
+ */
56
+ update(data: UpdateUserParams): Promise<ResponseItem<User>>;
57
+ /**
58
+ * Create a new user
59
+ */
60
+ create(data: CreateUserParams): Promise<ResponseItem<User>>;
61
+ /**
62
+ * Create an API token
63
+ */
64
+ createToken(data: {
65
+ name: string;
66
+ expire_in: string | null;
67
+ }): Promise<UserToken>;
68
+ /**
69
+ * Get list of users
70
+ */
71
+ listToken(params: RequestBaseParams): Promise<ResponseList<UserToken>>;
72
+ /**
73
+ * Delete token
74
+ */
75
+ deleteToken(id: number): Promise<void>;
76
+ /**
77
+ * Change password
78
+ */
79
+ changePassword(data: {
80
+ new_password: string;
81
+ old_password: string;
82
+ }): Promise<{
83
+ success: boolean;
84
+ }>;
85
+ /**
86
+ * Get information about yourself
87
+ */
88
+ me(): Promise<ResponseItem<User>>;
89
+ /**
90
+ * Upload avatar
91
+ */
92
+ meUploadAvatar(file: Blob, fileName: string): Promise<{
93
+ file_path: string;
94
+ }>;
95
+ /**
96
+ * Delete avatar
97
+ */
98
+ meDeleteAvatar(): Promise<void>;
99
+ /**
100
+ * Get a list of active sessions
101
+ */
102
+ meListSession(params: RequestBaseParams): Promise<ResponseList<UserSession>>;
103
+ /**
104
+ * Delete session by id or all
105
+ */
106
+ meDeleteSession(id?: number): Promise<void>;
107
+ }
@@ -0,0 +1,19 @@
1
+ import { AppState } from '../types/state';
2
+ export declare class Api {
3
+ state: AppState;
4
+ constructor(state?: AppState);
5
+ rest: {
6
+ get: (path: string, params?: Record<string, any>, headers?: Record<string, string>) => Promise<any>;
7
+ post: (path: string, body?: BodyInit | null, headers?: Record<string, string>) => Promise<any>;
8
+ put: (path: string, body?: BodyInit | null, headers?: Record<string, string>) => Promise<any>;
9
+ delete: (path: string, params?: Record<string, any>, headers?: Record<string, string>) => Promise<any>;
10
+ };
11
+ changeState(state: AppState): void;
12
+ makeSearchParams(params?: Record<string, any>): string;
13
+ makeHeaders(headers?: Record<string, string>): Record<string, string>;
14
+ responseJSON(response: Response): Promise<any | Response>;
15
+ /**
16
+ * @deprecated
17
+ */
18
+ makeApiPath(...arg: string[]): URL;
19
+ }
@@ -0,0 +1,9 @@
1
+ export type EventHandler = (...args: any) => void;
2
+ export declare class EventEmitter {
3
+ _handlers: Map<string, Set<EventHandler>>;
4
+ _globalHandlers: Set<EventHandler>;
5
+ listen(handler: EventHandler): void;
6
+ on(event: string, handler: EventHandler): void;
7
+ off(event: string, handler: EventHandler): void;
8
+ emit(event: string, ...args: any): void;
9
+ }
@@ -0,0 +1,37 @@
1
+ import { ResponseItem, StorageCreateConfig } from '../api';
2
+ import { AppState, SpaceElement, StorageElement } from '../types';
3
+ import { Api } from './api';
4
+ declare const VERSION: unique symbol;
5
+ declare const CONFIG: unique symbol;
6
+ declare const API: unique symbol;
7
+ declare const UPGRADE: unique symbol;
8
+ export type MigrateHandler = (data: any) => any;
9
+ export interface FileEngineConfig {
10
+ name?: string;
11
+ path?: string;
12
+ /** spaces only — id of the existing file this engine manages */
13
+ file_id?: string;
14
+ }
15
+ export declare class FileEngine<T> extends Api {
16
+ private [API]?;
17
+ private [CONFIG]?;
18
+ private [VERSION];
19
+ private [UPGRADE];
20
+ constructor(version: number, config?: FileEngineConfig, state?: AppState);
21
+ get name(): string;
22
+ get path(): string;
23
+ /** spaces only — id of the existing file this engine manages */
24
+ get file_id(): string;
25
+ get fullName(): string;
26
+ get version(): number;
27
+ changeState(state: AppState): void;
28
+ migration(version: number, upgrade: MigrateHandler): void;
29
+ info(): Promise<StorageElement | SpaceElement>;
30
+ download(): Promise<T>;
31
+ create(body: T, config?: StorageCreateConfig): Promise<SpaceElement | ResponseItem<StorageElement>>;
32
+ delete(hard?: boolean): Promise<null>;
33
+ replace(body: T): Promise<ResponseItem<StorageElement> | SpaceElement>;
34
+ liveReplace(body: any, finalize?: () => void): void;
35
+ private runMigrate;
36
+ }
37
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './api';
2
+ export * from './file-engine';
3
+ export * from './event-emitter';
@@ -0,0 +1 @@
1
+ export * from './nb-frame';
@@ -0,0 +1,22 @@
1
+ import { EventHandler } from '../classes';
2
+ import { NBTransport, TransportParams } from '../transport';
3
+ import { Extension, StorageRouteData, TransportEvent, TransportPayload, TransportPayloadNavigate, User, ViewState } from '../types';
4
+ export declare const defineNbFrameComponent: () => void;
5
+ export interface NbFrameComponent extends HTMLElement {
6
+ apiPrefix: string;
7
+ origin: string;
8
+ version: number;
9
+ view: ViewState;
10
+ debug: boolean;
11
+ uuid: string;
12
+ run(): NBTransport;
13
+ send(event: TransportEvent, payload?: TransportPayload): void;
14
+ listen(handler: EventHandler): void;
15
+ off(event: TransportEvent, handler: EventHandler): void;
16
+ on(event: TransportEvent, handler: EventHandler): void;
17
+ set extensionModel(model: Pick<Extension, 'id' | 'name' | 'type' | 'settings' | 'file' | 'work_dir' | 'app' | 'devlocal' | 'path'>);
18
+ set transportParams(params: TransportParams);
19
+ set routeData(routeData: StorageRouteData);
20
+ set user(user: User);
21
+ set nvigationState(state: TransportPayloadNavigate);
22
+ }
@@ -0,0 +1,2 @@
1
+ import { TransportPayloadNavigate } from '../types';
2
+ export declare function browserNavigate(params: TransportPayloadNavigate): void;
@@ -0,0 +1,2 @@
1
+ import { AppState } from '../types';
2
+ export declare const defaultState: () => AppState;
@@ -0,0 +1 @@
1
+ export declare function dirname(path: string): string;
@@ -0,0 +1,2 @@
1
+ import { FileInfo } from '../types/base';
2
+ export declare function fileInfo(path: string): FileInfo;
@@ -0,0 +1,10 @@
1
+ import { ExtensionType, Lang } from '../types';
2
+ import { AppConfig } from '../types/config';
3
+ export interface ConfigData {
4
+ type: ExtensionType;
5
+ index: string;
6
+ icon: string;
7
+ pictogram: string;
8
+ name: Lang;
9
+ }
10
+ export declare function getConfigData(config: AppConfig): ConfigData;
@@ -0,0 +1,3 @@
1
+ export declare const getGlobal: () => {
2
+ [key: string]: any;
3
+ };
@@ -0,0 +1,2 @@
1
+ import { Lang } from '../types/base';
2
+ export declare function getLang(lang: Lang, locale?: string): string;
@@ -0,0 +1,17 @@
1
+ export * from './dirname';
2
+ export * from './file-info';
3
+ export * from './get-lang';
4
+ export * from './parent-url';
5
+ export * from './path-join';
6
+ export * from './send-request';
7
+ export * from './translite';
8
+ export * from './get-global';
9
+ export * from './is-browser';
10
+ export * from './is-object';
11
+ export * from './is-string';
12
+ export * from './notificate-request-error';
13
+ export * from './safe-json';
14
+ export * from './get-config-data';
15
+ export * from './transport-props';
16
+ export * from './browser-navigate';
17
+ export * from './default-state';
@@ -0,0 +1 @@
1
+ export declare function isBrowser(): boolean;
@@ -0,0 +1 @@
1
+ export declare function isObject(obj: any): boolean;
@@ -0,0 +1 @@
1
+ export declare function isString(value: any): boolean;
@@ -0,0 +1 @@
1
+ export declare function notificateRequestError(status: number, message: string, code?: string): void;
@@ -0,0 +1 @@
1
+ export declare function parentURL(): URL;
@@ -0,0 +1 @@
1
+ export declare function pathJoin(...args: string[]): any;
@@ -0,0 +1 @@
1
+ export declare function safeJson<T>(value: string, defaultValue?: T): any;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @deprecated
3
+ */
4
+ export declare function sendRequest(input: string | URL, init?: RequestInit): Promise<Response>;
5
+ export declare function sendRequest2(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, options: {
6
+ prefix?: string;
7
+ host?: string;
8
+ body?: BodyInit | null;
9
+ headers?: Record<string, string>;
10
+ params?: Record<string, any>;
11
+ cache?: 'no-cache';
12
+ }): Promise<Response>;
@@ -0,0 +1 @@
1
+ export declare function translite(value: string): string;
@@ -0,0 +1,2 @@
1
+ import { TransportParams } from '../transport/interface';
2
+ export declare const transportProps: () => TransportParams | Record<string, any>;
@@ -0,0 +1 @@
1
+ export declare function uuid(): string;
package/app/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from './classes/event-emitter';
2
+ import { AppState } from './types/state';
3
+ export declare class NextBox extends EventEmitter {
4
+ state?: AppState;
5
+ private userEventHandlers;
6
+ init(handler?: (state: AppState) => void): void;
7
+ destroy(): void;
8
+ prepareNavigate(): void;
9
+ private attachUserEvents;
10
+ private detachUserEvents;
11
+ }
File without changes
@@ -0,0 +1 @@
1
+ import './custom-element';
@@ -0,0 +1,7 @@
1
+ import { TransportEvent } from '../types';
2
+ import { TransportEngineInterface } from './interface';
3
+ export declare class TransportEmpty implements TransportEngineInterface {
4
+ send(event: TransportEvent, payload?: any): void;
5
+ subscribe(handler: (event: TransportEvent, ppayload: any, uuid?: string) => void): void;
6
+ destroy(): void;
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './interface';
2
+ export * from './transport';
@@ -0,0 +1,21 @@
1
+ import { TransportEvent, TransportPayload } from '../types/transport';
2
+ import { EngineType } from './transport';
3
+ export type TransportSubscribeHandler = (event: TransportEvent, ppayload: TransportPayload, uuid?: string, instanceUid?: string) => void;
4
+ export interface TransportEngineInterface {
5
+ send(event: TransportEvent | string, payload?: TransportPayload, uuid?: string, instanceUid?: string): void;
6
+ subscribe(handler: TransportSubscribeHandler): void;
7
+ destroy(): void;
8
+ }
9
+ export interface TransportParams {
10
+ version?: number;
11
+ uuid?: string;
12
+ engine?: EngineType;
13
+ path?: string;
14
+ parent?: WindowProxy | null;
15
+ host?: string;
16
+ port?: number;
17
+ debug?: boolean;
18
+ }
19
+ export interface TransportParentHandlersInterface {
20
+ updateToken?: () => Promise<any>;
21
+ }
@@ -0,0 +1,12 @@
1
+ import { TransportEvent } from '../types/transport';
2
+ import { TransportEngineInterface, TransportParams, TransportSubscribeHandler } from './interface';
3
+ export declare class TransportPostMessage implements TransportEngineInterface {
4
+ private handler?;
5
+ private _parems?;
6
+ private get parent();
7
+ constructor(params?: TransportParams);
8
+ private listenHandler;
9
+ send(event: TransportEvent | string, payload?: any, uuid?: string, instanceUid?: string): void;
10
+ subscribe(handler: TransportSubscribeHandler): void;
11
+ destroy(): void;
12
+ }
@@ -0,0 +1,53 @@
1
+ import { CallNameEvent, TransportCall, TransportEvent, TransportNavigationTarget, TransportPayload, TransportPayloadConfirm, TransportPayloadContextItem, TransportPayloadContextTab, TransportPayloadModalFilesSelect, TransportPayloadNavigate, TransportPayloadSaved, TransportPayloadSpinner, TransportPayloadToast } from '../types/transport';
2
+ import { EventEmitter } from '../classes/event-emitter';
3
+ import { TransportParams, TransportParentHandlersInterface } from './interface';
4
+ export declare enum EngineType {
5
+ WebSocket = "websocket",
6
+ PostMessage = "postmessage",
7
+ Empty = ""
8
+ }
9
+ export declare const TransportParentHandlers: TransportParentHandlersInterface;
10
+ export declare class NBTransport extends EventEmitter {
11
+ private engine;
12
+ private _params?;
13
+ private instanceUid;
14
+ engineType: EngineType;
15
+ constructor(params?: TransportParams);
16
+ call(name: CallNameEvent | any, ...params: any): Promise<TransportCall['params']>;
17
+ send(event: TransportEvent | string, payload?: TransportPayload, uuid?: string): void;
18
+ subscribe(): void;
19
+ destroy(): void;
20
+ /**
21
+ * Sends a transport call response indicating the version save is resolved.
22
+ *
23
+ * This function sends a response event with the provided transport call's ID, name,
24
+ * and a status indicating the call has been resolved.
25
+ *
26
+ * @param {Object} transportCall - The transport call object.
27
+ */
28
+ forceSaveVersion({ id, name }: TransportCall): void;
29
+ /**
30
+ * Submit a content change message
31
+ * In the case when content is written before exiting the application or when writing large files
32
+ */
33
+ changeContent(state: boolean): void;
34
+ /**
35
+ * Navigate parent window (only app extension)
36
+ */
37
+ navigate(path: TransportPayloadNavigate['path'], queryParams?: TransportPayloadNavigate['queryParams'], target?: TransportNavigationTarget): void;
38
+ /**
39
+ * Send an event to close the editor
40
+ */
41
+ close(): void;
42
+ rejectClose(): void;
43
+ showAccessPanel(): void;
44
+ openModalFilesSelect(state: TransportPayloadModalFilesSelect): void;
45
+ openModalConfirm(state: TransportPayloadConfirm): void;
46
+ toast(state: TransportPayloadToast): void;
47
+ savedStart(state: TransportPayloadSaved): void;
48
+ savedEnd(state: TransportPayloadSaved): void;
49
+ setSpinnerStatus(state: TransportPayloadSpinner): void;
50
+ setContext(state: TransportPayloadContextItem[]): void;
51
+ setTabs(state: TransportPayloadContextTab[]): void;
52
+ }
53
+ export declare const Transport: NBTransport;
@@ -0,0 +1,14 @@
1
+ import { TransportEvent } from '../types/transport';
2
+ import { TransportEngineInterface, TransportSubscribeHandler } from './interface';
3
+ import { TransportParams } from './interface';
4
+ declare const SOCKET: unique symbol;
5
+ export declare class TransportWebsocket implements TransportEngineInterface {
6
+ _params?: TransportParams;
7
+ private [SOCKET]?;
8
+ constructor(params?: TransportParams);
9
+ init(params?: TransportParams): void;
10
+ send(event: TransportEvent | string, payload?: any, uuid?: string, instanceUid?: string): void;
11
+ subscribe(handler: TransportSubscribeHandler): void;
12
+ destroy(): void;
13
+ }
14
+ export {};
@@ -0,0 +1,33 @@
1
+ export type Lang = {
2
+ [key: string]: string;
3
+ };
4
+ export interface FileInfo {
5
+ base: string;
6
+ dir: string;
7
+ ext: string;
8
+ name: string;
9
+ root: string;
10
+ }
11
+ export declare enum ExtensionType {
12
+ App = "app",
13
+ File = "file",
14
+ WorkDir = "work_dir"
15
+ }
16
+ export declare enum ExtensionFileMode {
17
+ Read = "read",
18
+ Write = "write",
19
+ ReadAndWrite = "read_and_write"
20
+ }
21
+ export interface StaticFile {
22
+ file_path: string;
23
+ }
24
+ export declare enum PermissionType {
25
+ CLOSE = "",
26
+ READ = "r",
27
+ WRITE = "rw"
28
+ }
29
+ export declare enum RequestStatus {
30
+ Wait = 0,
31
+ Done = 1,
32
+ Reject = 2
33
+ }
@@ -0,0 +1,30 @@
1
+ import { ExtensionFileMode, ExtensionType, Lang } from './base';
2
+ export interface AppConfig {
3
+ version: string;
4
+ uniq_key: string;
5
+ icon: string;
6
+ name: Lang;
7
+ description: Lang;
8
+ type: ExtensionType;
9
+ file?: {
10
+ mode: ExtensionFileMode;
11
+ ext: string[];
12
+ index: string;
13
+ };
14
+ app?: {
15
+ menu: {
16
+ index: string;
17
+ icon: string;
18
+ label: {
19
+ [key: string]: string;
20
+ };
21
+ };
22
+ };
23
+ work_dir?: {
24
+ index: string;
25
+ };
26
+ change_log?: {
27
+ version: string;
28
+ comment: Lang;
29
+ }[];
30
+ }
@@ -0,0 +1,41 @@
1
+ import { EngineType } from '../transport';
2
+ import { ExtensionFileMode, ExtensionType, Lang } from './base';
3
+ import { Setting, SettingValue } from './setting';
4
+ export interface Extension {
5
+ id: number;
6
+ create_date: string;
7
+ update_date: string;
8
+ with_settings?: boolean;
9
+ name: Lang;
10
+ devlocal?: boolean;
11
+ dev_frame_params?: {
12
+ engine: EngineType;
13
+ host?: string;
14
+ port?: number;
15
+ };
16
+ version: string;
17
+ latest_repo_version?: string;
18
+ description: Lang;
19
+ uniq_key: string;
20
+ icon: string;
21
+ type: ExtensionType;
22
+ path: string;
23
+ file?: {
24
+ mode: ExtensionFileMode;
25
+ ext: string[];
26
+ default_ext?: string;
27
+ index: string;
28
+ };
29
+ app?: {
30
+ menu: {
31
+ index: string;
32
+ icon: string;
33
+ label: Lang;
34
+ };
35
+ };
36
+ work_dir?: {
37
+ index: string;
38
+ };
39
+ settings?: SettingValue[];
40
+ settings_template?: Setting[];
41
+ }
@@ -0,0 +1,8 @@
1
+ export * from './base';
2
+ export * from './state';
3
+ export * from './storage-element';
4
+ export * from './transport';
5
+ export * from './config';
6
+ export * from './user';
7
+ export * from './setting';
8
+ export * from './extension';
@@ -0,0 +1,58 @@
1
+ import { Lang } from './base';
2
+ export type SettingLang = string | Lang | null;
3
+ export declare enum SettingControlType {
4
+ Text = "text",
5
+ String = "string",
6
+ Number = "number",
7
+ CheckBox = "checkbox",
8
+ Select = "select",
9
+ RadioList = "radio_list",
10
+ ConnectionChoose = "connection_choose",
11
+ MultiConnectionChoose = "multi_connection_choose"
12
+ }
13
+ export interface Setting {
14
+ fields: SettingField[];
15
+ title?: SettingLang;
16
+ name?: string;
17
+ context?: string;
18
+ toggle_box?: boolean;
19
+ collapsed_box?: boolean;
20
+ activity_switch?: boolean;
21
+ }
22
+ export interface SettingVariant {
23
+ label?: SettingLang;
24
+ value: any;
25
+ }
26
+ export interface SettingField {
27
+ name: string;
28
+ value: any;
29
+ label?: SettingLang;
30
+ help?: SettingLang;
31
+ placeholder?: SettingLang;
32
+ view?: SettingFieldView;
33
+ disabled?: boolean;
34
+ control: {
35
+ type: SettingControlType;
36
+ filter?: Record<string, any>;
37
+ variants?: SettingVariant[];
38
+ };
39
+ }
40
+ export type SettingFieldView = SettingViewConnectionChoose | SettingViewSelect | any;
41
+ export interface SettingViewConnectionChoose {
42
+ id: number;
43
+ name: string;
44
+ owner_id: number;
45
+ }
46
+ export interface SettingViewSelect {
47
+ show_clear?: boolean;
48
+ }
49
+ export interface SettingValueField {
50
+ name: string;
51
+ value: any;
52
+ }
53
+ export interface SettingValue {
54
+ name: string;
55
+ context?: string;
56
+ fields: SettingValueField[];
57
+ activity_switch?: boolean;
58
+ }
@@ -0,0 +1,43 @@
1
+ import { ExtensionType, FileInfo, Lang } from './base';
2
+ import { SettingValue } from './setting';
3
+ import { StorageRoot } from './storage-element';
4
+ import { TransportPayloadNavigate } from './transport';
5
+ import { User } from './user';
6
+ export declare enum ViewState {
7
+ view = "view",
8
+ edit = "edit"
9
+ }
10
+ export interface AppState {
11
+ extenstion: AppStateExtenstion;
12
+ api: AppStateApi;
13
+ user?: User;
14
+ debug: boolean;
15
+ view: ViewState;
16
+ storage: AppStateStorage;
17
+ initialNavigation?: TransportPayloadNavigate;
18
+ setting?: SettingValue[];
19
+ }
20
+ export interface AppStateExtenstion {
21
+ id: number;
22
+ name: Lang;
23
+ type: ExtensionType;
24
+ }
25
+ export interface AppStateApi {
26
+ host: string;
27
+ prefix: string;
28
+ headers: {
29
+ [key: string]: any;
30
+ };
31
+ query: {
32
+ [key: string]: any;
33
+ };
34
+ }
35
+ export interface AppStateStorage {
36
+ rootID: number;
37
+ root: StorageRoot;
38
+ info: FileInfo;
39
+ shareKey?: string;
40
+ path?: string;
41
+ file_id?: string;
42
+ zip_entry_path?: string;
43
+ }
@@ -0,0 +1,79 @@
1
+ import { PermissionType } from './base';
2
+ export declare enum StorageRoot {
3
+ my = "my",
4
+ fca = "fca",
5
+ divide = "divide",
6
+ share = "share",
7
+ favorite = "favorite",
8
+ trash = "trash",
9
+ spaces = "spaces"
10
+ }
11
+ export interface StorageElement {
12
+ id: string;
13
+ name: string;
14
+ size: number;
15
+ shared: boolean;
16
+ full_path: string;
17
+ path: string;
18
+ type: StorageElementType;
19
+ file_name_ext: string;
20
+ content_type: StorageElementContentType;
21
+ update_date: string;
22
+ create_date: string;
23
+ with_preview: boolean;
24
+ is_favorite: boolean;
25
+ owner_id: number;
26
+ version?: StorageElementVersion;
27
+ divide_id?: number;
28
+ access_mode?: PermissionType;
29
+ to_user_group_id?: number;
30
+ created_by_extension?: string;
31
+ del_group_id?: number;
32
+ last_used_extension?: string;
33
+ }
34
+ /**
35
+ * Element returned by the spaces API (https://dev.nextbox.ptnl.moscow/api/proxy/spaces/api/v1/swagger).
36
+ * Comes back as a plain object, without the ResponseItem `{ row: ... }` wrapper.
37
+ */
38
+ export type SpaceElement = Pick<StorageElement, 'access_mode' | 'content_type' | 'create_date' | 'created_by_extension' | 'del_group_id' | 'file_name_ext' | 'last_used_extension' | 'name' | 'size' | 'type' | 'update_date' | 'with_preview' | 'id'> & {
39
+ created_by: number;
40
+ parent_id: number;
41
+ space_id: number;
42
+ updated_by: number;
43
+ };
44
+ export interface StorageElementVersion {
45
+ id: string;
46
+ name: string | null;
47
+ size: number;
48
+ create_date: string;
49
+ update_date: string;
50
+ }
51
+ export declare enum StorageElementType {
52
+ Dir = "dir",
53
+ File = "file",
54
+ WorkDir = "work_dir"
55
+ }
56
+ export declare enum StorageElementContentType {
57
+ Any = "any",
58
+ Dir = "dir",
59
+ Code = "code",
60
+ Image = "image",
61
+ Audio = "audio",
62
+ Video = "video",
63
+ Text = "text",
64
+ Doc = "doc",
65
+ Xls = "xls",
66
+ Ppt = "ppt"
67
+ }
68
+ export interface StorageRouteData {
69
+ path: string;
70
+ root: StorageRoot;
71
+ rootId: number;
72
+ divideDir?: string;
73
+ share_token?: string;
74
+ share_password?: string;
75
+ share_back?: boolean;
76
+ dash_back?: boolean;
77
+ access_mode?: PermissionType;
78
+ file_version_id?: string;
79
+ }
@@ -0,0 +1,110 @@
1
+ import { ReplaceOption } from '../api';
2
+ import { AppState } from './state';
3
+ import { StorageElementType, StorageRoot } from './storage-element';
4
+ export interface TransportData {
5
+ event: TransportEvent;
6
+ payload?: TransportPayload;
7
+ }
8
+ export declare enum TransportEvent {
9
+ Call = "call",
10
+ CallResponse = "call-response",
11
+ ExtInit = "ext-init",
12
+ ExtChangeContent = "ext-change-content",
13
+ ExtOpenModalFilesSelect = "ext-open-modal-files-select",
14
+ ExtShowConfirm = "ext-show-confirm",
15
+ ExtShowAccessPanel = "ext-show-access-panel",
16
+ ExtNavigateTo = "ext-navigate-to",
17
+ ExtRequestError = "ext-request-error",
18
+ ExtToast = "ext-toast",
19
+ ExtSpinner = "ext-spinner",
20
+ ExtContext = "ext-context",
21
+ ExtTabs = "ext-tabs",
22
+ ExtSavedStart = "ext-saved-start",
23
+ ExtSavedEnd = "ext-saved-end",
24
+ ExtSavedError = "ext-saved-error",
25
+ ExtClose = "ext-close",
26
+ ExtRejectClose = "ext-reject-close",
27
+ ExtUserInteraction = "ext-user-interaction",
28
+ AppReload = "ext-reload",
29
+ AppReady = "app-ready",
30
+ AppChangeState = "app-change-state",
31
+ AppSaveAndClose = "app-save-and-close",
32
+ AppFilesSelected = "app-files-selected",
33
+ AppConfirmAccept = "app-confirm-accept",
34
+ AppConfirmReject = "app-confirm-reject",
35
+ AppContextAction = "app-context-action",
36
+ AppTabAction = "app-tab-action",
37
+ AppChangeTheme = "app-change-theme"
38
+ }
39
+ export declare enum CallNameEvent {
40
+ Update = "update",
41
+ ForceSave = "force-save-version"
42
+ }
43
+ export type TransportPayload = AppState | TransportPayloadSelectedFiles | TransportPayloadModalFilesSelect | TransportPayloadConfirm | TransportPayloadNavigate | TransportPayloadToast | TransportPayloadSpinner | TransportPayloadContextItem[] | TransportPayloadContextTab[] | TransportCall | any;
44
+ export declare enum TransportNavigationTarget {
45
+ Parent = "_parent",
46
+ Self = "_self",
47
+ Cache = "_cache"
48
+ }
49
+ export declare enum TransportCallEvent {
50
+ Call = "call",
51
+ Resolve = "resolve",
52
+ Reject = "reject"
53
+ }
54
+ export interface TransportCall {
55
+ id: string;
56
+ name: CallNameEvent | any;
57
+ params: any[];
58
+ event: TransportCallEvent;
59
+ }
60
+ export interface TransportPayloadNavigate {
61
+ path: string;
62
+ queryParams?: Record<string, string | boolean | number | null>;
63
+ target?: TransportNavigationTarget;
64
+ }
65
+ export interface TransportPayloadConfirm {
66
+ header: string;
67
+ message: string;
68
+ acceptButtonLabel?: string;
69
+ rejectButtonLabel?: string;
70
+ }
71
+ export interface TransportPayloadModalFilesSelect {
72
+ multy?: boolean;
73
+ title?: string;
74
+ path?: string;
75
+ ext?: string[];
76
+ type?: StorageElementType;
77
+ }
78
+ export interface TransportPayloadSelectedFiles {
79
+ root: StorageRoot;
80
+ rootId?: number;
81
+ paths: string[];
82
+ }
83
+ export interface TransportPayloadToast {
84
+ severity: 'success' | 'info' | 'warn' | 'error';
85
+ title: string;
86
+ message?: string;
87
+ sticky?: boolean;
88
+ }
89
+ export interface TransportPayloadSpinner {
90
+ state: boolean;
91
+ size?: number;
92
+ color?: string;
93
+ }
94
+ export interface TransportPayloadContextItem {
95
+ icon?: string;
96
+ iconPath?: string;
97
+ label: string;
98
+ action: string | number;
99
+ }
100
+ export interface TransportPayloadContextTab {
101
+ label: string;
102
+ active?: boolean;
103
+ disabled?: boolean;
104
+ action: string | number;
105
+ }
106
+ export interface TransportPayloadSaved {
107
+ path: string;
108
+ status?: number;
109
+ options?: ReplaceOption;
110
+ }
@@ -0,0 +1,32 @@
1
+ export declare enum UserStatus {
2
+ Registering = "registering",
3
+ Activated = "activated",
4
+ Blocked = "blocked",
5
+ BlockedByLicense = "blocked_by_license"
6
+ }
7
+ export declare enum UserType {
8
+ User = "user",
9
+ Guest = "guest"
10
+ }
11
+ export declare enum UserAuthType {
12
+ Native = "native",
13
+ Ldap = "ldap"
14
+ }
15
+ export interface User {
16
+ id: number;
17
+ create_date: string;
18
+ update_date: string;
19
+ last_login_date: string;
20
+ login: string;
21
+ password: string;
22
+ first_name: string;
23
+ middle_name: string;
24
+ last_name: string;
25
+ email: string;
26
+ auth_type: UserAuthType;
27
+ avatar_path: string;
28
+ home_path: string;
29
+ status: UserStatus;
30
+ type: UserType;
31
+ role_id: number | null;
32
+ }
package/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import './app/shim';
2
+ import './nb-global';
3
+ export * from './app';
4
+ export * from './app/types';
5
+ export * from './app/transport';
6
+ export * from './app/helpers';
7
+ export * from './app/classes';
8
+ export * from './app/api';
9
+ export * from './app/components';
package/index.js ADDED
@@ -0,0 +1 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["next-box"]=t():e["next-box"]=t()}(globalThis,()=>(()=>{"use strict";var e={146:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},147:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtensionApi=void 0;const s=r(915),n="/static/extensions";class a extends s.Api{list(){return this.rest.get(n)}getByUniqKey(e){return this.rest.get(`${n}/${e}`)}}t.ExtensionApi=a},475:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.fileInfo=void 0;const{sep:s}=r(7975),n=r(748);t.fileInfo=function(e){const t={root:"",dir:"",base:"",ext:"",name:""};if(0===(e=(0,n.pathJoin)(s,e)).length)return t;let r,a=e.charCodeAt(0);const o=47===a;o?(t.root=s,r=1):r=0;let i=-1,c=0,d=-1,h=!0,p=e.length-1,l=0;for(;p>=r;--p)if(a=e.charCodeAt(p),47!==a)-1===d&&(h=!1,d=p+1),46===a?-1===i?i=p:1!==l&&(l=1):-1!==i&&(l=-1);else if(!h){c=p+1;break}return-1===i||-1===d||0===l||1===l&&i===d-1&&i===c+1?-1!==d&&(t.base=t.name=0===c&&o?e.slice(1,d):e.slice(c,d)):(0===c&&o?(t.name=e.slice(1,i),t.base=e.slice(1,d)):(t.name=e.slice(c,i),t.base=e.slice(c,d)),t.ext=e.slice(i,d)),c>0?t.dir=e.slice(0,c-1):o&&(t.dir=s),t}},735:(e,t)=>{var r,s,n;Object.defineProperty(t,"__esModule",{value:!0}),t.UserAuthType=t.UserType=t.UserStatus=void 0,(n=t.UserStatus||(t.UserStatus={})).Registering="registering",n.Activated="activated",n.Blocked="blocked",n.BlockedByLicense="blocked_by_license",(s=t.UserType||(t.UserType={})).User="user",s.Guest="guest",(r=t.UserAuthType||(t.UserAuthType={})).Native="native",r.Ldap="ldap"},748:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.pathJoin=void 0;const{sep:s}=r(7975);t.pathJoin=function(...e){for(var t=[],r=0,n=e.length;r<n;r++)t=t.concat(e[r].split(s));var a=[];for(r=0,n=t.length;r<n;r++){var o=t[r];o&&"."!==o&&(".."===o?a.pop():a.push(o))}return""===t[0]&&a.unshift(""),a.join(s)||(a.length?s:".")}},915:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(7179),t),n(r(1152),t),n(r(6860),t)},1152:(e,t,r)=>{var s,n;Object.defineProperty(t,"__esModule",{value:!0}),t.FileEngine=void 0;const a=r(8843),o=r(6738),i=r(6371),c=r(4582),d=r(7179),h=Symbol("VERSION"),p=Symbol("CONFIG"),l=Symbol("API"),u=Symbol("UPGRADE");class f extends d.Api{constructor(e,t,r=(0,i.defaultState)()){super(r),this[s]=0,this[n]=new Map,this[h]=e,this[p]=t,this[l]=new a.StorageApi,this[l].changeState(r)}get name(){return this[p]?.name||""}get path(){return this[p]?.path||""}get file_id(){return this[p]?.file_id||""}get fullName(){return(0,o.pathJoin)(this.path,this.name)}get version(){return this[h]}changeState(e){super.changeState(e),this[l]?.changeState(e)}migration(e,t){if(this[u].has(e))throw`Upgrader migration version ${e} exist`;this[u].set(e,t)}info(){return this[l].info(this.state.storage.root===c.StorageRoot.spaces?this.file_id:this.fullName)}download(){return this[l].download().then(e=>parseInt(e.headers.get("content-length")||"")>0?e.json():"").then(e=>{let t=null,r=-1;return(0,o.isObject)(e)&&(t=e.body||e||null,r=e.version||-1),this.runMigrate(r,t)})}create(e,t){return this[l].create(this.name,this.path,"file",t).then(()=>this.replace(e))}delete(e){return this[l].delete(this.state.storage.root===c.StorageRoot.spaces?this.file_id:this.fullName,e)}replace(e){return this[l].replace({version:this.version,body:e})}liveReplace(e,t){return this[l].liveReplace(JSON.stringify({version:this.version,body:e}),this.state.storage.root===c.StorageRoot.spaces?this.file_id:this.path,t)}runMigrate(e,t){const r=Array.from(this[u].keys()).sort(),s=r[r.length-1]||0;return new Promise((n,a)=>{let o=t;e<s&&r.forEach(t=>{if(t>e){const e=this[u].get(t);e&&(o=e(o))}}),n(o)})}}t.FileEngine=f,s=h,n=u},1572:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.OrderDirection=void 0,(r=t.OrderDirection||(t.OrderDirection={})).DEFAULT="",r.ASC="asc",r.DESC="desc"},1910:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.dirname=void 0;const{sep:s}=r(7975),n=r(748);t.dirname=function(e){if(0===(e=(0,n.pathJoin)(s,e)).length)return".";let t=e.charCodeAt(0),r=47===t,a=-1,o=!0;for(var i=e.length-1;i>=1;--i)if(t=e.charCodeAt(i),47===t){if(!o){a=i;break}}else o=!1;return-1===a?r?s:".":r&&1===a?s+s:e.slice(0,a)}},2070:(e,t)=>{var r,s,n;Object.defineProperty(t,"__esModule",{value:!0}),t.StorageElementContentType=t.StorageElementType=t.StorageRoot=void 0,(n=t.StorageRoot||(t.StorageRoot={})).my="my",n.fca="fca",n.divide="divide",n.share="share",n.favorite="favorite",n.trash="trash",n.spaces="spaces",(s=t.StorageElementType||(t.StorageElementType={})).Dir="dir",s.File="file",s.WorkDir="work_dir",(r=t.StorageElementContentType||(t.StorageElementContentType={})).Any="any",r.Dir="dir",r.Code="code",r.Image="image",r.Audio="audio",r.Video="video",r.Text="text",r.Doc="doc",r.Xls="xls",r.Ppt="ppt"},2137:(e,t,r)=>{var s,n;Object.defineProperty(t,"__esModule",{value:!0}),t.defineNbFrameComponent=void 0;const a=r(915),o=r(6738),i=r(6555),c=r(6854),d=r(4582),h=Symbol("ROOT"),p=Symbol("FRAME"),l=Symbol("FRAME_CONFIG"),u=Symbol("TRANSPORT"),f=Symbol("EVENT_EMITTER");t.defineNbFrameComponent=()=>customElements.define("nb-frame",g);class g extends HTMLElement{constructor(){super(),this.apiPrefix="/api/v1",this.origin=window.location.origin,this.version=1,this.view=d.ViewState.view,this.debug=!1,this.uuid=(0,i.uuid)(),this[s]=new a.EventEmitter,this[n]={transportParams:{version:1,uuid:this.uuid}}}connectedCallback(){this[h]=this.attachShadow({mode:"open"})}disconnectedCallback(){this[u]?.destroy()}send(e,t){this[u]?.send(e,t)}listen(e){this[f].listen(e)}off(e,t){this[f].off(e,t)}on(e,t){this[f].on(e,t)}set extensionModel(e){const{type:t,file:r,work_dir:s,app:n,devlocal:a,path:o}=e;let i="";t===d.ExtensionType.File&&(i=r.index),t===d.ExtensionType.WorkDir&&(i=s.index),t===d.ExtensionType.App&&(i=n.menu.index),this[l].ext=e,this[l].extSrc=a?i:`${this.apiPrefix}/extensions/static/${o}/${i}`}set transportParams(e){this[l].transportParams={...this[l].transportParams,...e},this.uuid=this[l].transportParams.uuid||this.uuid}set routeData(e){this[l].routeData=e}set user(e){this[l].user=e}set nvigationState(e){this[l].navigationState=e}get transportParams(){return{...(0,o.transportProps)(),...this[l].transportParams}}get framePath(){const e=new URL(this[l].extSrc||"",location.origin);return this.transportParams.host&&(e.hostname=this.transportParams.host),this.transportParams.port&&(e.port=this.transportParams.port.toString()),e.toString()}run(){const e=document.createElement("iframe");e.setAttribute("allowfullscreen",""),e.name=JSON.stringify(this.transportParams),e.src=this.framePath;const t=this.resetTransport();return t.listen((e,t,r)=>{e===d.TransportEvent.ExtInit&&this.send(d.TransportEvent.AppReady,this.state)}),this[p]=e,this[h]&&(this[h].innerHTML=""),this[h]?.appendChild(this.frameStyle),this[h]?.appendChild(this[p]),t}get state(){const{ext:e,routeData:t,user:r,navigationState:s}=this[l],n=(0,o.fileInfo)(t?.path||"");e?.type===d.ExtensionType.WorkDir&&(n.dir=(0,o.pathJoin)(n.dir,n.base),n.base="",n.name="");const a={},i={};return t?.root===d.StorageRoot.divide&&(a.divide_id=Number(t.rootId),n.dir=(0,o.pathJoin)("/",t.path||""),t.divideDir||(n.dir="/")),t?.root===d.StorageRoot.fca&&(a.disk_id=Number(t.rootId)),t?.root===d.StorageRoot.share&&(a.share_token=t.share_token,i.Authorization=`Sharing ${t.share_token}`,t.share_password&&(a.share_pass=t.share_password),i.SharePass=t.share_password),{debug:!!this.debug,view:this.view,extenstion:{id:e?.id||0,name:e?.name||{ru:""},type:e?.type||d.ExtensionType.File},api:{host:this.origin,prefix:this.apiPrefix,headers:i,query:a},user:r,storage:{info:n,root:t?.root||d.StorageRoot.my,rootID:t?.rootId||0,path:t?.path||""},initialNavigation:s,setting:e?.settings}}resetTransport(){this[u]?.destroy();const e=new c.NBTransport(this.transportParams);return this[u]=e,this[u].subscribe(),this[u]}get frameStyle(){const e=document.createElement("style");return e.textContent="\n iframe {\n display: block;\n width: inherit;\n height: inherit;\n border: none;\n background: none;\n }\n ",e}}s=f,n=l,g.observedAttributes=["apiPrefix","origin","version","view","debug","uuid","navigationState","user"]},2392:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StaticApi=void 0;const s=r(7179),n=r(6418);class a extends s.Api{upload(e,t,r=""){const s=new FormData;return s.set("file",e,t),(0,n.sendRequest)(this.makeApiPath(r),{method:"POST",body:s}).then(e=>e.json())}get(e){return(0,n.sendRequest)(this.makeApiPath(e),{method:"GET"})}delete(e){return(0,n.sendRequest)(this.makeApiPath(e),{method:"DELETE"}).catch(e=>e)}makeApiPath(...e){return super.makeApiPath("static/files",...e)}}t.StaticApi=a},2636:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},2951:(e,t)=>{var r,s,n,a;Object.defineProperty(t,"__esModule",{value:!0}),t.TransportCallEvent=t.TransportNavigationTarget=t.CallNameEvent=t.TransportEvent=void 0,(a=t.TransportEvent||(t.TransportEvent={})).Call="call",a.CallResponse="call-response",a.ExtInit="ext-init",a.ExtChangeContent="ext-change-content",a.ExtOpenModalFilesSelect="ext-open-modal-files-select",a.ExtShowConfirm="ext-show-confirm",a.ExtShowAccessPanel="ext-show-access-panel",a.ExtNavigateTo="ext-navigate-to",a.ExtRequestError="ext-request-error",a.ExtToast="ext-toast",a.ExtSpinner="ext-spinner",a.ExtContext="ext-context",a.ExtTabs="ext-tabs",a.ExtSavedStart="ext-saved-start",a.ExtSavedEnd="ext-saved-end",a.ExtSavedError="ext-saved-error",a.ExtClose="ext-close",a.ExtRejectClose="ext-reject-close",a.ExtUserInteraction="ext-user-interaction",a.AppReload="ext-reload",a.AppReady="app-ready",a.AppChangeState="app-change-state",a.AppSaveAndClose="app-save-and-close",a.AppFilesSelected="app-files-selected",a.AppConfirmAccept="app-confirm-accept",a.AppConfirmReject="app-confirm-reject",a.AppContextAction="app-context-action",a.AppTabAction="app-tab-action",a.AppChangeTheme="app-change-theme",(n=t.CallNameEvent||(t.CallNameEvent={})).Update="update",n.ForceSave="force-save-version",(s=t.TransportNavigationTarget||(t.TransportNavigationTarget={})).Parent="_parent",s.Self="_self",s.Cache="_cache",(r=t.TransportCallEvent||(t.TransportCallEvent={})).Call="call",r.Resolve="resolve",r.Reject="reject"},3111:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Transport=t.NBTransport=t.TransportParentHandlers=t.EngineType=void 0;const s=r(2951),n=r(6860),a=r(3440),o=r(7232),i=r(7333),c=r(9995),d=r(6064),h=r(6738),p=r(6555);var l;!function(e){e.WebSocket="websocket",e.PostMessage="postmessage",e.Empty=""}(l=t.EngineType||(t.EngineType={}));const u=(0,d.transportProps)(),f=(0,o.getGlobal)();t.TransportParentHandlers={},f._nb_handlers=t.TransportParentHandlers;class g extends n.EventEmitter{constructor(e){super(),this.instanceUid=(0,p.uuid)(),this.engineType=l.Empty,this._params={...u,...e},this.engineType=this._params.engine||l.Empty,this.engine=new c.TransportEmpty,this.engineType===l.PostMessage&&(this.engine=new a.TransportPostMessage(this._params)),this.engineType===l.WebSocket&&(this.engine=new i.TransportWebsocket(this._params))}call(e,...t){return(this._params?.version||0)<2?Promise.resolve([]):new Promise((r,n)=>{const a=(0,p.uuid)(),o={id:a,name:e,params:t,event:s.TransportCallEvent.Call},i=t=>{t.id===a&&t.name===e&&(this.off(s.TransportEvent.CallResponse,i),t.event===s.TransportCallEvent.Reject?n(t.params):r(t.params))};this.send(s.TransportEvent.Call,o),this.on(s.TransportEvent.CallResponse,i)})}send(e,t,r){this._params?.debug&&console.log("transport.send",this._params,e,t,r),this.engine.send(e,t,r,this.instanceUid)}subscribe(){this.engine.subscribe((e,t,r,n)=>{if(e&&n!==this.instanceUid&&!((this._params?.version||0)>0&&r!==this._params?.uuid)){if(this._params?.debug&&console.log("transport.message",this._params,r,e,t),e===s.TransportEvent.Call){const{name:e}=t;e===s.CallNameEvent.ForceSave&&this.forceSaveVersion(t)}this.emit(e,t,r)}})}destroy(){this.engine.destroy()}forceSaveVersion({id:e,name:t}){this.send(s.TransportEvent.CallResponse,{id:e,name:t,event:s.TransportCallEvent.Resolve})}changeContent(e){t.Transport.send(s.TransportEvent.ExtChangeContent,e)}navigate(e,r,n=s.TransportNavigationTarget.Cache){const a={path:e,queryParams:r,target:n};t.Transport.send(s.TransportEvent.ExtNavigateTo,a),n===s.TransportNavigationTarget.Self&&(0,h.browserNavigate)(a)}close(){t.Transport.send(s.TransportEvent.ExtClose)}rejectClose(){t.Transport.send(s.TransportEvent.ExtRejectClose)}showAccessPanel(){t.Transport.send(s.TransportEvent.ExtShowAccessPanel)}openModalFilesSelect(e){t.Transport.send(s.TransportEvent.ExtOpenModalFilesSelect,e)}openModalConfirm(e){t.Transport.send(s.TransportEvent.ExtShowConfirm,e)}toast(e){t.Transport.send(s.TransportEvent.ExtToast,e)}savedStart(e){t.Transport.send(s.TransportEvent.ExtSavedStart,e)}savedEnd(e){t.Transport.send(s.TransportEvent.ExtSavedEnd,e)}setSpinnerStatus(e){t.Transport.send(s.TransportEvent.ExtSpinner,e)}setContext(e){t.Transport.send(s.TransportEvent.ExtContext,e)}setTabs(e){t.Transport.send(s.TransportEvent.ExtTabs,e)}}t.NBTransport=g,f._nb_transport instanceof g||(f._nb_transport=new g({}),f._nb_transport.subscribe()),t.Transport=f._nb_transport},3334:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.SettingControlType=void 0,(r=t.SettingControlType||(t.SettingControlType={})).Text="text",r.String="string",r.Number="number",r.CheckBox="checkbox",r.Select="select",r.RadioList="radio_list",r.ConnectionChoose="connection_choose",r.MultiConnectionChoose="multi_connection_choose"},3440:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TransportPostMessage=void 0;const s=r(6738);t.TransportPostMessage=class{get parent(){return this._parems?.parent?this._parems?.parent:parent||null}constructor(e){this.listenHandler=e=>{const t=e.data.event,r=e.data.uuid,n=e.data.instanceUid,a=(0,s.safeJson)(e.data.payload,e.data.payload);this.handler&&this.handler(t,a,r,n)},this._parems=e}send(e,t,r,s){this.parent?.postMessage({event:e,uuid:r||this._parems?.uuid,instanceUid:s,payload:(()=>{try{return JSON.stringify(t)}catch(e){return t}})()},document.location.origin)}subscribe(e){this.handler=e,this.parent?.addEventListener("message",this.listenHandler)}destroy(){this.parent?.removeEventListener("message",this.listenHandler)}}},3470:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getConfigData=void 0;const s=r(4582);t.getConfigData=function(e){const t={name:e.name,type:e.type,icon:e.icon,pictogram:"",index:""};switch(e.type){case s.ExtensionType.File:t.index=e.file?.index||"";break;case s.ExtensionType.WorkDir:t.index=e.work_dir?.index||"";break;case s.ExtensionType.App:t.index=e.app?.menu.index||"",t.pictogram=e.app?.menu.icon||""}return t}},3807:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},4080:()=>{!function(){if(void 0===window.Reflect||void 0===window.customElements||window.customElements.polyfillWrapFlushCallback)return;const e=HTMLElement;window.HTMLElement=function(){return Reflect.construct(e,[],this.constructor)},HTMLElement.prototype=e.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,e)}()},4223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StorageApi=void 0;const s=r(748),n=r(475),a=r(7179),o=r(9035),i=r(6418),c=r(7860),d=r(2070),h=r(4582),p=r(3111),l=r(6738),u=new Map,f=e=>Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e)),g=(e,t,r)=>async s=>{if(s instanceof Response&&s.ok)p.Transport.send(e,{path:t,status:s.status,options:r});else try{const n=s instanceof Response?await s.json():s;p.Transport.send(e,{path:t,status:s.status,code:n?.code,message:n?.message,options:r})}catch{p.Transport.send(e,{path:t,status:s.status,options:r})}};class v extends a.Api{list(e){if(this.state.storage.root===d.StorageRoot.spaces){const t=this.makeSearchParams(f({parent_id:e.parent_id??e.path,search:e.search,min_size:e.min_size,max_size:e.max_size,type:e.type,content_types:e.content_types,is_search_dir:e.is_search_dir,is_trash:e.is_trash,limit:e.limit,offset:e.offset,order_by:e.order_by,order_direction:e.order_direction}));return(0,i.sendRequest2)("GET",this.makeApiPath("/files/list")+t,{headers:this.makeHeaders(),cache:"no-cache"}).then(this.responseJSON)}return e.path&&(e.path=this.relativePath(e.path)),this.rest.get("/storage",e)}info(e){if(this.state.storage.root===d.StorageRoot.spaces){const t=this.makeSearchParams({file_id:e});return(0,i.sendRequest2)("GET",this.makeApiPath("/files")+t,{headers:this.makeHeaders(),cache:"no-cache"}).then(this.responseJSON)}return this.rest.get("/storage/element",{path:e})}create(e,t,r,s){if(this.state.storage.root===d.StorageRoot.spaces){const n=f({name:e,type:r,parent_id:t||void 0,created_by_extension:s?.created_by_extension});return(0,i.sendRequest2)("POST",this.makeApiPath("/files").toString(),{headers:this.makeHeaders({"Content-Type":"application/json"}),body:JSON.stringify(n)}).then(this.responseJSON)}const n={is_work_dir:this.state.extenstion.type===h.ExtensionType.WorkDir,...s,name:e,path:this.relativePath(t),type:r,divide_id:this.state.api.query.divide_id||null};return(0,i.sendRequest)(this.makeApiPath("/element"),{method:"POST",headers:this.makeHeaders({"Content-Type":"application/json"}),body:JSON.stringify(n)}).then(this.responseJSON)}delete(e,t){if(this.state.storage.root===d.StorageRoot.spaces){const r=this.makeSearchParams(f({file_ids:[e],hard:t}));return(0,i.sendRequest2)("DELETE",this.makeApiPath("/files")+r,{headers:this.makeHeaders()})}return(0,i.sendRequest)(this.makeApiPath("/element")+this.makeSearchParams({path:e,hard:t}),{method:"DELETE",headers:this.makeHeaders()})}makeDownloadPath(e,t){const r=this.state.storage.root===d.StorageRoot.spaces,s={...t},n={[r?"file_id":"path"]:e,with_preview:!1};return s.cache||(n.t=Date.now()),s.imagePreview&&(n.with_preview=!0),this.makeApiPath(r?"/files/download":"/files")+this.makeSearchParams(n)}makeImagePreview(e,t){return this.makeDownloadPath(e,{...t,imagePreview:!0})}download(e){const t=this.state.storage.root===d.StorageRoot.spaces,r=t?this.state.storage.file_id:this.state.storage.path,s=t?e||r:this.relativePath(e,r),n=this.makeSearchParams({[t?"file_id":"path"]:s,t:Date.now()}),a=t?"/files/download":"/files";return(0,i.sendRequest2)("GET",this.makeApiPath(a)+n,{headers:this.makeHeaders(),cache:"no-cache"}).then(async e=>{if(!e.ok&&403===e.status){let t={};try{t=await e.json()}catch{t={}}return Promise.reject(e)}return e}).catch(e=>{throw e.status>=400&&(0,l.notificateRequestError)(e.status,e.message,e.code),e})}replace(e,t,r){const s=this.state.storage.root===d.StorageRoot.spaces,n=s?this.state.storage.file_id:this.state.storage.path,a=s?t||n:this.relativePath(t,n),o=this.makeSearchParams({[s?"file_id":"path"]:a,t:Date.now()}),c=t??n;return p.Transport.send(h.TransportEvent.ExtSavedStart,{path:c,options:r}),(0,i.sendRequest2)("PUT",this.makeApiPath("/files")+o,{cache:"no-cache",body:e,headers:this.makeHeaders()}).then(e=>(g(h.TransportEvent.ExtSavedEnd,c,r)(e),this.responseJSON(e))).catch(e=>{throw g(h.TransportEvent.ExtSavedError,c,r)(e),e})}liveReplace(e,t,r,s){const n=this.state.storage.root===d.StorageRoot.spaces,a=n?this.state.storage.file_id:this.state.storage.path,o=[this.state.storage.root,this.state.storage.rootID,n?t||a:this.relativePath(t,a)].join("-");let i=u.get(o);i||(i={status:h.RequestStatus.Done,requests:[]},u.set(o,i)),i.requests.push({path:t,body:e});const c=()=>{if(!i)return;if(i.status===h.RequestStatus.Wait)return;const e=i.requests.pop();i.requests=[],e?(i.status=h.RequestStatus.Wait,this.replace(e.body,e.path,s).then(e=>(i.status=h.RequestStatus.Done,c(),e)).catch(e=>(i.status=h.RequestStatus.Reject,c(),e))):r&&r()};c()}upload(e,t,r=!1){const s=this.state.storage.root===d.StorageRoot.spaces,n=new FormData;return s?(e&&n.set("parent_id",e),n.set("overwrite",String(r))):(n.set("path",this.relativePath(e)),this.state.api.query.divide_id&&n.set("divide_id",this.state.api.query.divide_id)),n.set("file",t),p.Transport.send(h.TransportEvent.ExtSavedStart,e),(0,i.sendRequest)(this.makeApiPath(s?"/files/upload":"/files"),{method:"POST",body:n,headers:this.makeHeaders()}).then(t=>(g(h.TransportEvent.ExtSavedEnd,e)(t),t)).catch(t=>{throw g(h.TransportEvent.ExtSavedError,e)(t),t}).then(this.responseJSON,this.responseJSON)}uploadNet(e,t,r=!1){if(p.Transport.send(h.TransportEvent.ExtSavedStart,e),this.state.storage.root===d.StorageRoot.spaces){const{dir:s,base:a}=(0,n.fileInfo)(e);return(0,i.sendRequest2)("POST",this.makeApiPath("/files/upload/net").toString(),{headers:this.makeHeaders({"Content-Type":"application/json"}),body:JSON.stringify(f({name:a,url:t,overwrite:r,parent_id:s||void 0}))}).then(t=>(g(h.TransportEvent.ExtSavedEnd,e)(t),t)).catch(t=>{throw g(h.TransportEvent.ExtSavedError,e)(t),t}).then(this.responseJSON,this.responseJSON)}return(0,i.sendRequest)(this.makeApiPath("/files/net"),{method:"POST",headers:this.makeHeaders({"Content-Type":"application/json"}),body:JSON.stringify({url:t,overwrite:r,path:this.relativePath(e)})}).then(t=>(g(h.TransportEvent.ExtSavedEnd,e)(t),t)).catch(t=>{throw g(h.TransportEvent.ExtSavedError,e)(t),t}).then(this.responseJSON,this.responseJSON)}createMeta(e,t,r){return this.create(e||this.metaName,t||"","file",r)}readMeta(e){return this.download(e||this.metaName)}saveMeta(e,t){return this.replace(e,t||this.metaName)}relativePath(e,t){return!e&&t?t||"":(0,s.pathJoin)(this.state.storage.info.dir||"",e||"")}makeApiPath(...e){let t="storage";return"fca"===this.state.storage.root&&(t=`disk/${this.state.storage.rootID}`),"spaces"===this.state.storage.root&&(t=`spaces/${this.state.storage.rootID}`),super.makeApiPath(t,...e)}get metaName(){return"."+(0,c.translite)((0,o.getLang)(this.state.extenstion.name))}}t.StorageApi=v},4339:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ViewState=void 0,(r=t.ViewState||(t.ViewState={})).view="view",r.edit="edit"},4444:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.browserNavigate=void 0;const s=r(7232),n=r(8161);t.browserNavigate=function(e){if(!(0,n.isBrowser)())return;const t=(0,s.getGlobal)(),{path:r,queryParams:a}=e,o=new URL(r||"",window.origin),i=a||{};Object.keys(i).forEach(e=>{const t=i[e];t&&o.searchParams.append(e,t.toString())}),t.history.pushState({},"",o.toString())}},4582:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(4981),t),n(r(4339),t),n(r(2070),t),n(r(2951),t),n(r(146),t),n(r(735),t),n(r(3334),t),n(r(3807),t)},4981:(e,t)=>{var r,s,n,a;Object.defineProperty(t,"__esModule",{value:!0}),t.RequestStatus=t.PermissionType=t.ExtensionFileMode=t.ExtensionType=void 0,(a=t.ExtensionType||(t.ExtensionType={})).App="app",a.File="file",a.WorkDir="work_dir",(n=t.ExtensionFileMode||(t.ExtensionFileMode={})).Read="read",n.Write="write",n.ReadAndWrite="read_and_write",(s=t.PermissionType||(t.PermissionType={})).CLOSE="",s.READ="r",s.WRITE="rw",(r=t.RequestStatus||(t.RequestStatus={}))[r.Wait=0]="Wait",r[r.Done=1]="Done",r[r.Reject=2]="Reject"},5673:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(2137),t)},5800:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isString=void 0,t.isString=function(e){return"[object String]"===Object.prototype.toString.call(e)}},6032:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),r(4080)},6064:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.transportProps=void 0;const s=(0,r(7232).getGlobal)();t.transportProps=()=>({...s._nb_global_props,...n()});const n=()=>{try{return JSON.parse(window.name||"")}catch(e){return{}}}},6157:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UserApi=void 0;const s=r(7179),n="/users",a="/users/me",o=`${a}/avatars`,i=`${a}/sessions`,c=`${a}/tokens`,d=`${n}/change-password`;class h extends s.Api{logout(){return this.rest.get("/logout")}get(e){return this.rest.get(`${n}/${e}`)}list(e){return this.rest.get(n,e)}restore(e){return this.rest.post(`${n}/${e}/restore`)}delete(e,t){return this.rest.delete(`${n}/${e}`,t)}update(e){return this.rest.put(n+`/${e.id}`,JSON.stringify(e))}create(e){return this.rest.post(n,JSON.stringify(e))}createToken(e){return this.rest.post(c,JSON.stringify(e))}listToken(e){return this.rest.get(c,e)}deleteToken(e){return this.rest.delete(`${c}/${e}`)}changePassword(e){return this.rest.post(d,JSON.stringify(e))}me(){return this.rest.get(a)}meUploadAvatar(e,t){const r=new FormData;return r.append("file",e,t),this.rest.post(o,r)}meDeleteAvatar(){return this.rest.delete(o)}meListSession(e){return this.rest.get(i,e)}meDeleteSession(e){let t=i;return e&&(t+=`/${e}`),this.rest.delete(t)}}t.UserApi=h},6260:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.safeJson=void 0,t.safeJson=function(e,t){try{return JSON.parse(e)}catch(e){return t}}},6341:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.notificateRequestError=void 0;const s=r(6854),n=r(4582);t.notificateRequestError=function(e,t,r){s.Transport.send(n.TransportEvent.ExtRequestError,{status:e,message:t,code:r})}},6371:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultState=void 0;const s=r(4582);t.defaultState=()=>({extenstion:{id:0,name:{},type:s.ExtensionType.File},api:{host:window.location.origin,prefix:"/api/v1",headers:{},query:{}},debug:!0,view:s.ViewState.view,storage:{root:s.StorageRoot.my,rootID:0,path:"",info:{base:"",dir:"",ext:"",name:"",root:""}}})},6418:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.sendRequest2=t.sendRequest=void 0;const s=r(6854),n=r(4582),a=r(6341),o=r(748);let i=null;const c=()=>(i||(i=s.Transport.call(n.CallNameEvent.Update).catch(e=>{throw i=null,e}).then(e=>(i=null,e))),i);t.sendRequest=function(e,t){return c().then(()=>fetch(e,t)).then(async e=>{if(e.status>=400&&((0,a.notificateRequestError)(e.status,""),403===e.status)){const t=await e.json();if("resource locked"===t.code){const r=new Error("Forbidden");throw r.status=e.status,r.code=t.code,r.message=t.error.lock_owner_id,r}}return e}).catch(e=>{throw e.status>=400&&(0,a.notificateRequestError)(e.status,e.message,e.code),e})},t.sendRequest2=function(e,t,r){const s={...r.headers};r.params&&(t+="?"+d(r.params)),r.prefix&&(t=(0,o.pathJoin)(r.prefix,t));const n={method:e,cache:r.cache,headers:s,body:r.body};return c().then(()=>fetch(new URL(t,r.host),n)).catch(e=>{throw h(e.status,e.message,e.code),e})};const d=e=>{const t=new URLSearchParams;return Object.keys(e).forEach(r=>{Array.isArray(e[r])?e[r].forEach(e=>{t.append(r,e)}):t.append(r,e[r])}),t},h=(e,t,r)=>{e>=400&&(0,a.notificateRequestError)(e,t,r)}},6555:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.uuid=void 0,t.uuid=function(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}},6662:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isObject=void 0,t.isObject=function(e){return null!=e&&"Object"===e.constructor.name}},6738:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(1910),t),n(r(475),t),n(r(9035),t),n(r(7096),t),n(r(748),t),n(r(6418),t),n(r(7860),t),n(r(7232),t),n(r(8161),t),n(r(6662),t),n(r(5800),t),n(r(6341),t),n(r(6260),t),n(r(3470),t),n(r(6064),t),n(r(4444),t),n(r(6371),t)},6854:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(8325),t),n(r(3111),t)},6860:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EventEmitter=void 0,t.EventEmitter=class{constructor(){this._handlers=new Map,this._globalHandlers=new Set}listen(e){this._globalHandlers.add(e)}on(e,t){this._handlers.has(e)||this._handlers.set(e,new Set),this._handlers.get(e)?.add(t)}off(e,t){this._handlers.get(e)?.delete(t)}emit(e,...t){this._handlers.get(e)?.forEach(e=>{e&&e(...t)}),this._globalHandlers.forEach(r=>{r(e,...t)})}}},7096:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parentURL=void 0,t.parentURL=function(){return new URL(window.location!=window.parent.location?document.referrer:document.location.href)}},7179:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Api=void 0;const s=r(6738),n=r(6371);t.Api=class{constructor(e=(0,n.defaultState)()){this.rest={get:(e,t,r)=>(0,s.sendRequest2)("GET",e,{prefix:this.state.api.prefix,host:this.state.api.host,headers:this.makeHeaders(r),params:{...this.state.api.query,...t},cache:"no-cache"}).then(this.responseJSON),post:(e,t,r)=>(0,s.sendRequest2)("POST",e,{prefix:this.state.api.prefix,host:this.state.api.host,headers:this.makeHeaders(r),params:{...this.state.api.query},body:t}).then(this.responseJSON),put:(e,t,r)=>(0,s.sendRequest2)("PUT",e,{prefix:this.state.api.prefix,host:this.state.api.host,headers:this.makeHeaders(r),params:{...this.state.api.query},cache:"no-cache",body:t}).then(this.responseJSON),delete:(e,t,r)=>(0,s.sendRequest2)("PUT",e,{prefix:this.state.api.prefix,host:this.state.api.host,headers:this.makeHeaders(r),params:{...this.state.api.query,...t}}).then(this.responseJSON)},this.changeState(e)}changeState(e){this.state=e}makeSearchParams(e){e={...this.state.api.query,...e};const t=[],r=(e,r)=>{if(null===r)return;const s=encodeURIComponent(e);let n=String(r);(e=>{try{return encodeURIComponent(decodeURIComponent(e))===e}catch{return!1}})(n)||(n=encodeURIComponent(n)),t.push(`${s}=${n}`)};for(const[t,s]of Object.entries(e))Array.isArray(s)?s.forEach(e=>r(t,e)):r(t,s);return t.length?`?${t.join("&")}`:""}makeHeaders(e){return{...e,...this.state.api.headers}}responseJSON(e){return(e.headers.get("content-type")||"").includes("/json")?e.status>=200&&e.status<400?e.json():Promise.reject(e):(console.warn("Parse json error"),Promise.reject(e))}makeApiPath(...e){return new URL(decodeURI((0,s.pathJoin)(this.state.api.prefix,...e)),this.state.api.host)}}},7232:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getGlobal=void 0;const s=r(8161);t.getGlobal=()=>(0,s.isBrowser)()?window:r.g},7333:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TransportWebsocket=void 0;const r=Symbol("socket");t.TransportWebsocket=class{constructor(e){this._params=e,this[r]||this.init(e)}init(e){const t=e?.host||"localhost",s=e?.port||8999,n=e?.path||"";this[r]=new WebSocket(`ws://${t}:${s}${n}`),this[r].onopen=()=>{},this[r].onclose=e=>{e.wasClean?console.log("Соединение закрыто"):console.log("Обрыв соединения"),console.log("Код: "+e.code+" причина: "+e.reason)},this[r].onerror=e=>{console.log("Ошибка подключения ws: "+e.message)}}send(e,t,s,n){this[r]&&(this[r].readyState?this[r].send(JSON.stringify({event:e,payload:t,uuid:s||this._params?.uuid,instanceUid:n})):setTimeout(()=>{this.send(e,t,s)},100))}subscribe(e){this[r]&&(this[r].onmessage=function(t){try{const{event:r,payload:s,uuid:n,instanceUid:a}=JSON.parse(t.data);e(r,s,n,a)}catch(e){}})}destroy(){this[r]&&(this[r].close(),this[r]=void 0)}}},7860:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.translite=void 0;const r={а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"e",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"h",ц:"c",ч:"cz",ш:"sh",щ:"scz",ы:"y",ь:"",э:"e",ю:"u",я:"ja"," ":"-"};t.translite=function(e){return(e=(e=(e=(e=(e=e.toLocaleLowerCase()).trim()).replace(/ -/gi,"-")).replace(/- /gi,"-")).replace(/\s{2,}/gi," ")).split("").map(e=>/[a-z0-9]/i.test(e)?e:r[e]||"").join("")}},7916:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NextBox=void 0;const s=r(6860),n=r(6738),a=r(6371),o=r(3111),i=r(2951),c=["click","scroll","keydown","mousemove"];class d extends s.EventEmitter{constructor(){super(...arguments),this.userEventHandlers={}}init(e){const t=e=>this.state=e;if(!o.Transport.engineType){const r=(0,a.defaultState)();t(r),e&&e(r)}o.Transport.on(i.TransportEvent.AppReady,r=>{t(r),e&&e(r)}),o.Transport.on(i.TransportEvent.AppReload,()=>{window.location.reload()}),o.Transport.on(i.TransportEvent.AppChangeState,t),o.Transport.send(i.TransportEvent.ExtInit),this.attachUserEvents()}destroy(){this.detachUserEvents()}prepareNavigate(){const e=this.state?.initialNavigation;e?.target&&[i.TransportNavigationTarget.Cache,i.TransportNavigationTarget.Self].includes(e.target)&&(0,n.browserNavigate)(e)}attachUserEvents(){let e=0;function t(t){const r=Date.now();r-e<300||(e=r,o.Transport.send(i.TransportEvent.ExtUserInteraction,{type:t,timestamp:r}))}for(const e of c){const r=()=>t(e);this.userEventHandlers[e]=r,window.addEventListener(e,r,!0)}}detachUserEvents(){for(const e of c){const t=this.userEventHandlers[e];t&&(window.removeEventListener(e,t,!0),delete this.userEventHandlers[e])}}}t.NextBox=d},7975:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function r(e,t){for(var r,s="",n=0,a=-1,o=0,i=0;i<=e.length;++i){if(i<e.length)r=e.charCodeAt(i);else{if(47===r)break;r=47}if(47===r){if(a===i-1||1===o);else if(a!==i-1&&2===o){if(s.length<2||2!==n||46!==s.charCodeAt(s.length-1)||46!==s.charCodeAt(s.length-2))if(s.length>2){var c=s.lastIndexOf("/");if(c!==s.length-1){-1===c?(s="",n=0):n=(s=s.slice(0,c)).length-1-s.lastIndexOf("/"),a=i,o=0;continue}}else if(2===s.length||1===s.length){s="",n=0,a=i,o=0;continue}t&&(s.length>0?s+="/..":s="..",n=2)}else s.length>0?s+="/"+e.slice(a+1,i):s=e.slice(a+1,i),n=i-a-1;a=i,o=0}else 46===r&&-1!==o?++o:o=-1}return s}var s={resolve:function(){for(var e,s="",n=!1,a=arguments.length-1;a>=-1&&!n;a--){var o;a>=0?o=arguments[a]:(void 0===e&&(e=process.cwd()),o=e),t(o),0!==o.length&&(s=o+"/"+s,n=47===o.charCodeAt(0))}return s=r(s,!n),n?s.length>0?"/"+s:"/":s.length>0?s:"."},normalize:function(e){if(t(e),0===e.length)return".";var s=47===e.charCodeAt(0),n=47===e.charCodeAt(e.length-1);return 0!==(e=r(e,!s)).length||s||(e="."),e.length>0&&n&&(e+="/"),s?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,r=0;r<arguments.length;++r){var n=arguments[r];t(n),n.length>0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":s.normalize(e)},relative:function(e,r){if(t(e),t(r),e===r)return"";if((e=s.resolve(e))===(r=s.resolve(r)))return"";for(var n=1;n<e.length&&47===e.charCodeAt(n);++n);for(var a=e.length,o=a-n,i=1;i<r.length&&47===r.charCodeAt(i);++i);for(var c=r.length-i,d=o<c?o:c,h=-1,p=0;p<=d;++p){if(p===d){if(c>d){if(47===r.charCodeAt(i+p))return r.slice(i+p+1);if(0===p)return r.slice(i+p)}else o>d&&(47===e.charCodeAt(n+p)?h=p:0===p&&(h=0));break}var l=e.charCodeAt(n+p);if(l!==r.charCodeAt(i+p))break;47===l&&(h=p)}var u="";for(p=n+h+1;p<=a;++p)p!==a&&47!==e.charCodeAt(p)||(0===u.length?u+="..":u+="/..");return u.length>0?u+r.slice(i+h):(i+=h,47===r.charCodeAt(i)&&++i,r.slice(i))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var r=e.charCodeAt(0),s=47===r,n=-1,a=!0,o=e.length-1;o>=1;--o)if(47===(r=e.charCodeAt(o))){if(!a){n=o;break}}else a=!1;return-1===n?s?"/":".":s&&1===n?"//":e.slice(0,n)},basename:function(e,r){if(void 0!==r&&"string"!=typeof r)throw new TypeError('"ext" argument must be a string');t(e);var s,n=0,a=-1,o=!0;if(void 0!==r&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var i=r.length-1,c=-1;for(s=e.length-1;s>=0;--s){var d=e.charCodeAt(s);if(47===d){if(!o){n=s+1;break}}else-1===c&&(o=!1,c=s+1),i>=0&&(d===r.charCodeAt(i)?-1===--i&&(a=s):(i=-1,a=c))}return n===a?a=c:-1===a&&(a=e.length),e.slice(n,a)}for(s=e.length-1;s>=0;--s)if(47===e.charCodeAt(s)){if(!o){n=s+1;break}}else-1===a&&(o=!1,a=s+1);return-1===a?"":e.slice(n,a)},extname:function(e){t(e);for(var r=-1,s=0,n=-1,a=!0,o=0,i=e.length-1;i>=0;--i){var c=e.charCodeAt(i);if(47!==c)-1===n&&(a=!1,n=i+1),46===c?-1===r?r=i:1!==o&&(o=1):-1!==r&&(o=-1);else if(!a){s=i+1;break}}return-1===r||-1===n||0===o||1===o&&r===n-1&&r===s+1?"":e.slice(r,n)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var r=t.dir||t.root,s=t.base||(t.name||"")+(t.ext||"");return r?r===t.root?r+s:r+"/"+s:s}(0,e)},parse:function(e){t(e);var r={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return r;var s,n=e.charCodeAt(0),a=47===n;a?(r.root="/",s=1):s=0;for(var o=-1,i=0,c=-1,d=!0,h=e.length-1,p=0;h>=s;--h)if(47!==(n=e.charCodeAt(h)))-1===c&&(d=!1,c=h+1),46===n?-1===o?o=h:1!==p&&(p=1):-1!==o&&(p=-1);else if(!d){i=h+1;break}return-1===o||-1===c||0===p||1===p&&o===c-1&&o===i+1?-1!==c&&(r.base=r.name=0===i&&a?e.slice(1,c):e.slice(i,c)):(0===i&&a?(r.name=e.slice(1,o),r.base=e.slice(1,c)):(r.name=e.slice(i,o),r.base=e.slice(i,c)),r.ext=e.slice(o,c)),i>0?r.dir=e.slice(0,i-1):a&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};s.posix=s,e.exports=s},8156:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),r(6032),r(2636),n(r(7916),t),n(r(4582),t),n(r(6854),t),n(r(6738),t),n(r(915),t),n(r(8843),t),n(r(5673),t)},8161:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isBrowser=void 0,t.isBrowser=function(){return"undefined"!=typeof window}},8325:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},8843:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(1572),t),n(r(2392),t),n(r(4223),t),n(r(6157),t),n(r(147),t)},9035:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getLang=void 0,t.getLang=function(e,t="ru"){if(e[t])return e[t];const r=Object.keys(e).pop();return r&&e[r]?e[r]:""}},9995:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TransportEmpty=void 0,t.TransportEmpty=class{send(e,t){}subscribe(e){}destroy(){}}}},t={};function r(s){var n=t[s];if(void 0!==n)return n.exports;var a=t[s]={exports:{}};return e[s].call(a.exports,a,a.exports,r),a.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(8156)})());
package/init.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { NextBox } from './app';
2
+ import { EventHandler } from './app/classes';
3
+ export declare function init(readyHandler: EventHandler): NextBox;
package/nb-global.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { NbFrameComponent } from './app/components';
3
+ declare global {
4
+ namespace JSX {
5
+ interface IntrinsicElements {
6
+ 'nb-frame': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, NbFrameComponent>;
7
+ }
8
+ }
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-box",
3
- "version": "2.5.97",
3
+ "version": "2.5.98",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",