@ckeditor/ckeditor5-bookmark 0.0.0-nightly-20241025.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE.md +17 -0
  3. package/README.md +26 -0
  4. package/build/bookmark.js +4 -0
  5. package/ckeditor5-metadata.json +24 -0
  6. package/dist/augmentation.d.ts +28 -0
  7. package/dist/bookmark.d.ts +34 -0
  8. package/dist/bookmarkconfig.d.ts +52 -0
  9. package/dist/bookmarkediting.d.ts +55 -0
  10. package/dist/bookmarkui.d.ts +170 -0
  11. package/dist/index-content.css +4 -0
  12. package/dist/index-editor.css +150 -0
  13. package/dist/index.css +195 -0
  14. package/dist/index.css.map +1 -0
  15. package/dist/index.d.ts +18 -0
  16. package/dist/index.js +1322 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/insertbookmarkcommand.d.ts +42 -0
  19. package/dist/ui/bookmarkactionsview.d.ts +106 -0
  20. package/dist/ui/bookmarkformview.d.ts +122 -0
  21. package/dist/updatebookmarkcommand.d.ts +46 -0
  22. package/dist/utils.d.ts +15 -0
  23. package/lang/contexts.json +13 -0
  24. package/package.json +43 -0
  25. package/src/augmentation.d.ts +24 -0
  26. package/src/augmentation.js +5 -0
  27. package/src/bookmark.d.ts +30 -0
  28. package/src/bookmark.js +36 -0
  29. package/src/bookmarkconfig.d.ts +48 -0
  30. package/src/bookmarkconfig.js +5 -0
  31. package/src/bookmarkediting.d.ts +51 -0
  32. package/src/bookmarkediting.js +212 -0
  33. package/src/bookmarkui.d.ts +166 -0
  34. package/src/bookmarkui.js +583 -0
  35. package/src/index.d.ts +14 -0
  36. package/src/index.js +13 -0
  37. package/src/insertbookmarkcommand.d.ts +38 -0
  38. package/src/insertbookmarkcommand.js +113 -0
  39. package/src/ui/bookmarkactionsview.d.ts +102 -0
  40. package/src/ui/bookmarkactionsview.js +154 -0
  41. package/src/ui/bookmarkformview.d.ts +118 -0
  42. package/src/ui/bookmarkformview.js +203 -0
  43. package/src/updatebookmarkcommand.d.ts +42 -0
  44. package/src/updatebookmarkcommand.js +75 -0
  45. package/src/utils.d.ts +11 -0
  46. package/src/utils.js +19 -0
  47. package/theme/bookmark.css +50 -0
  48. package/theme/bookmarkactions.css +44 -0
  49. package/theme/bookmarkform.css +42 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module bookmark/updatebookmarkcommand
