1 | /**
|
2 | * @license Copyright (c) 2003-2023, 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 list/list/utils
|
7 | */
|
8 | import type { Editor } from 'ckeditor5/src/core';
|
9 | import { type DowncastConversionApi, type DowncastWriter, type Element, type Item, type Model, type Position, type ViewContainerElement, type ViewElement, type ViewItem, type ViewPosition } from 'ckeditor5/src/engine';
|
10 | /**
|
11 | * Creates a list item {@link module:engine/view/containerelement~ContainerElement}.
|
12 | *
|
13 | * @param writer The writer instance.
|
14 | */
|
15 | export declare function createViewListItemElement(writer: DowncastWriter): ViewContainerElement;
|
16 | /**
|
17 | * Helper function that creates a `<ul><li></li></ul>` or (`<ol>`) structure out of the given `modelItem` model `listItem` element.
|
18 | * Then, it binds the created view list item (`<li>`) with the model `listItem` element.
|
19 | * The function then returns the created view list item (`<li>`).
|
20 | *
|
21 | * @param modelItem Model list item.
|
22 | * @param conversionApi Conversion interface.
|
23 | * @returns View list element.
|
24 | */
|
25 | export declare function generateLiInUl(modelItem: Item, conversionApi: DowncastConversionApi): ViewContainerElement;
|
26 | /**
|
27 | * Helper function that inserts a view list at a correct place and merges it with its siblings.
|
28 | * It takes a model list item element (`modelItem`) and a corresponding view list item element (`injectedItem`). The view list item
|
29 | * should be in a view list element (`<ul>` or `<ol>`) and should be its only child.
|
30 | * See comments below to better understand the algorithm.
|
31 | *
|
32 | * @param modelItem Model list item.
|
33 | * @param injectedItem
|
34 | * @param conversionApi Conversion interface.
|
35 | * @param model The model instance.
|
36 | */
|
37 | export declare function injectViewList(modelItem: Element, injectedItem: ViewContainerElement, conversionApi: DowncastConversionApi, model: Model): void;
|
38 | /**
|
39 | * Helper function that takes two parameters that are expected to be view list elements, and merges them.
|
40 | * The merge happens only if both parameters are list elements of the same type (the same element name and the same class attributes).
|
41 | *
|
42 | * @param viewWriter The writer instance.
|
43 | * @param firstList The first element to compare.
|
44 | * @param secondList The second element to compare.
|
45 | * @returns The position after merge or `null` when there was no merge.
|
46 | */
|
47 | export declare function mergeViewLists(viewWriter: DowncastWriter, firstList: ViewItem, secondList: ViewItem): ViewPosition | null;
|
48 | /**
|
49 | * Helper function that for a given `view.Position`, returns a `view.Position` that is after all `view.UIElement`s that
|
50 | * are after the given position.
|
51 | *
|
52 | * For example:
|
53 | * `<container:p>foo^<ui:span></ui:span><ui:span></ui:span>bar</container:p>`
|
54 | * For position ^, the position before "bar" will be returned.
|
55 | *
|
56 | */
|
57 | export declare function positionAfterUiElements(viewPosition: ViewPosition): ViewPosition;
|
58 | /**
|
59 | * Helper function that searches for a previous list item sibling of a given model item that meets the given criteria
|
60 | * passed by the options object.
|
61 | *
|
62 | * @param options Search criteria.
|
63 | * @param options.sameIndent Whether the sought sibling should have the same indentation.
|
64 | * @param options.smallerIndent Whether the sought sibling should have a smaller indentation.
|
65 | * @param options.listIndent The reference indentation.
|
66 | * @param options.direction Walking direction.
|
67 | */
|
68 | export declare function getSiblingListItem(modelItem: Item | null, options: {
|
69 | sameIndent?: boolean;
|
70 | smallerIndent?: boolean;
|
71 | listIndent?: number;
|
72 | direction?: 'forward' | 'backward';
|
73 | }): Element | null;
|
74 | /**
|
75 | * Helper method for creating a UI button and linking it with an appropriate command.
|
76 | *
|
77 | * @internal
|
78 | * @param editor The editor instance to which the UI component will be added.
|
79 | * @param commandName The name of the command.
|
80 | * @param label The button label.
|
81 | * @param icon The source of the icon.
|
82 | */
|
83 | export declare function createUIComponent(editor: Editor, commandName: 'bulletedList' | 'numberedList' | 'todoList', label: string, icon: string): void;
|
84 | /**
|
85 | * Returns a first list view element that is direct child of the given view element.
|
86 | */
|
87 | export declare function findNestedList(viewElement: ViewElement): ViewElement | null;
|
88 | /**
|
89 | * Returns an array with all `listItem` elements that represent the same list.
|
90 | *
|
91 | * It means that values of `listIndent`, `listType`, `listStyle`, `listReversed` and `listStart` for all items are equal.
|
92 | *
|
93 | * Additionally, if the `position` is inside a list item, that list item will be returned as well.
|
94 | *
|
95 | * @param position Starting position.
|
96 | * @param direction Walking direction.
|
97 | */
|
98 | export declare function getSiblingNodes(position: Position, direction: 'forward' | 'backward'): Array<Element>;
|
99 | /**
|
100 | * Returns an array with all `listItem` elements in the model selection.
|
101 | *
|
102 | * It returns all the items even if only a part of the list is selected, including items that belong to nested lists.
|
103 | * If no list is selected, it returns an empty array.
|
104 | * The order of the elements is not specified.
|
105 | *
|
106 | * @internal
|
107 | */
|
108 | export declare function getSelectedListItems(model: Model): Array<Element>;
|
109 | /**
|
110 | * Checks whether the given list-style-type is supported by numbered or bulleted list.
|
111 | */
|
112 | export declare function getListTypeFromListStyleType(listStyleType: string): 'bulleted' | 'numbered' | null;
|