@ckeditor/ckeditor5-link 44.3.0 → 45.0.0-alpha.0
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/LICENSE.md +1 -1
- package/build/link.js +2 -2
- package/build/translations/af.js +1 -1
- package/build/translations/ar.js +1 -1
- package/build/translations/ast.js +1 -1
- package/build/translations/az.js +1 -1
- package/build/translations/be.js +1 -0
- package/build/translations/bg.js +1 -1
- package/build/translations/bn.js +1 -1
- package/build/translations/bs.js +1 -1
- package/build/translations/ca.js +1 -1
- package/build/translations/cs.js +1 -1
- package/build/translations/da.js +1 -1
- package/build/translations/de-ch.js +1 -1
- package/build/translations/de.js +1 -1
- package/build/translations/el.js +1 -1
- package/build/translations/en-au.js +1 -1
- package/build/translations/en-gb.js +1 -1
- package/build/translations/eo.js +1 -1
- package/build/translations/es-co.js +1 -1
- package/build/translations/es.js +1 -1
- package/build/translations/et.js +1 -1
- package/build/translations/eu.js +1 -1
- package/build/translations/fa.js +1 -1
- package/build/translations/fi.js +1 -1
- package/build/translations/fr.js +1 -1
- package/build/translations/gl.js +1 -1
- package/build/translations/gu.js +1 -1
- package/build/translations/he.js +1 -1
- package/build/translations/hi.js +1 -1
- package/build/translations/hr.js +1 -1
- package/build/translations/hu.js +1 -1
- package/build/translations/hy.js +1 -1
- package/build/translations/id.js +1 -1
- package/build/translations/it.js +1 -1
- package/build/translations/ja.js +1 -1
- package/build/translations/jv.js +1 -1
- package/build/translations/kk.js +1 -1
- package/build/translations/km.js +1 -1
- package/build/translations/kn.js +1 -1
- package/build/translations/ko.js +1 -1
- package/build/translations/ku.js +1 -1
- package/build/translations/lt.js +1 -1
- package/build/translations/lv.js +1 -1
- package/build/translations/ms.js +1 -1
- package/build/translations/nb.js +1 -1
- package/build/translations/ne.js +1 -1
- package/build/translations/nl.js +1 -1
- package/build/translations/no.js +1 -1
- package/build/translations/oc.js +1 -1
- package/build/translations/pl.js +1 -1
- package/build/translations/pt-br.js +1 -1
- package/build/translations/pt.js +1 -1
- package/build/translations/ro.js +1 -1
- package/build/translations/ru.js +1 -1
- package/build/translations/si.js +1 -1
- package/build/translations/sk.js +1 -1
- package/build/translations/sl.js +1 -1
- package/build/translations/sq.js +1 -1
- package/build/translations/sr-latn.js +1 -1
- package/build/translations/sr.js +1 -1
- package/build/translations/sv.js +1 -1
- package/build/translations/th.js +1 -1
- package/build/translations/ti.js +1 -1
- package/build/translations/tk.js +1 -1
- package/build/translations/tr.js +1 -1
- package/build/translations/tt.js +1 -1
- package/build/translations/ug.js +1 -1
- package/build/translations/uk.js +1 -1
- package/build/translations/ur.js +1 -1
- package/build/translations/uz.js +1 -1
- package/build/translations/vi.js +1 -1
- package/build/translations/zh-cn.js +1 -1
- package/build/translations/zh.js +1 -1
- package/ckeditor5-metadata.json +2 -2
- package/dist/index-editor.css +87 -47
- package/dist/index.css +108 -58
- package/dist/index.css.map +1 -1
- package/dist/index.js +1161 -425
- package/dist/index.js.map +1 -1
- package/dist/translations/af.js +1 -1
- package/dist/translations/af.umd.js +1 -1
- package/dist/translations/ar.js +1 -1
- package/dist/translations/ar.umd.js +1 -1
- package/dist/translations/ast.js +1 -1
- package/dist/translations/ast.umd.js +1 -1
- package/dist/translations/az.js +1 -1
- package/dist/translations/az.umd.js +1 -1
- package/dist/translations/be.d.ts +8 -0
- package/dist/translations/be.js +5 -0
- package/dist/translations/be.umd.js +11 -0
- package/dist/translations/bg.js +1 -1
- package/dist/translations/bg.umd.js +1 -1
- package/dist/translations/bn.js +1 -1
- package/dist/translations/bn.umd.js +1 -1
- package/dist/translations/bs.js +1 -1
- package/dist/translations/bs.umd.js +1 -1
- package/dist/translations/ca.js +1 -1
- package/dist/translations/ca.umd.js +1 -1
- package/dist/translations/cs.js +1 -1
- package/dist/translations/cs.umd.js +1 -1
- package/dist/translations/da.js +1 -1
- package/dist/translations/da.umd.js +1 -1
- package/dist/translations/de-ch.js +1 -1
- package/dist/translations/de-ch.umd.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/de.umd.js +1 -1
- package/dist/translations/el.js +1 -1
- package/dist/translations/el.umd.js +1 -1
- package/dist/translations/en-au.js +1 -1
- package/dist/translations/en-au.umd.js +1 -1
- package/dist/translations/en-gb.js +1 -1
- package/dist/translations/en-gb.umd.js +1 -1
- package/dist/translations/en.js +1 -1
- package/dist/translations/en.umd.js +1 -1
- package/dist/translations/eo.js +1 -1
- package/dist/translations/eo.umd.js +1 -1
- package/dist/translations/es-co.js +1 -1
- package/dist/translations/es-co.umd.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/es.umd.js +1 -1
- package/dist/translations/et.js +1 -1
- package/dist/translations/et.umd.js +1 -1
- package/dist/translations/eu.js +1 -1
- package/dist/translations/eu.umd.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fa.umd.js +1 -1
- package/dist/translations/fi.js +1 -1
- package/dist/translations/fi.umd.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/fr.umd.js +1 -1
- package/dist/translations/gl.js +1 -1
- package/dist/translations/gl.umd.js +1 -1
- package/dist/translations/gu.js +1 -1
- package/dist/translations/gu.umd.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/he.umd.js +1 -1
- package/dist/translations/hi.js +1 -1
- package/dist/translations/hi.umd.js +1 -1
- package/dist/translations/hr.js +1 -1
- package/dist/translations/hr.umd.js +1 -1
- package/dist/translations/hu.js +1 -1
- package/dist/translations/hu.umd.js +1 -1
- package/dist/translations/hy.js +1 -1
- package/dist/translations/hy.umd.js +1 -1
- package/dist/translations/id.js +1 -1
- package/dist/translations/id.umd.js +1 -1
- package/dist/translations/it.js +1 -1
- package/dist/translations/it.umd.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/ja.umd.js +1 -1
- package/dist/translations/jv.js +1 -1
- package/dist/translations/jv.umd.js +1 -1
- package/dist/translations/kk.js +1 -1
- package/dist/translations/kk.umd.js +1 -1
- package/dist/translations/km.js +1 -1
- package/dist/translations/km.umd.js +1 -1
- package/dist/translations/kn.js +1 -1
- package/dist/translations/kn.umd.js +1 -1
- package/dist/translations/ko.js +1 -1
- package/dist/translations/ko.umd.js +1 -1
- package/dist/translations/ku.js +1 -1
- package/dist/translations/ku.umd.js +1 -1
- package/dist/translations/lt.js +1 -1
- package/dist/translations/lt.umd.js +1 -1
- package/dist/translations/lv.js +1 -1
- package/dist/translations/lv.umd.js +1 -1
- package/dist/translations/ms.js +1 -1
- package/dist/translations/ms.umd.js +1 -1
- package/dist/translations/nb.js +1 -1
- package/dist/translations/nb.umd.js +1 -1
- package/dist/translations/ne.js +1 -1
- package/dist/translations/ne.umd.js +1 -1
- package/dist/translations/nl.js +1 -1
- package/dist/translations/nl.umd.js +1 -1
- package/dist/translations/no.js +1 -1
- package/dist/translations/no.umd.js +1 -1
- package/dist/translations/oc.js +1 -1
- package/dist/translations/oc.umd.js +1 -1
- package/dist/translations/pl.js +1 -1
- package/dist/translations/pl.umd.js +1 -1
- package/dist/translations/pt-br.js +1 -1
- package/dist/translations/pt-br.umd.js +1 -1
- package/dist/translations/pt.js +1 -1
- package/dist/translations/pt.umd.js +1 -1
- package/dist/translations/ro.js +1 -1
- package/dist/translations/ro.umd.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/ru.umd.js +1 -1
- package/dist/translations/si.js +1 -1
- package/dist/translations/si.umd.js +1 -1
- package/dist/translations/sk.js +1 -1
- package/dist/translations/sk.umd.js +1 -1
- package/dist/translations/sl.js +1 -1
- package/dist/translations/sl.umd.js +1 -1
- package/dist/translations/sq.js +1 -1
- package/dist/translations/sq.umd.js +1 -1
- package/dist/translations/sr-latn.js +1 -1
- package/dist/translations/sr-latn.umd.js +1 -1
- package/dist/translations/sr.js +1 -1
- package/dist/translations/sr.umd.js +1 -1
- package/dist/translations/sv.js +1 -1
- package/dist/translations/sv.umd.js +1 -1
- package/dist/translations/th.js +1 -1
- package/dist/translations/th.umd.js +1 -1
- package/dist/translations/ti.js +1 -1
- package/dist/translations/ti.umd.js +1 -1
- package/dist/translations/tk.js +1 -1
- package/dist/translations/tk.umd.js +1 -1
- package/dist/translations/tr.js +1 -1
- package/dist/translations/tr.umd.js +1 -1
- package/dist/translations/tt.js +1 -1
- package/dist/translations/tt.umd.js +1 -1
- package/dist/translations/ug.js +1 -1
- package/dist/translations/ug.umd.js +1 -1
- package/dist/translations/uk.js +1 -1
- package/dist/translations/uk.umd.js +1 -1
- package/dist/translations/ur.js +1 -1
- package/dist/translations/ur.umd.js +1 -1
- package/dist/translations/uz.js +1 -1
- package/dist/translations/uz.umd.js +1 -1
- package/dist/translations/vi.js +1 -1
- package/dist/translations/vi.umd.js +1 -1
- package/dist/translations/zh-cn.js +1 -1
- package/dist/translations/zh-cn.umd.js +1 -1
- package/dist/translations/zh.js +1 -1
- package/dist/translations/zh.umd.js +1 -1
- package/lang/contexts.json +4 -3
- package/lang/translations/af.po +10 -6
- package/lang/translations/ar.po +11 -7
- package/lang/translations/ast.po +10 -6
- package/lang/translations/az.po +10 -6
- package/lang/translations/be.po +68 -0
- package/lang/translations/bg.po +11 -7
- package/lang/translations/bn.po +11 -7
- package/lang/translations/bs.po +10 -6
- package/lang/translations/ca.po +11 -7
- package/lang/translations/cs.po +11 -7
- package/lang/translations/da.po +11 -7
- package/lang/translations/de-ch.po +10 -6
- package/lang/translations/de.po +11 -7
- package/lang/translations/el.po +11 -7
- package/lang/translations/en-au.po +11 -7
- package/lang/translations/en-gb.po +11 -7
- package/lang/translations/en.po +11 -7
- package/lang/translations/eo.po +10 -6
- package/lang/translations/es-co.po +10 -6
- package/lang/translations/es.po +11 -7
- package/lang/translations/et.po +11 -7
- package/lang/translations/eu.po +10 -6
- package/lang/translations/fa.po +10 -6
- package/lang/translations/fi.po +11 -7
- package/lang/translations/fr.po +11 -7
- package/lang/translations/gl.po +10 -6
- package/lang/translations/gu.po +10 -6
- package/lang/translations/he.po +11 -7
- package/lang/translations/hi.po +11 -7
- package/lang/translations/hr.po +10 -6
- package/lang/translations/hu.po +11 -7
- package/lang/translations/hy.po +10 -6
- package/lang/translations/id.po +11 -7
- package/lang/translations/it.po +11 -7
- package/lang/translations/ja.po +11 -7
- package/lang/translations/jv.po +10 -6
- package/lang/translations/kk.po +10 -6
- package/lang/translations/km.po +10 -6
- package/lang/translations/kn.po +10 -6
- package/lang/translations/ko.po +11 -7
- package/lang/translations/ku.po +10 -6
- package/lang/translations/lt.po +11 -7
- package/lang/translations/lv.po +11 -7
- package/lang/translations/ms.po +11 -7
- package/lang/translations/nb.po +10 -6
- package/lang/translations/ne.po +10 -6
- package/lang/translations/nl.po +11 -7
- package/lang/translations/no.po +11 -7
- package/lang/translations/oc.po +10 -6
- package/lang/translations/pl.po +11 -7
- package/lang/translations/pt-br.po +11 -7
- package/lang/translations/pt.po +11 -7
- package/lang/translations/ro.po +11 -7
- package/lang/translations/ru.po +11 -7
- package/lang/translations/si.po +10 -6
- package/lang/translations/sk.po +11 -7
- package/lang/translations/sl.po +10 -6
- package/lang/translations/sq.po +10 -6
- package/lang/translations/sr-latn.po +10 -6
- package/lang/translations/sr.po +11 -7
- package/lang/translations/sv.po +11 -7
- package/lang/translations/th.po +11 -7
- package/lang/translations/ti.po +10 -6
- package/lang/translations/tk.po +10 -6
- package/lang/translations/tr.po +11 -7
- package/lang/translations/tt.po +10 -6
- package/lang/translations/ug.po +10 -6
- package/lang/translations/uk.po +11 -7
- package/lang/translations/ur.po +10 -6
- package/lang/translations/uz.po +10 -6
- package/lang/translations/vi.po +11 -7
- package/lang/translations/zh-cn.po +11 -7
- package/lang/translations/zh.po +11 -7
- package/package.json +12 -12
- package/src/autolink.js +3 -0
- package/src/index.d.ts +1 -2
- package/src/index.js +0 -1
- package/src/linkcommand.d.ts +17 -10
- package/src/linkcommand.js +212 -82
- package/src/linkconfig.d.ts +28 -0
- package/src/linkediting.d.ts +18 -0
- package/src/linkediting.js +19 -9
- package/src/linkimageui.d.ts +1 -1
- package/src/linkimageui.js +4 -4
- package/src/linkui.d.ts +215 -24
- package/src/linkui.js +517 -109
- package/src/ui/linkbuttonview.d.ts +31 -0
- package/src/ui/linkbuttonview.js +54 -0
- package/src/ui/linkformview.d.ts +34 -49
- package/src/ui/linkformview.js +163 -134
- package/src/ui/linkpreviewbuttonview.d.ts +35 -0
- package/src/ui/linkpreviewbuttonview.js +43 -0
- package/src/ui/linkpropertiesview.d.ts +88 -0
- package/src/ui/linkpropertiesview.js +170 -0
- package/src/ui/linkprovideritemsview.d.ts +114 -0
- package/src/ui/linkprovideritemsview.js +207 -0
- package/src/utils/automaticdecorators.js +5 -7
- package/src/utils/manualdecorator.js +27 -0
- package/src/utils.d.ts +5 -5
- package/src/utils.js +12 -32
- package/theme/linkform.css +11 -33
- package/theme/linkproperties.css +4 -0
- package/theme/linkprovideritems.css +18 -0
- package/theme/linktoolbar.css +12 -0
- package/src/ui/linkactionsview.d.ts +0 -117
- package/src/ui/linkactionsview.js +0 -173
- package/theme/icons/link.svg +0 -1
- package/theme/icons/unlink.svg +0 -1
- package/theme/linkactions.css +0 -32
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module link/ui/linkpropertiesview
|
|
7
|
+
*/
|
|
8
|
+
import { ButtonView, View, ViewCollection, type SwitchButtonView } from 'ckeditor5/src/ui.js';
|
|
9
|
+
import { FocusTracker, KeystrokeHandler, type Locale } from 'ckeditor5/src/utils.js';
|
|
10
|
+
import '../../theme/linkproperties.css';
|
|
11
|
+
/**
|
|
12
|
+
* The link properties view controller class.
|
|
13
|
+
*
|
|
14
|
+
* See {@link module:link/ui/linkpropertiesview~LinkPropertiesView}.
|
|
15
|
+
*/
|
|
16
|
+
export default class LinkPropertiesView extends View {
|
|
17
|
+
/**
|
|
18
|
+
* Tracks information about DOM focus in the form.
|
|
19
|
+
*/
|
|
20
|
+
readonly focusTracker: FocusTracker;
|
|
21
|
+
/**
|
|
22
|
+
* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
|
|
23
|
+
*/
|
|
24
|
+
readonly keystrokes: KeystrokeHandler;
|
|
25
|
+
/**
|
|
26
|
+
* The Back button view displayed in the header.
|
|
27
|
+
*/
|
|
28
|
+
backButtonView: ButtonView;
|
|
29
|
+
/**
|
|
30
|
+
* A collection of child views.
|
|
31
|
+
*/
|
|
32
|
+
readonly children: ViewCollection;
|
|
33
|
+
/**
|
|
34
|
+
* A collection of {@link module:ui/button/switchbuttonview~SwitchButtonView},
|
|
35
|
+
* which corresponds to {@link module:link/linkcommand~LinkCommand#manualDecorators manual decorators}
|
|
36
|
+
* configured in the editor.
|
|
37
|
+
*/
|
|
38
|
+
readonly listChildren: ViewCollection<SwitchButtonView>;
|
|
39
|
+
/**
|
|
40
|
+
* A collection of views that can be focused in the form.
|
|
41
|
+
*/
|
|
42
|
+
private readonly _focusables;
|
|
43
|
+
/**
|
|
44
|
+
* Helps cycling over {@link #_focusables} in the form.
|
|
45
|
+
*/
|
|
46
|
+
private readonly _focusCycler;
|
|
47
|
+
/**
|
|
48
|
+
* Creates an instance of the {@link module:link/ui/linkpropertiesview~LinkPropertiesView} class.
|
|
49
|
+
*
|
|
50
|
+
* Also see {@link #render}.
|
|
51
|
+
*
|
|
52
|
+
* @param locale The localization services instance.
|
|
53
|
+
*/
|
|
54
|
+
constructor(locale: Locale);
|
|
55
|
+
/**
|
|
56
|
+
* @inheritDoc
|
|
57
|
+
*/
|
|
58
|
+
render(): void;
|
|
59
|
+
/**
|
|
60
|
+
* @inheritDoc
|
|
61
|
+
*/
|
|
62
|
+
destroy(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Focuses the fist {@link #_focusables} in the form.
|
|
65
|
+
*/
|
|
66
|
+
focus(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Creates a back button view.
|
|
69
|
+
*/
|
|
70
|
+
private _createBackButton;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a header view for the form.
|
|
73
|
+
*/
|
|
74
|
+
private _createHeaderView;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a form view that displays the {@link #listChildren} collection.
|
|
77
|
+
*/
|
|
78
|
+
private _createListView;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Fired when the {@link ~LinkPropertiesView#backButtonView} is pressed.
|
|
82
|
+
*
|
|
83
|
+
* @eventName ~LinkPropertiesView#back
|
|
84
|
+
*/
|
|
85
|
+
export type BackEvent = {
|
|
86
|
+
name: 'back';
|
|
87
|
+
args: [];
|
|
88
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module link/ui/linkpropertiesview
|
|
7
|
+
*/
|
|
8
|
+
import { ButtonView, FocusCycler, FormHeaderView, View, ViewCollection, ListView, ListItemView } from 'ckeditor5/src/ui.js';
|
|
9
|
+
import { FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils.js';
|
|
10
|
+
import { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';
|
|
11
|
+
import '../../theme/linkproperties.css';
|
|
12
|
+
/**
|
|
13
|
+
* The link properties view controller class.
|
|
14
|
+
*
|
|
15
|
+
* See {@link module:link/ui/linkpropertiesview~LinkPropertiesView}.
|
|
16
|
+
*/
|
|
17
|
+
export default class LinkPropertiesView extends View {
|
|
18
|
+
/**
|
|
19
|
+
* Tracks information about DOM focus in the form.
|
|
20
|
+
*/
|
|
21
|
+
focusTracker = new FocusTracker();
|
|
22
|
+
/**
|
|
23
|
+
* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
|
|
24
|
+
*/
|
|
25
|
+
keystrokes = new KeystrokeHandler();
|
|
26
|
+
/**
|
|
27
|
+
* The Back button view displayed in the header.
|
|
28
|
+
*/
|
|
29
|
+
backButtonView;
|
|
30
|
+
/**
|
|
31
|
+
* A collection of child views.
|
|
32
|
+
*/
|
|
33
|
+
children;
|
|
34
|
+
/**
|
|
35
|
+
* A collection of {@link module:ui/button/switchbuttonview~SwitchButtonView},
|
|
36
|
+
* which corresponds to {@link module:link/linkcommand~LinkCommand#manualDecorators manual decorators}
|
|
37
|
+
* configured in the editor.
|
|
38
|
+
*/
|
|
39
|
+
listChildren;
|
|
40
|
+
/**
|
|
41
|
+
* A collection of views that can be focused in the form.
|
|
42
|
+
*/
|
|
43
|
+
_focusables = new ViewCollection();
|
|
44
|
+
/**
|
|
45
|
+
* Helps cycling over {@link #_focusables} in the form.
|
|
46
|
+
*/
|
|
47
|
+
_focusCycler;
|
|
48
|
+
/**
|
|
49
|
+
* Creates an instance of the {@link module:link/ui/linkpropertiesview~LinkPropertiesView} class.
|
|
50
|
+
*
|
|
51
|
+
* Also see {@link #render}.
|
|
52
|
+
*
|
|
53
|
+
* @param locale The localization services instance.
|
|
54
|
+
*/
|
|
55
|
+
constructor(locale) {
|
|
56
|
+
super(locale);
|
|
57
|
+
this.backButtonView = this._createBackButton();
|
|
58
|
+
this.listChildren = this.createCollection();
|
|
59
|
+
this.children = this.createCollection([
|
|
60
|
+
this._createHeaderView(),
|
|
61
|
+
this._createListView()
|
|
62
|
+
]);
|
|
63
|
+
this._focusCycler = new FocusCycler({
|
|
64
|
+
focusables: this._focusables,
|
|
65
|
+
focusTracker: this.focusTracker,
|
|
66
|
+
keystrokeHandler: this.keystrokes,
|
|
67
|
+
actions: {
|
|
68
|
+
// Navigate form fields backwards using the Shift + Tab keystroke.
|
|
69
|
+
focusPrevious: 'shift + tab',
|
|
70
|
+
// Navigate form fields forwards using the Tab key.
|
|
71
|
+
focusNext: 'tab'
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
this.setTemplate({
|
|
75
|
+
tag: 'div',
|
|
76
|
+
attributes: {
|
|
77
|
+
class: [
|
|
78
|
+
'ck',
|
|
79
|
+
'ck-link-properties'
|
|
80
|
+
],
|
|
81
|
+
// https://github.com/ckeditor/ckeditor5-link/issues/90
|
|
82
|
+
tabindex: '-1'
|
|
83
|
+
},
|
|
84
|
+
children: this.children
|
|
85
|
+
});
|
|
86
|
+
// Close the panel on esc key press when the **form has focus**.
|
|
87
|
+
this.keystrokes.set('Esc', (data, cancel) => {
|
|
88
|
+
this.fire('back');
|
|
89
|
+
cancel();
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @inheritDoc
|
|
94
|
+
*/
|
|
95
|
+
render() {
|
|
96
|
+
super.render();
|
|
97
|
+
const childViews = [
|
|
98
|
+
...this.listChildren,
|
|
99
|
+
this.backButtonView
|
|
100
|
+
];
|
|
101
|
+
childViews.forEach(v => {
|
|
102
|
+
// Register the view as focusable.
|
|
103
|
+
this._focusables.add(v);
|
|
104
|
+
// Register the view in the focus tracker.
|
|
105
|
+
this.focusTracker.add(v.element);
|
|
106
|
+
});
|
|
107
|
+
// Start listening for the keystrokes coming from #element.
|
|
108
|
+
this.keystrokes.listenTo(this.element);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @inheritDoc
|
|
112
|
+
*/
|
|
113
|
+
destroy() {
|
|
114
|
+
super.destroy();
|
|
115
|
+
this.focusTracker.destroy();
|
|
116
|
+
this.keystrokes.destroy();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Focuses the fist {@link #_focusables} in the form.
|
|
120
|
+
*/
|
|
121
|
+
focus() {
|
|
122
|
+
this._focusCycler.focusFirst();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Creates a back button view.
|
|
126
|
+
*/
|
|
127
|
+
_createBackButton() {
|
|
128
|
+
const t = this.locale.t;
|
|
129
|
+
const backButton = new ButtonView(this.locale);
|
|
130
|
+
// TODO: maybe we should have a dedicated BackButtonView in the UI library.
|
|
131
|
+
backButton.set({
|
|
132
|
+
class: 'ck-button-back',
|
|
133
|
+
label: t('Back'),
|
|
134
|
+
icon: IconPreviousArrow,
|
|
135
|
+
tooltip: true
|
|
136
|
+
});
|
|
137
|
+
backButton.delegate('execute').to(this, 'back');
|
|
138
|
+
return backButton;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates a header view for the form.
|
|
142
|
+
*/
|
|
143
|
+
_createHeaderView() {
|
|
144
|
+
const t = this.locale.t;
|
|
145
|
+
const header = new FormHeaderView(this.locale, {
|
|
146
|
+
label: t('Link properties')
|
|
147
|
+
});
|
|
148
|
+
header.children.add(this.backButtonView, 0);
|
|
149
|
+
return header;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Creates a form view that displays the {@link #listChildren} collection.
|
|
153
|
+
*/
|
|
154
|
+
_createListView() {
|
|
155
|
+
const listView = new ListView(this.locale);
|
|
156
|
+
listView.extendTemplate({
|
|
157
|
+
attributes: {
|
|
158
|
+
class: [
|
|
159
|
+
'ck-link__list'
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
listView.items.bindTo(this.listChildren).using(item => {
|
|
164
|
+
const listItemView = new ListItemView(this.locale);
|
|
165
|
+
listItemView.children.add(item);
|
|
166
|
+
return listItemView;
|
|
167
|
+
});
|
|
168
|
+
return listView;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module link/ui/linkprovideritemsview
|
|
7
|
+
*/
|
|
8
|
+
import { ButtonView, View, ListView, ViewCollection } from 'ckeditor5/src/ui.js';
|
|
9
|
+
import { FocusTracker, KeystrokeHandler, type Locale } from 'ckeditor5/src/utils.js';
|
|
10
|
+
import '../../theme/linkprovideritems.css';
|
|
11
|
+
/**
|
|
12
|
+
* The link provider items view.
|
|
13
|
+
*/
|
|
14
|
+
export default class LinkProviderItemsView extends View {
|
|
15
|
+
/**
|
|
16
|
+
* Tracks information about the list of links.
|
|
17
|
+
*
|
|
18
|
+
* @observable
|
|
19
|
+
*/
|
|
20
|
+
hasItems: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* The header label of the view.
|
|
23
|
+
*
|
|
24
|
+
* @observable
|
|
25
|
+
*/
|
|
26
|
+
title: string;
|
|
27
|
+
/**
|
|
28
|
+
* The text displayed when no links are available.
|
|
29
|
+
*
|
|
30
|
+
* @observable
|
|
31
|
+
*/
|
|
32
|
+
emptyListPlaceholder: string;
|
|
33
|
+
/**
|
|
34
|
+
* Tracks information about DOM focus in the form.
|
|
35
|
+
*/
|
|
36
|
+
readonly focusTracker: FocusTracker;
|
|
37
|
+
/**
|
|
38
|
+
* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
|
|
39
|
+
*/
|
|
40
|
+
readonly keystrokes: KeystrokeHandler;
|
|
41
|
+
/**
|
|
42
|
+
* The Back button view displayed in the header.
|
|
43
|
+
*/
|
|
44
|
+
backButtonView: ButtonView;
|
|
45
|
+
/**
|
|
46
|
+
* The List view of links buttons.
|
|
47
|
+
*/
|
|
48
|
+
listView: ListView;
|
|
49
|
+
/**
|
|
50
|
+
* The collection of child views, which is bind with the `listView`.
|
|
51
|
+
*/
|
|
52
|
+
readonly listChildren: ViewCollection<ButtonView>;
|
|
53
|
+
/**
|
|
54
|
+
* The view displayed when the list is empty.
|
|
55
|
+
*/
|
|
56
|
+
emptyListInformation: View;
|
|
57
|
+
/**
|
|
58
|
+
* A collection of child views.
|
|
59
|
+
*/
|
|
60
|
+
children: ViewCollection;
|
|
61
|
+
/**
|
|
62
|
+
* A collection of views that can be focused in the form.
|
|
63
|
+
*/
|
|
64
|
+
private readonly _focusables;
|
|
65
|
+
/**
|
|
66
|
+
* Helps cycling over {@link #_focusables} in the form.
|
|
67
|
+
*/
|
|
68
|
+
private readonly _focusCycler;
|
|
69
|
+
/**
|
|
70
|
+
* Creates an instance of the {@link module:link/ui/linkprovideritemsview~LinkProviderItemsView} class.
|
|
71
|
+
*
|
|
72
|
+
* Also see {@link #render}.
|
|
73
|
+
*
|
|
74
|
+
* @param locale The localization services instance.
|
|
75
|
+
*/
|
|
76
|
+
constructor(locale: Locale);
|
|
77
|
+
/**
|
|
78
|
+
* @inheritDoc
|
|
79
|
+
*/
|
|
80
|
+
render(): void;
|
|
81
|
+
/**
|
|
82
|
+
* @inheritDoc
|
|
83
|
+
*/
|
|
84
|
+
destroy(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Focuses the fist {@link #_focusables} in the form.
|
|
87
|
+
*/
|
|
88
|
+
focus(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Creates a view for the list at the bottom.
|
|
91
|
+
*/
|
|
92
|
+
private _createListView;
|
|
93
|
+
/**
|
|
94
|
+
* Creates a back button view that cancels the form.
|
|
95
|
+
*/
|
|
96
|
+
private _createBackButton;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a header view for the form.
|
|
99
|
+
*/
|
|
100
|
+
private _createHeaderView;
|
|
101
|
+
/**
|
|
102
|
+
* Creates an info view for an empty list.
|
|
103
|
+
*/
|
|
104
|
+
private _createEmptyLinksListItemView;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Fired when the links view is canceled, for example with a click on {@link ~LinkProviderItemsView#backButtonView}.
|
|
108
|
+
*
|
|
109
|
+
* @eventName ~LinkProviderItemsView#cancel
|
|
110
|
+
*/
|
|
111
|
+
export type CancelEvent = {
|
|
112
|
+
name: 'cancel';
|
|
113
|
+
args: [];
|
|
114
|
+
};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module link/ui/linkprovideritemsview
|
|
7
|
+
*/
|
|
8
|
+
import { ButtonView, FocusCycler, FormHeaderView, View, ListView, ListItemView, ViewCollection } from 'ckeditor5/src/ui.js';
|
|
9
|
+
import { FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils.js';
|
|
10
|
+
import { IconPreviousArrow } from '@ckeditor/ckeditor5-icons';
|
|
11
|
+
import '../../theme/linkprovideritems.css';
|
|
12
|
+
/**
|
|
13
|
+
* The link provider items view.
|
|
14
|
+
*/
|
|
15
|
+
export default class LinkProviderItemsView extends View {
|
|
16
|
+
/**
|
|
17
|
+
* Tracks information about DOM focus in the form.
|
|
18
|
+
*/
|
|
19
|
+
focusTracker = new FocusTracker();
|
|
20
|
+
/**
|
|
21
|
+
* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
|
|
22
|
+
*/
|
|
23
|
+
keystrokes = new KeystrokeHandler();
|
|
24
|
+
/**
|
|
25
|
+
* The Back button view displayed in the header.
|
|
26
|
+
*/
|
|
27
|
+
backButtonView;
|
|
28
|
+
/**
|
|
29
|
+
* The List view of links buttons.
|
|
30
|
+
*/
|
|
31
|
+
listView;
|
|
32
|
+
/**
|
|
33
|
+
* The collection of child views, which is bind with the `listView`.
|
|
34
|
+
*/
|
|
35
|
+
listChildren;
|
|
36
|
+
/**
|
|
37
|
+
* The view displayed when the list is empty.
|
|
38
|
+
*/
|
|
39
|
+
emptyListInformation;
|
|
40
|
+
/**
|
|
41
|
+
* A collection of child views.
|
|
42
|
+
*/
|
|
43
|
+
children;
|
|
44
|
+
/**
|
|
45
|
+
* A collection of views that can be focused in the form.
|
|
46
|
+
*/
|
|
47
|
+
_focusables = new ViewCollection();
|
|
48
|
+
/**
|
|
49
|
+
* Helps cycling over {@link #_focusables} in the form.
|
|
50
|
+
*/
|
|
51
|
+
_focusCycler;
|
|
52
|
+
/**
|
|
53
|
+
* Creates an instance of the {@link module:link/ui/linkprovideritemsview~LinkProviderItemsView} class.
|
|
54
|
+
*
|
|
55
|
+
* Also see {@link #render}.
|
|
56
|
+
*
|
|
57
|
+
* @param locale The localization services instance.
|
|
58
|
+
*/
|
|
59
|
+
constructor(locale) {
|
|
60
|
+
super(locale);
|
|
61
|
+
this.listChildren = this.createCollection();
|
|
62
|
+
this.backButtonView = this._createBackButton();
|
|
63
|
+
this.listView = this._createListView();
|
|
64
|
+
this.emptyListInformation = this._createEmptyLinksListItemView();
|
|
65
|
+
this.children = this.createCollection([
|
|
66
|
+
this._createHeaderView(),
|
|
67
|
+
this.emptyListInformation
|
|
68
|
+
]);
|
|
69
|
+
this.set('title', '');
|
|
70
|
+
this.set('emptyListPlaceholder', '');
|
|
71
|
+
this.set('hasItems', false);
|
|
72
|
+
this.listenTo(this.listChildren, 'change', () => {
|
|
73
|
+
this.hasItems = this.listChildren.length > 0;
|
|
74
|
+
});
|
|
75
|
+
this.on('change:hasItems', (evt, propName, hasItems) => {
|
|
76
|
+
if (hasItems) {
|
|
77
|
+
this.children.remove(this.emptyListInformation);
|
|
78
|
+
this.children.add(this.listView);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.children.remove(this.listView);
|
|
82
|
+
this.children.add(this.emptyListInformation);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// Close the panel on esc key press when the **form has focus**.
|
|
86
|
+
this.keystrokes.set('Esc', (data, cancel) => {
|
|
87
|
+
this.fire('cancel');
|
|
88
|
+
cancel();
|
|
89
|
+
});
|
|
90
|
+
this._focusCycler = new FocusCycler({
|
|
91
|
+
focusables: this._focusables,
|
|
92
|
+
focusTracker: this.focusTracker,
|
|
93
|
+
keystrokeHandler: this.keystrokes,
|
|
94
|
+
actions: {
|
|
95
|
+
// Navigate form fields backwards using the Shift + Tab keystroke.
|
|
96
|
+
focusPrevious: 'shift + tab',
|
|
97
|
+
// Navigate form fields forwards using the Tab key.
|
|
98
|
+
focusNext: 'tab'
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
this.setTemplate({
|
|
102
|
+
tag: 'div',
|
|
103
|
+
attributes: {
|
|
104
|
+
class: [
|
|
105
|
+
'ck',
|
|
106
|
+
'ck-link-providers'
|
|
107
|
+
],
|
|
108
|
+
// https://github.com/ckeditor/ckeditor5-link/issues/90
|
|
109
|
+
tabindex: '-1'
|
|
110
|
+
},
|
|
111
|
+
children: this.children
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* @inheritDoc
|
|
116
|
+
*/
|
|
117
|
+
render() {
|
|
118
|
+
super.render();
|
|
119
|
+
const childViews = [
|
|
120
|
+
this.listView,
|
|
121
|
+
this.backButtonView
|
|
122
|
+
];
|
|
123
|
+
childViews.forEach(v => {
|
|
124
|
+
// Register the view as focusable.
|
|
125
|
+
this._focusables.add(v);
|
|
126
|
+
// Register the view in the focus tracker.
|
|
127
|
+
this.focusTracker.add(v.element);
|
|
128
|
+
});
|
|
129
|
+
// Start listening for the keystrokes coming from #element.
|
|
130
|
+
this.keystrokes.listenTo(this.element);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @inheritDoc
|
|
134
|
+
*/
|
|
135
|
+
destroy() {
|
|
136
|
+
super.destroy();
|
|
137
|
+
this.focusTracker.destroy();
|
|
138
|
+
this.keystrokes.destroy();
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Focuses the fist {@link #_focusables} in the form.
|
|
142
|
+
*/
|
|
143
|
+
focus() {
|
|
144
|
+
this._focusCycler.focusFirst();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Creates a view for the list at the bottom.
|
|
148
|
+
*/
|
|
149
|
+
_createListView() {
|
|
150
|
+
const listView = new ListView(this.locale);
|
|
151
|
+
listView.extendTemplate({
|
|
152
|
+
attributes: {
|
|
153
|
+
class: [
|
|
154
|
+
'ck-link-providers__list'
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
listView.items.bindTo(this.listChildren).using(button => {
|
|
159
|
+
const listItemView = new ListItemView(this.locale);
|
|
160
|
+
listItemView.children.add(button);
|
|
161
|
+
return listItemView;
|
|
162
|
+
});
|
|
163
|
+
return listView;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Creates a back button view that cancels the form.
|
|
167
|
+
*/
|
|
168
|
+
_createBackButton() {
|
|
169
|
+
const t = this.locale.t;
|
|
170
|
+
const backButton = new ButtonView(this.locale);
|
|
171
|
+
backButton.set({
|
|
172
|
+
class: 'ck-button-back',
|
|
173
|
+
label: t('Back'),
|
|
174
|
+
icon: IconPreviousArrow,
|
|
175
|
+
tooltip: true
|
|
176
|
+
});
|
|
177
|
+
backButton.delegate('execute').to(this, 'cancel');
|
|
178
|
+
return backButton;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Creates a header view for the form.
|
|
182
|
+
*/
|
|
183
|
+
_createHeaderView() {
|
|
184
|
+
const header = new FormHeaderView(this.locale);
|
|
185
|
+
header.bind('label').to(this, 'title');
|
|
186
|
+
header.children.add(this.backButtonView, 0);
|
|
187
|
+
return header;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Creates an info view for an empty list.
|
|
191
|
+
*/
|
|
192
|
+
_createEmptyLinksListItemView() {
|
|
193
|
+
const view = new View(this.locale);
|
|
194
|
+
view.setTemplate({
|
|
195
|
+
tag: 'p',
|
|
196
|
+
attributes: {
|
|
197
|
+
class: ['ck', 'ck-link__empty-list-info']
|
|
198
|
+
},
|
|
199
|
+
children: [
|
|
200
|
+
{
|
|
201
|
+
text: this.bindTemplate.to('emptyListPlaceholder')
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
});
|
|
205
|
+
return view;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -11,13 +11,11 @@ import { toMap } from 'ckeditor5/src/utils.js';
|
|
|
11
11
|
* the {@link module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToElement downcast dispatchers} for them.
|
|
12
12
|
*/
|
|
13
13
|
export default class AutomaticDecorators {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this._definitions = new Set();
|
|
20
|
-
}
|
|
14
|
+
/**
|
|
15
|
+
* Stores the definition of {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition automatic decorators}.
|
|
16
|
+
* This data is used as a source for a downcast dispatcher to create a proper conversion to output data.
|
|
17
|
+
*/
|
|
18
|
+
_definitions = new Set();
|
|
21
19
|
/**
|
|
22
20
|
* Gives information about the number of decorators stored in the {@link module:link/utils/automaticdecorators~AutomaticDecorators}
|
|
23
21
|
* instance.
|
|
@@ -12,6 +12,33 @@ import { ObservableMixin } from 'ckeditor5/src/utils.js';
|
|
|
12
12
|
* These decorators are kept as collections in {@link module:link/linkcommand~LinkCommand#manualDecorators}.
|
|
13
13
|
*/
|
|
14
14
|
export default class ManualDecorator extends /* #__PURE__ */ ObservableMixin() {
|
|
15
|
+
/**
|
|
16
|
+
* An ID of a manual decorator which is the name of the attribute in the model, for example: 'linkManualDecorator0'.
|
|
17
|
+
*/
|
|
18
|
+
id;
|
|
19
|
+
/**
|
|
20
|
+
* The default value of manual decorator.
|
|
21
|
+
*/
|
|
22
|
+
defaultValue;
|
|
23
|
+
/**
|
|
24
|
+
* The label used in the user interface to toggle the manual decorator.
|
|
25
|
+
*/
|
|
26
|
+
label;
|
|
27
|
+
/**
|
|
28
|
+
* A set of attributes added to downcasted data when the decorator is activated for a specific link.
|
|
29
|
+
* Attributes should be added in a form of attributes defined in {@link module:engine/view/elementdefinition~ElementDefinition}.
|
|
30
|
+
*/
|
|
31
|
+
attributes;
|
|
32
|
+
/**
|
|
33
|
+
* A set of classes added to downcasted data when the decorator is activated for a specific link.
|
|
34
|
+
* Classes should be added in a form of classes defined in {@link module:engine/view/elementdefinition~ElementDefinition}.
|
|
35
|
+
*/
|
|
36
|
+
classes;
|
|
37
|
+
/**
|
|
38
|
+
* A set of styles added to downcasted data when the decorator is activated for a specific link.
|
|
39
|
+
* Styles should be added in a form of styles defined in {@link module:engine/view/elementdefinition~ElementDefinition}.
|
|
40
|
+
*/
|
|
41
|
+
styles;
|
|
15
42
|
/**
|
|
16
43
|
* Creates a new instance of {@link module:link/utils/manualdecorator~ManualDecorator}.
|
|
17
44
|
*
|
package/src/utils.d.ts
CHANGED
|
@@ -5,11 +5,9 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @module link/utils
|
|
7
7
|
*/
|
|
8
|
-
import type { DowncastConversionApi, Element, Schema, ViewAttributeElement, ViewNode, ViewDocumentFragment } from 'ckeditor5/src/engine.js';
|
|
9
|
-
import type { Editor } from 'ckeditor5/src/core.js';
|
|
8
|
+
import type { DowncastConversionApi, Element, Schema, ViewAttributeElement, ViewNode, ViewDocumentFragment, Range } from 'ckeditor5/src/engine.js';
|
|
10
9
|
import type { LocaleTranslate } from 'ckeditor5/src/utils.js';
|
|
11
10
|
import type { LinkDecoratorAutomaticDefinition, LinkDecoratorDefinition, LinkDecoratorManualDefinition } from './linkconfig.js';
|
|
12
|
-
import type { LinkActionsViewOptions } from './ui/linkactionsview.js';
|
|
13
11
|
/**
|
|
14
12
|
* A keystroke used by the {@link module:link/linkui~LinkUI link UI feature}.
|
|
15
13
|
*/
|
|
@@ -74,9 +72,11 @@ export declare function linkHasProtocol(link: string): boolean;
|
|
|
74
72
|
*/
|
|
75
73
|
export declare function openLink(link: string): void;
|
|
76
74
|
/**
|
|
77
|
-
*
|
|
75
|
+
* Returns a text of a link range.
|
|
76
|
+
*
|
|
77
|
+
* If the returned value is `undefined`, the range contains elements other than text nodes.
|
|
78
78
|
*/
|
|
79
|
-
export declare function
|
|
79
|
+
export declare function extractTextFromLinkRange(range: Range): string | undefined;
|
|
80
80
|
export type NormalizedLinkDecoratorAutomaticDefinition = LinkDecoratorAutomaticDefinition & {
|
|
81
81
|
id: string;
|
|
82
82
|
};
|