7
+ */
8
+ import { Command } from 'ckeditor5/src/core.js';
9
+ /**
10
+ * The update bookmark command.
11
+ *
12
+ * The command is registered by {@link module:bookmark/bookmarkediting~BookmarkEditing} as `'updateBookmark'`.
13
+ *
14
+ * To update the `bookmarkId` of current selected bookmark element, execute the command passing the bookmark id as a parameter:
15
+ *
16
+ * ```ts
17
+ * editor.execute( 'updateBookmark', { bookmarkId: 'newId' } );
18
+ * ```
19
+ */
20
+ export default class UpdateBookmarkCommand extends Command {
21
+ /**
22
+ * The value of the `'bookmarkId'` attribute.
23
+ *
24
+ * @observable
25
+ * @readonly
26
+ */
27
+ value: string | undefined;
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ refresh(): void;
32
+ /**
33
+ * Executes the command.
34
+ *
35
+ * @fires execute
36
+ * @param options Command options.
37
+ * @param options.bookmarkId The new value of the `bookmarkId` attribute to set.
38
+ */
39
+ execute(options: {
40
+ bookmarkId: string;
41
+ }): void;
42
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module bookmark/updatebookmarkcommand
7
+ */
8
+ import { Command } from 'ckeditor5/src/core.js';
9
+ import { logWarning } from 'ckeditor5/src/utils.js';
10
+ import { isBookmarkIdValid } from './utils.js';
11
+ /**
12
+ * The update bookmark command.
13
+ *
14
+ * The command is registered by {@link module:bookmark/bookmarkediting~BookmarkEditing} as `'updateBookmark'`.
15
+ *
16
+ * To update the `bookmarkId` of current selected bookmark element, execute the command passing the bookmark id as a parameter:
17
+ *
18
+ * ```ts
19
+ * editor.execute( 'updateBookmark', { bookmarkId: 'newId' } );
20
+ * ```
21
+ */
22
+ export default class UpdateBookmarkCommand extends Command {
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ refresh() {
27
+ const model = this.editor.model;
28
+ const selection = model.document.selection;
29
+ const selectedBookmark = getSelectedBookmark(selection);
30
+ this.isEnabled = !!selectedBookmark;
31
+ this.value = selectedBookmark ? selectedBookmark.getAttribute('bookmarkId') : undefined;
32
+ }
33
+ /**
34
+ * Executes the command.
35
+ *
36
+ * @fires execute
37
+ * @param options Command options.
38
+ * @param options.bookmarkId The new value of the `bookmarkId` attribute to set.
39
+ */
40
+ execute(options) {
41
+ if (!options) {
42
+ return;
43
+ }
44
+ const { bookmarkId } = options;
45
+ if (!isBookmarkIdValid(bookmarkId)) {
46
+ /**
47
+ * Update bookmark command can be executed only with a valid name.
48
+ *
49
+ * A valid bookmark name must be a non-empty string and must not contain any spaces.
50
+ *
51
+ * @error update-bookmark-command-executed-with-invalid-name
52
+ */
53
+ logWarning('update-bookmark-command-executed-with-invalid-name');
54
+ return;
55
+ }
56
+ const model = this.editor.model;
57
+ const selection = model.document.selection;
58
+ const selectedBookmark = getSelectedBookmark(selection);
59
+ if (selectedBookmark) {
60
+ model.change(writer => {
61
+ writer.setAttribute('bookmarkId', bookmarkId, selectedBookmark);
62
+ });
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Returns the selected `bookmark` element in the model, if any.
68
+ */
69
+ function getSelectedBookmark(selection) {
70
+ const element = selection.getSelectedElement();
71
+ if (!!element && element.is('element', 'bookmark')) {
72
+ return element;
73
+ }
74
+ return null;
75
+ }
package/src/utils.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module bookmark/utils
7
+ */
8
+ /**
9
+ * Returns `true` if the bookmark id is valid; otherwise, returns `false`.
10
+ */
11
+ export declare function isBookmarkIdValid(id: string): boolean;
package/src/utils.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module bookmark/utils
7
+ */
8
+ /**
9
+ * Returns `true` if the bookmark id is valid; otherwise, returns `false`.
10
+ */
11
+ export function isBookmarkIdValid(id) {
12
+ if (!id || typeof id !== 'string') {
13
+ return false;
14
+ }
15
+ if (/\s/.test(id)) {
16
+ return false;
17
+ }
18
+ return true;
19
+ }
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+
6
+ :root {
7
+ --ck-bookmark-icon-hover-fill-color: var(--ck-color-widget-hover-border);
8
+ --ck-bookmark-icon-selected-fill-color: var(--ck-color-focus-border);
9
+ --ck-bookmark-icon-animation-duration: var(--ck-widget-handler-animation-duration);
10
+ --ck-bookmark-icon-animation-curve: var(--ck-widget-handler-animation-curve);
11
+ }
12
+
13
+ .ck-bookmark {
14
+ &.ck-widget {
15
+ outline: none;
16
+
17
+ & .ck-bookmark__icon .ck-icon__fill {
18
+ transition: fill var(--ck-bookmark-icon-animation-duration) var(--ck-bookmark-icon-animation-curve);
19
+ }
20
+
21
+ &:hover {
22
+ & .ck-bookmark__icon .ck-icon__fill {
23
+ fill: var(--ck-bookmark-icon-hover-fill-color);
24
+ }
25
+ }
26
+
27
+ &.ck-widget_selected {
28
+ .ck-bookmark__icon .ck-icon__fill {
29
+ fill: var(--ck-bookmark-icon-selected-fill-color);
30
+ }
31
+ }
32
+
33
+ &.ck-widget_selected,
34
+ &.ck-widget_selected:hover {
35
+ outline: none;
36
+ }
37
+
38
+ & .ck-bookmark__icon {
39
+ position: relative;
40
+ /* To make it align with text baseline. */
41
+ top: -0.1em;
42
+
43
+ & .ck-icon {
44
+ height: 1.2em;
45
+ width: auto;
46
+ vertical-align: middle;
47
+ }
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+
6
+ @import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";
7
+ @import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";
8
+
9
+ .ck.ck-bookmark-actions {
10
+ display: flex;
11
+ align-items: center;
12
+
13
+ & .ck-bookmark-actions__preview {
14
+ max-width: var(--ck-input-width);
15
+ min-width: 3em;
16
+ font-weight: normal;
17
+ text-overflow: ellipsis;
18
+ text-align: center;
19
+ overflow: hidden;
20
+
21
+ @mixin ck-unselectable;
22
+ cursor: default;
23
+ }
24
+
25
+ @mixin ck-media-phone {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+
29
+ & .ck-bookmark-actions__preview {
30
+ flex-basis: 100%;
31
+ margin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;
32
+ min-width: auto;
33
+ }
34
+ }
35
+
36
+ &.ck-responsive-form {
37
+ & .ck-button {
38
+ @mixin ck-media-phone {
39
+ flex-basis: 50%;
40
+ margin-top: var(--ck-spacing-standard);
41
+ }
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+
6
+ @import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";
7
+
8
+ .ck.ck-bookmark-view {
9
+ &:focus {
10
+ outline: none;
11
+ }
12
+ }
13
+
14
+ .ck.ck-bookmark-form {
15
+ display: flex;
16
+ align-items: flex-start;
17
+
18
+ @mixin ck-media-phone {
19
+ flex-wrap: wrap;
20
+
21
+ & .ck-button,
22
+ & .ck-labeled-field-view {
23
+ flex-basis: 100%;
24
+ }
25
+
26
+ & .ck-button {
27
+ justify-content: center;
28
+ }
29
+ }
30
+
31
+ &.ck-responsive-form {
32
+ & > .ck-button {
33
+ @mixin ck-media-phone {
34
+ &:nth-last-child(1) {
35
+ margin: var(--ck-spacing-large);
36
+ padding: 0 var(--ck-spacing-standard);
37
+ border-radius: var(--ck-border-radius);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }