@pilotiq/tiptap 0.1.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 +21 -0
- package/README.md +67 -0
- package/dist/Block.d.ts +47 -0
- package/dist/Block.d.ts.map +1 -0
- package/dist/Block.js +56 -0
- package/dist/Block.js.map +1 -0
- package/dist/MentionProvider.d.ts +97 -0
- package/dist/MentionProvider.d.ts.map +1 -0
- package/dist/MentionProvider.js +104 -0
- package/dist/MentionProvider.js.map +1 -0
- package/dist/RichTextField.d.ts +286 -0
- package/dist/RichTextField.d.ts.map +1 -0
- package/dist/RichTextField.js +369 -0
- package/dist/RichTextField.js.map +1 -0
- package/dist/extensions/BlockNodeExtension.d.ts +41 -0
- package/dist/extensions/BlockNodeExtension.d.ts.map +1 -0
- package/dist/extensions/BlockNodeExtension.js +103 -0
- package/dist/extensions/BlockNodeExtension.js.map +1 -0
- package/dist/extensions/DragHandleExtension.d.ts +19 -0
- package/dist/extensions/DragHandleExtension.d.ts.map +1 -0
- package/dist/extensions/DragHandleExtension.js +166 -0
- package/dist/extensions/DragHandleExtension.js.map +1 -0
- package/dist/extensions/GridExtension.d.ts +49 -0
- package/dist/extensions/GridExtension.d.ts.map +1 -0
- package/dist/extensions/GridExtension.js +105 -0
- package/dist/extensions/GridExtension.js.map +1 -0
- package/dist/extensions/MentionExtension.d.ts +71 -0
- package/dist/extensions/MentionExtension.d.ts.map +1 -0
- package/dist/extensions/MentionExtension.js +165 -0
- package/dist/extensions/MentionExtension.js.map +1 -0
- package/dist/extensions/MergeTagExtension.d.ts +24 -0
- package/dist/extensions/MergeTagExtension.d.ts.map +1 -0
- package/dist/extensions/MergeTagExtension.js +57 -0
- package/dist/extensions/MergeTagExtension.js.map +1 -0
- package/dist/extensions/SlashCommandExtension.d.ts +71 -0
- package/dist/extensions/SlashCommandExtension.d.ts.map +1 -0
- package/dist/extensions/SlashCommandExtension.js +244 -0
- package/dist/extensions/SlashCommandExtension.js.map +1 -0
- package/dist/extensions/TextSizeMarks.d.ts +33 -0
- package/dist/extensions/TextSizeMarks.d.ts.map +1 -0
- package/dist/extensions/TextSizeMarks.js +47 -0
- package/dist/extensions/TextSizeMarks.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +18 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +25 -0
- package/dist/plugin.js.map +1 -0
- package/dist/react/BlockNodeView.d.ts +19 -0
- package/dist/react/BlockNodeView.d.ts.map +1 -0
- package/dist/react/BlockNodeView.js +60 -0
- package/dist/react/BlockNodeView.js.map +1 -0
- package/dist/react/BlockSidePanel.d.ts +105 -0
- package/dist/react/BlockSidePanel.d.ts.map +1 -0
- package/dist/react/BlockSidePanel.js +339 -0
- package/dist/react/BlockSidePanel.js.map +1 -0
- package/dist/react/FloatingToolbar.d.ts +13 -0
- package/dist/react/FloatingToolbar.d.ts.map +1 -0
- package/dist/react/FloatingToolbar.js +113 -0
- package/dist/react/FloatingToolbar.js.map +1 -0
- package/dist/react/MentionMenu.d.ts +26 -0
- package/dist/react/MentionMenu.d.ts.map +1 -0
- package/dist/react/MentionMenu.js +64 -0
- package/dist/react/MentionMenu.js.map +1 -0
- package/dist/react/Palette.d.ts +26 -0
- package/dist/react/Palette.d.ts.map +1 -0
- package/dist/react/Palette.js +21 -0
- package/dist/react/Palette.js.map +1 -0
- package/dist/react/SlashMenu.d.ts +24 -0
- package/dist/react/SlashMenu.d.ts.map +1 -0
- package/dist/react/SlashMenu.js +74 -0
- package/dist/react/SlashMenu.js.map +1 -0
- package/dist/react/TableFloatingToolbar.d.ts +7 -0
- package/dist/react/TableFloatingToolbar.d.ts.map +1 -0
- package/dist/react/TableFloatingToolbar.js +108 -0
- package/dist/react/TableFloatingToolbar.js.map +1 -0
- package/dist/react/TiptapEditor.d.ts +20 -0
- package/dist/react/TiptapEditor.d.ts.map +1 -0
- package/dist/react/TiptapEditor.js +398 -0
- package/dist/react/TiptapEditor.js.map +1 -0
- package/dist/react/Toolbar.d.ts +45 -0
- package/dist/react/Toolbar.d.ts.map +1 -0
- package/dist/react/Toolbar.js +204 -0
- package/dist/react/Toolbar.js.map +1 -0
- package/dist/react/toolbarButtons.d.ts +36 -0
- package/dist/react/toolbarButtons.d.ts.map +1 -0
- package/dist/react/toolbarButtons.js +300 -0
- package/dist/react/toolbarButtons.js.map +1 -0
- package/dist/register.d.ts +20 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +27 -0
- package/dist/register.js.map +1 -0
- package/dist/render.d.ts +89 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +439 -0
- package/dist/render.js.map +1 -0
- package/package.json +92 -0
- package/src/Block.ts +75 -0
- package/src/MentionProvider.ts +153 -0
- package/src/RichTextField.test.ts +447 -0
- package/src/RichTextField.ts +508 -0
- package/src/extensions/BlockNodeExtension.ts +134 -0
- package/src/extensions/DragHandleExtension.ts +184 -0
- package/src/extensions/GridExtension.test.ts +31 -0
- package/src/extensions/GridExtension.ts +138 -0
- package/src/extensions/MentionExtension.ts +248 -0
- package/src/extensions/MergeTagExtension.ts +75 -0
- package/src/extensions/SlashCommandExtension.test.ts +147 -0
- package/src/extensions/SlashCommandExtension.ts +332 -0
- package/src/extensions/TextSizeMarks.ts +73 -0
- package/src/index.ts +28 -0
- package/src/plugin.test.ts +19 -0
- package/src/plugin.ts +26 -0
- package/src/react/BlockNodeView.tsx +99 -0
- package/src/react/BlockSidePanel.test.ts +412 -0
- package/src/react/BlockSidePanel.tsx +451 -0
- package/src/react/FloatingToolbar.tsx +304 -0
- package/src/react/MentionMenu.tsx +120 -0
- package/src/react/Palette.tsx +86 -0
- package/src/react/SlashMenu.tsx +129 -0
- package/src/react/TableFloatingToolbar.tsx +154 -0
- package/src/react/TiptapEditor.tsx +535 -0
- package/src/react/Toolbar.tsx +438 -0
- package/src/react/toolbarButtons.tsx +579 -0
- package/src/register.test.ts +14 -0
- package/src/register.ts +27 -0
- package/src/render.test.ts +745 -0
- package/src/render.ts +480 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pilotiq/tiptap",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Tiptap rich-text editor adapter for @pilotiq/pilotiq — slash menu, draggable blocks, custom-block API",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/pilotiq-io/pilotiq",
|
|
9
|
+
"directory": "packages/tiptap"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://pilotiq.io",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"types": "./dist/index.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./register": {
|
|
25
|
+
"import": "./dist/register.js",
|
|
26
|
+
"types": "./dist/register.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./render": {
|
|
29
|
+
"import": "./dist/render.js",
|
|
30
|
+
"types": "./dist/render.d.ts"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@base-ui/react": "^1",
|
|
36
|
+
"@tiptap/core": "^3",
|
|
37
|
+
"@tiptap/pm": "^3",
|
|
38
|
+
"@tiptap/react": "^3",
|
|
39
|
+
"@tiptap/starter-kit": "^3",
|
|
40
|
+
"@tiptap/extension-link": "^3",
|
|
41
|
+
"@tiptap/extension-placeholder": "^3",
|
|
42
|
+
"@tiptap/extension-underline": "3.22.4",
|
|
43
|
+
"@tiptap/extension-subscript": "3.22.4",
|
|
44
|
+
"@tiptap/extension-superscript": "3.22.4",
|
|
45
|
+
"@tiptap/extension-text-align": "3.22.4",
|
|
46
|
+
"@tiptap/extension-text-style": "3.22.4",
|
|
47
|
+
"@tiptap/extension-color": "3.22.4",
|
|
48
|
+
"@tiptap/extension-highlight": "3.22.4",
|
|
49
|
+
"@tiptap/extension-image": "3.22.4",
|
|
50
|
+
"@tiptap/extension-table": "3.22.4",
|
|
51
|
+
"@tiptap/extension-details": "3.22.4",
|
|
52
|
+
"@tiptap/suggestion": "^3",
|
|
53
|
+
"react": "^18 || ^19",
|
|
54
|
+
"react-dom": "^18 || ^19",
|
|
55
|
+
"@pilotiq/pilotiq": "0.1.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@base-ui/react": "^1",
|
|
59
|
+
"@tiptap/core": "^3",
|
|
60
|
+
"@tiptap/pm": "^3",
|
|
61
|
+
"@tiptap/react": "^3",
|
|
62
|
+
"@tiptap/starter-kit": "^3",
|
|
63
|
+
"@tiptap/extension-link": "^3",
|
|
64
|
+
"@tiptap/extension-placeholder": "^3",
|
|
65
|
+
"@tiptap/extension-underline": "3.22.4",
|
|
66
|
+
"@tiptap/extension-subscript": "3.22.4",
|
|
67
|
+
"@tiptap/extension-superscript": "3.22.4",
|
|
68
|
+
"@tiptap/extension-text-align": "3.22.4",
|
|
69
|
+
"@tiptap/extension-text-style": "3.22.4",
|
|
70
|
+
"@tiptap/extension-color": "3.22.4",
|
|
71
|
+
"@tiptap/extension-highlight": "3.22.4",
|
|
72
|
+
"@tiptap/extension-image": "3.22.4",
|
|
73
|
+
"@tiptap/extension-table": "3.22.4",
|
|
74
|
+
"@tiptap/extension-details": "3.22.4",
|
|
75
|
+
"@tiptap/suggestion": "^3",
|
|
76
|
+
"@types/node": "^20",
|
|
77
|
+
"@types/react": "^19",
|
|
78
|
+
"@types/react-dom": "^19",
|
|
79
|
+
"react": "^19",
|
|
80
|
+
"react-dom": "^19",
|
|
81
|
+
"typescript": "^5",
|
|
82
|
+
"@pilotiq/pilotiq": "0.1.0"
|
|
83
|
+
},
|
|
84
|
+
"author": "Suleiman Shahbari",
|
|
85
|
+
"scripts": {
|
|
86
|
+
"build": "tsc -p tsconfig.build.json",
|
|
87
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
88
|
+
"typecheck": "tsc --noEmit",
|
|
89
|
+
"clean": "rm -rf dist",
|
|
90
|
+
"test": "tsc -p tsconfig.test.json && node --test \"dist-test/**/*.test.js\"; EXIT=$?; rm -rf dist-test; exit $EXIT"
|
|
91
|
+
}
|
|
92
|
+
}
|
package/src/Block.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Field } from '@pilotiq/pilotiq'
|
|
2
|
+
import type { FieldMeta } from '@pilotiq/pilotiq'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* JSON-serializable block descriptor sent to the editor renderer.
|
|
6
|
+
*/
|
|
7
|
+
export interface BlockMeta {
|
|
8
|
+
name: string
|
|
9
|
+
label: string
|
|
10
|
+
icon: string | undefined
|
|
11
|
+
schema: FieldMeta[]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Builder for a custom block type that can be inserted into a `RichTextField`
|
|
16
|
+
* via the slash menu and rendered inline as an editable form.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* Block.make('callout')
|
|
21
|
+
* .label('Callout')
|
|
22
|
+
* .icon('💡')
|
|
23
|
+
* .schema([
|
|
24
|
+
* TextField.make('title'),
|
|
25
|
+
* TextareaField.make('content').required(),
|
|
26
|
+
* ])
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class Block {
|
|
30
|
+
private _name: string
|
|
31
|
+
private _label?: string
|
|
32
|
+
private _icon?: string
|
|
33
|
+
private _schema: Field[] = []
|
|
34
|
+
|
|
35
|
+
protected constructor(name: string) {
|
|
36
|
+
this._name = name
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static make(name: string): Block {
|
|
40
|
+
return new Block(name)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Display label shown in the slash menu. Defaults to the block name. */
|
|
44
|
+
label(label: string): this {
|
|
45
|
+
this._label = label
|
|
46
|
+
return this
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Emoji or icon string shown in the slash menu. */
|
|
50
|
+
icon(icon: string): this {
|
|
51
|
+
this._icon = icon
|
|
52
|
+
return this
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Fields rendered inline when this block is inserted. */
|
|
56
|
+
schema(fields: Field[]): this {
|
|
57
|
+
this._schema = fields
|
|
58
|
+
return this
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
getName(): string { return this._name }
|
|
62
|
+
getLabel(): string { return this._label ?? this._name }
|
|
63
|
+
getIcon(): string | undefined { return this._icon }
|
|
64
|
+
getSchema(): readonly Field[] { return this._schema }
|
|
65
|
+
|
|
66
|
+
/** @internal */
|
|
67
|
+
toMeta(): BlockMeta {
|
|
68
|
+
return {
|
|
69
|
+
name: this._name,
|
|
70
|
+
label: this._label ?? this._name,
|
|
71
|
+
icon: this._icon,
|
|
72
|
+
schema: this._schema.map((f) => f.toMeta() as FieldMeta),
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static menu item surfaced by a {@link MentionProvider}. `id` is the wire
|
|
3
|
+
* identifier that survives serialization; `label` is what the editor shows
|
|
4
|
+
* after the trigger char (`@Sleman`). `group` is purely cosmetic — the menu
|
|
5
|
+
* uses it to bucket items under headings.
|
|
6
|
+
*/
|
|
7
|
+
export interface MentionItem {
|
|
8
|
+
id: string
|
|
9
|
+
label: string
|
|
10
|
+
group?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Wire-side shape of a {@link MentionProvider}. */
|
|
14
|
+
export interface MentionProviderMeta {
|
|
15
|
+
trigger: string
|
|
16
|
+
items: MentionItem[]
|
|
17
|
+
/** Set when the provider is backed by an `itemsUsing(fn)` resolver — the
|
|
18
|
+
* client fetches items from the field's `mentionsUrl` instead of using
|
|
19
|
+
* the (empty) inlined list. */
|
|
20
|
+
async?: boolean
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Context handed to `MentionProvider.itemsUsing(fn)` resolvers. Mirrors the
|
|
25
|
+
* subset of {@link RenderContext} the route handler can re-derive at request
|
|
26
|
+
* time — `user` from `Pilotiq.user(req=>…)`, `record` for edit-mode forms,
|
|
27
|
+
* and the raw `request` for adapters that need cookie / header access.
|
|
28
|
+
*/
|
|
29
|
+
export interface MentionResolverContext {
|
|
30
|
+
user?: unknown
|
|
31
|
+
record?: unknown
|
|
32
|
+
request?: unknown
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type MentionItemsResolver = (
|
|
36
|
+
query: string,
|
|
37
|
+
ctx: MentionResolverContext,
|
|
38
|
+
) => MentionItem[] | Promise<MentionItem[]>
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Builder for a single mention provider — the trigger character (`@` /
|
|
42
|
+
* `#` / …) and the items the popover offers when the user types it.
|
|
43
|
+
*
|
|
44
|
+
* Two shapes:
|
|
45
|
+
* - `MentionProvider.make('@').items([...])` — static items declared at
|
|
46
|
+
* form-build time, inlined into the field meta.
|
|
47
|
+
* - `MentionProvider.make('@').itemsUsing(async (query, ctx) => […])` —
|
|
48
|
+
* async resolver. The client fetches every keystroke; the server runs
|
|
49
|
+
* the user fn and returns the matched items. `items` and `itemsUsing`
|
|
50
|
+
* are mutually exclusive — last call wins, with a warning when both
|
|
51
|
+
* have been set.
|
|
52
|
+
*
|
|
53
|
+
* Read-time label resolution still works through `renderRichTextToHtml(
|
|
54
|
+
* content, { resolveMention })` for cases where the cached label has gone
|
|
55
|
+
* stale.
|
|
56
|
+
*
|
|
57
|
+
* @example Static items
|
|
58
|
+
* ```ts
|
|
59
|
+
* MentionProvider.make('@').items([
|
|
60
|
+
* { id: 'sleman', label: 'Sleman' },
|
|
61
|
+
* { id: 'alex', label: 'Alex' },
|
|
62
|
+
* ])
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example Async items
|
|
66
|
+
* ```ts
|
|
67
|
+
* MentionProvider.make('@').itemsUsing(async (query) => {
|
|
68
|
+
* const users = await db.users.search(query, { limit: 10 })
|
|
69
|
+
* return users.map(u => ({ id: u.id, label: u.name }))
|
|
70
|
+
* })
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export class MentionProvider {
|
|
74
|
+
private _trigger: string
|
|
75
|
+
private _items: MentionItem[] = []
|
|
76
|
+
private _itemsUsing?: MentionItemsResolver
|
|
77
|
+
|
|
78
|
+
protected constructor(trigger: string) {
|
|
79
|
+
if (typeof trigger !== 'string' || trigger.length !== 1) {
|
|
80
|
+
throw new Error(`MentionProvider trigger must be a single character (got ${JSON.stringify(trigger)})`)
|
|
81
|
+
}
|
|
82
|
+
this._trigger = trigger
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
static make(trigger: string): MentionProvider {
|
|
86
|
+
return new MentionProvider(trigger)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Replace the static item list. Mutually exclusive with `itemsUsing()`. */
|
|
90
|
+
items(items: MentionItem[]): this {
|
|
91
|
+
if (this._itemsUsing !== undefined) {
|
|
92
|
+
console.warn(
|
|
93
|
+
`[pilotiq/tiptap] MentionProvider('${this._trigger}'): items() called after ` +
|
|
94
|
+
`itemsUsing(). The static list now wins; clear itemsUsing first to avoid surprise.`,
|
|
95
|
+
)
|
|
96
|
+
delete this._itemsUsing
|
|
97
|
+
}
|
|
98
|
+
this._items = items
|
|
99
|
+
return this
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Install an async resolver. Called every keystroke with the current
|
|
104
|
+
* query (the text after the trigger char) and a `MentionResolverContext`.
|
|
105
|
+
*
|
|
106
|
+
* Mutually exclusive with `items()` — the last call wins; a warning fires
|
|
107
|
+
* when the previously-set static items are dropped silently.
|
|
108
|
+
*/
|
|
109
|
+
itemsUsing(fn: MentionItemsResolver): this {
|
|
110
|
+
if (this._items.length > 0) {
|
|
111
|
+
console.warn(
|
|
112
|
+
`[pilotiq/tiptap] MentionProvider('${this._trigger}'): itemsUsing() called after ` +
|
|
113
|
+
`items(). The async resolver now wins; the static items array will be ignored.`,
|
|
114
|
+
)
|
|
115
|
+
this._items = []
|
|
116
|
+
}
|
|
117
|
+
this._itemsUsing = fn
|
|
118
|
+
return this
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
getTrigger(): string { return this._trigger }
|
|
122
|
+
getItems(): readonly MentionItem[] { return this._items }
|
|
123
|
+
isAsync(): boolean { return this._itemsUsing !== undefined }
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Run the resolver — `itemsUsing(fn)` when set, otherwise the cached
|
|
127
|
+
* static list. Wraps non-array returns in `[]` so a misbehaving
|
|
128
|
+
* resolver doesn't crash the route handler.
|
|
129
|
+
*
|
|
130
|
+
* Synchronous resolvers are awaited the same way as async ones; the
|
|
131
|
+
* single code path keeps the call-site cheap.
|
|
132
|
+
*/
|
|
133
|
+
async runResolver(query: string, ctx: MentionResolverContext): Promise<MentionItem[]> {
|
|
134
|
+
if (this._itemsUsing === undefined) {
|
|
135
|
+
// Static path mirrors the client-side filter so the server endpoint
|
|
136
|
+
// would be useful for static providers too — but the client never
|
|
137
|
+
// calls it for them (no `async: true` flag → no fetch).
|
|
138
|
+
return [...this._items]
|
|
139
|
+
}
|
|
140
|
+
const result = await this._itemsUsing(query, ctx)
|
|
141
|
+
return Array.isArray(result) ? result : []
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** @internal */
|
|
145
|
+
toMeta(): MentionProviderMeta {
|
|
146
|
+
if (this._itemsUsing !== undefined) {
|
|
147
|
+
// Async providers ship empty `items`; the client checks `async: true`
|
|
148
|
+
// and fetches from the field's `mentionsUrl` per-keystroke instead.
|
|
149
|
+
return { trigger: this._trigger, items: [], async: true }
|
|
150
|
+
}
|
|
151
|
+
return { trigger: this._trigger, items: [...this._items] }
|
|
152
|
+
}
|
|
153
|
+
}
|