dochub-sdk 0.1.217 → 0.1.219

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.
@@ -0,0 +1 @@
1
+ export * from './path';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Вычисляет относительный путь из прямых
3
+ */
4
+ export function getRelativePath(baseUrl: string, targetUrl: string): string {
5
+ const structBase = baseUrl?.split('@');
6
+ const structTarget = targetUrl.split('@');
7
+ if (
8
+ (structBase.length !== structTarget.length) // Если по структуре URL адреса не сходятся сразу выходим
9
+ || (structBase.length === 2 && structBase[0] !== structTarget[0]) // Если репа или ветка не та, тоже выходим
10
+ ) return targetUrl;
11
+
12
+ // За основу берем правую часть структуры
13
+ const base = new URL(structBase.pop() || '/', 'null:/');
14
+ const target = new URL(structTarget.pop() || '/', 'null:/');
15
+ // Проверяем, что базовый и целевой URL имеют одинаковый протокол и хост
16
+ if (base.protocol !== target.protocol || base.host !== target.host) {
17
+ throw new Error('Base and target URLs must have the same protocol and host.');
18
+ }
19
+ // Получаем пути
20
+ const basePathSegments = base.pathname.split('/').filter(segment => segment);
21
+ const targetPathSegments = target.pathname.split('/').filter(segment => segment);
22
+ // Находим общую часть пути
23
+ let commonLength = 0;
24
+ while (commonLength < basePathSegments.length && commonLength < targetPathSegments.length &&
25
+ basePathSegments[commonLength] === targetPathSegments[commonLength]) {
26
+ commonLength++;
27
+ }
28
+ // Создаем относительный путь
29
+ const relativePathSegments: string[] = [];
30
+ // Добавляем "../" для каждого сегмента, который нужно поднять
31
+ for (let i = commonLength + 1; i < basePathSegments.length; i++) {
32
+ relativePathSegments.push('..');
33
+ }
34
+ // Добавляем оставшиеся сегменты целевого пути
35
+ for (let i = commonLength; i < targetPathSegments.length; i++) {
36
+ relativePathSegments.push(targetPathSegments[i]);
37
+ }
38
+ // Собираем относительный путь
39
+ const relativePath = relativePathSegments.join('/') || '';
40
+ return relativePath;
41
+ }
@@ -10,8 +10,12 @@ export enum DocHubEditMode {
10
10
  editIDE = 'edit-ide',
11
11
  view = 'view'
12
12
  }
13
-
14
-
13
+ /**
14
+ * Мета информация о редактируемом объекте
15
+ */
16
+ export interface IDocHubEditableMeta {
17
+ title: string; // Название объекта редактирования. Выводится пользователя, например, в выпадающем меню
18
+ }
15
19
  /**
16
20
  * Если компонент имеет возможность контекстного редактирования, он должен реализовывать данный интерфейс
17
21
  */
@@ -25,8 +29,11 @@ export interface IDocHubEditableComponent {
25
29
  * Отправляет запрос на начало редактирования
26
30
  */
27
31
  openEditor(): void;
32
+ /**
33
+ * Возвращает метаинформацию по редактированию
34
+ */
35
+ getMetaEdit(): Promise<IDocHubEditableMeta>;
28
36
  }
29
-
30
37
  /**
31
38
  * События, которые должен обрабатывать редактор
32
39
  */
@@ -49,8 +56,6 @@ export enum EditorEvents {
49
56
  create = '$create', // Требует создать новый объект
50
57
  delete = '$delete' // Требует удалить объект
51
58
  };
52
-
53
-
54
59
  /**
55
60
  * Тип редактора
56
61
  */
@@ -61,7 +66,6 @@ export enum DocHubEditorType {
61
66
  }
62
67
 
63
68
  export type DocHubContextUID = DocHubUID;
64
-
65
69
  /**
66
70
  * Контекст редактора
67
71
  */
@@ -71,7 +75,6 @@ export type DocHubEditorFileContext = {
71
75
  title?: string;
72
76
  meta: IDocHubFileEditorContext
73
77
  }
74
-
75
78
  /**
76
79
  * Контекст редактора объекта
77
80
  */
@@ -83,17 +86,14 @@ export type DocHubEditorObjectContext = {
83
86
  }
84
87
 
85
88
  export type DocHubEditorURI = string;
86
-
87
89
  /**
88
90
  * Универсальный контекст редактора
89
91
  */
90
92
  export type DocHubEditorContext = DocHubEditorFileContext | DocHubEditorObjectContext;
91
-
92
93
  /**
93
94
  * Предопределенный идентификатор контекста рабочего стола
94
95
  */
95
96
  export const DESK_CONTEXT_UID = '00000000-0000-0000-0000-000000000000';
96
-
97
97
  /**
98
98
  * Интерфейс взаимодействия с редакторами
99
99
  */
@@ -115,5 +115,4 @@ export interface IDocHubEditors {
115
115
  * @param data - Данные, которые будут смонтированы
116
116
  */
117
117
  mountContextArea(prop: string, data: any);
118
-
119
118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dochub-sdk",
3
- "version": "0.1.217",
3
+ "version": "0.1.219",
4
4
  "description": "The DocHub System Development Kit.",
5
5
  "private": false,
6
6
  "main": "index.ts",