@brainfish-ai/editor 0.16.1 → 0.16.3
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/dist/editor/internal/codeMirrorTheme.d.ts +14 -0
- package/dist/{index-FnbDXzus.js → index-B7G61KeU.js} +1 -1
- package/dist/{index-D1lvHOEq.js → index-BCU5wvMA.js} +2 -2
- package/dist/{index-D2xHwKn1.js → index-BgpucQu9.js} +3 -3
- package/dist/{index-B3Tj0aeA.js → index-BrHQTa5O.js} +2 -2
- package/dist/{index-DLaMyc-O.js → index-Byx5Rin8.js} +2 -2
- package/dist/{index-DaEJooLf.js → index-CHiJxeZP.js} +2 -2
- package/dist/{index-DQl-jPCB.js → index-CSYZYQcP.js} +2 -2
- package/dist/{index-yGP3q8Ph.js → index-CZ_tRMOP.js} +3 -3
- package/dist/{index-ugK_d0Eb.js → index-CgxTSc3A.js} +2 -2
- package/dist/{index-DcHkonsK.js → index-D3qfXl4a.js} +4 -4
- package/dist/{index-3kIhnnQF.js → index-DC8dl4wM.js} +3 -3
- package/dist/{index-BoGCS5K8.js → index-DHS4fqlV.js} +2 -2
- package/dist/{index-TzlF4I2U.js → index-D_WC_iU-.js} +2 -2
- package/dist/{index-DmshtaDi.js → index-DgawIQVL.js} +3 -3
- package/dist/{index-Pbdt_JAa.js → index-DysiDhtD.js} +2 -2
- package/dist/{index-DC7kmwxC.js → index-FrO1JgY0.js} +4 -4
- package/dist/{index-BgzDJCPK.js → index-QwNEKxue.js} +2 -2
- package/dist/{index-o1kUBM0B.js → index-f6Jh9zCn.js} +494 -163
- package/dist/{index-DPERyOhC.js → index-hvx6Ru78.js} +2 -2
- package/dist/{index-DnIbufdg.js → index-ioAG3mIK.js} +3 -3
- package/dist/{index-dd3JkZcJ.js → index-nC_e7r57.js} +2 -2
- package/dist/{index-mjlRw27L.js → index-wcyxRMSc.js} +2 -2
- package/dist/{index-DO4yrIc-.js → index-wnkG3YUJ.js} +4 -4
- package/dist/{index-CkC8SVWG.js → index-xzCgWTs0.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/markdown-source-editor/MarkdownSourceEditor.d.ts +2 -0
- package/dist/plugins/mentions/core/types.d.ts +2 -0
- package/dist/plugins/mentions/integration/slash-factory.d.ts +5 -0
- package/dist/plugins/mentions/integration/slash-keydown.d.ts +1 -0
- package/dist/plugins/mentions/ui/MentionSlashView.d.ts +1 -0
- package/dist/plugins/mentions/ui/filterMentionSlashRows.d.ts +16 -0
- package/dist/plugins/mentions/ui/loadMentionSlashMenu.d.ts +9 -0
- package/dist/plugins/mentions/ui/mentionSlashMenuState.d.ts +57 -0
- package/dist/plugins/mentions/ui/runtime.d.ts +5 -0
- package/dist/plugins/mentions/ui/useMentionSlashMenu.d.ts +8 -11
- package/dist/stories/mentionBreakFixtures.d.ts +11 -0
- package/dist/stories/storybook-utils.d.ts +4 -0
- package/dist/types.d.ts +8 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LRLanguage, A as LanguageSupport, B as indentNodeProp, C as continuedIndent, D as foldNodeProp, E as styleTags, F as tags, G as ifNotIn, H as completeFromList, I as syntaxTree } from './index-
|
|
2
|
-
import { E as ExternalTokenizer, L as LRParser } from './index-
|
|
1
|
+
import { L as LRLanguage, A as LanguageSupport, B as indentNodeProp, C as continuedIndent, D as foldNodeProp, E as styleTags, F as tags, G as ifNotIn, H as completeFromList, I as syntaxTree } from './index-f6Jh9zCn.js';
|
|
2
|
+
import { E as ExternalTokenizer, L as LRParser } from './index-B7G61KeU.js';
|
|
3
3
|
|
|
4
4
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
5
5
|
const whitespace = 36,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-
|
|
2
|
-
import { E as styleTags, F as tags, A as LanguageSupport, L as LRLanguage, D as foldNodeProp, M as foldInside, B as indentNodeProp, C as continuedIndent } from './index-
|
|
3
|
-
import { defineCSSCompletionSource } from './index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-B7G61KeU.js';
|
|
2
|
+
import { E as styleTags, F as tags, A as LanguageSupport, L as LRLanguage, D as foldNodeProp, M as foldInside, B as indentNodeProp, C as continuedIndent } from './index-f6Jh9zCn.js';
|
|
3
|
+
import { defineCSSCompletionSource } from './index-D_WC_iU-.js';
|
|
4
4
|
|
|
5
5
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
6
6
|
const indent = 168,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-
|
|
2
|
-
import { E as styleTags, F as tags, G as ifNotIn, I as syntaxTree, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, K as delimitedIndent, D as foldNodeProp, M as foldInside, O as NodeWeakMap, P as IterMode, H as completeFromList, N as snippetCompletion } from './index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-B7G61KeU.js';
|
|
2
|
+
import { E as styleTags, F as tags, G as ifNotIn, I as syntaxTree, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, K as delimitedIndent, D as foldNodeProp, M as foldInside, O as NodeWeakMap, P as IterMode, H as completeFromList, N as snippetCompletion } from './index-f6Jh9zCn.js';
|
|
3
3
|
|
|
4
4
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
5
5
|
const printKeyword = 1,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-
|
|
2
|
-
import { E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, D as foldNodeProp, a9 as bracketMatchingHandle } from './index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-B7G61KeU.js';
|
|
2
|
+
import { E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, D as foldNodeProp, a9 as bracketMatchingHandle } from './index-f6Jh9zCn.js';
|
|
3
3
|
|
|
4
4
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
5
5
|
const StartTag = 1,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-
|
|
2
|
-
import { S as parseMixed, E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, D as foldNodeProp, a9 as bracketMatchingHandle } from './index-
|
|
3
|
-
import { cssLanguage, css } from './index-
|
|
4
|
-
import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from './index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from './index-B7G61KeU.js';
|
|
2
|
+
import { S as parseMixed, E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, L as LRLanguage, B as indentNodeProp, D as foldNodeProp, a9 as bracketMatchingHandle } from './index-f6Jh9zCn.js';
|
|
3
|
+
import { cssLanguage, css } from './index-D_WC_iU-.js';
|
|
4
|
+
import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from './index-xzCgWTs0.js';
|
|
5
5
|
|
|
6
6
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
7
7
|
const scriptText = 55,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from './index-
|
|
2
|
-
import { E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, G as ifNotIn, H as completeFromList, L as LRLanguage, B as indentNodeProp, J as flatIndent, C as continuedIndent, K as delimitedIndent, D as foldNodeProp, M as foldInside, ab as sublanguageProp, N as snippetCompletion, a3 as defineLanguageFacet, O as NodeWeakMap, P as IterMode } from './index-
|
|
1
|
+
import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from './index-B7G61KeU.js';
|
|
2
|
+
import { E as styleTags, F as tags, Q as EditorView, I as syntaxTree, R as EditorSelection, A as LanguageSupport, G as ifNotIn, H as completeFromList, L as LRLanguage, B as indentNodeProp, J as flatIndent, C as continuedIndent, K as delimitedIndent, D as foldNodeProp, M as foldInside, ab as sublanguageProp, N as snippetCompletion, a3 as defineLanguageFacet, O as NodeWeakMap, P as IterMode } from './index-f6Jh9zCn.js';
|
|
3
3
|
|
|
4
4
|
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
5
5
|
const noSemi = 316,
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { ac as BrainfishEditor, ad as MarkdownSourceEditor, ae as MilkdownProvider, j as createReviewSuggestionBulkActions } from './index-
|
|
1
|
+
export { ac as BrainfishEditor, ad as MarkdownSourceEditor, ae as MilkdownProvider, j as createReviewSuggestionBulkActions } from './index-f6Jh9zCn.js';
|
|
@@ -18,5 +18,7 @@ export type MarkdownSourceEditorProps = {
|
|
|
18
18
|
slashMenu?: BrainfishEditorProps['slashMenu'];
|
|
19
19
|
toolbar?: BrainfishEditorProps['toolbar'];
|
|
20
20
|
mentions?: BrainfishEditorProps['mentions'];
|
|
21
|
+
/** Passed through to {@link BrainfishEditor} for the mention menu footer control. */
|
|
22
|
+
footerButton?: BrainfishEditorProps['footerButton'];
|
|
21
23
|
};
|
|
22
24
|
export declare const MarkdownSourceEditor: React.ForwardRefExoticComponent<MarkdownSourceEditorProps & React.RefAttributes<MarkdownSourceEditorHandle>>;
|
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
export declare const mentionSlash: import('@milkdown/plugin-slash').SlashPlugin<"BRAINFISH_MENTION", any>;
|
|
3
3
|
export type MentionSlashApi = {
|
|
4
4
|
isOpen: () => boolean;
|
|
5
|
+
/** Cycles the highlighted row within the active group tab. */
|
|
5
6
|
nav: (direction: 'next' | 'prev') => void;
|
|
7
|
+
/** Cycles the active group tab (All / provider groups). */
|
|
8
|
+
navGroup: (direction: 'next' | 'prev') => void;
|
|
6
9
|
pick: () => boolean;
|
|
10
|
+
/** Moves focus to the footer button when it is mounted. */
|
|
11
|
+
focusFooterButton: () => boolean;
|
|
7
12
|
dismiss: () => void;
|
|
8
13
|
};
|
|
9
14
|
/** Imperative control of the open mention menu (keyboard handler + React view). */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Ctx } from '@milkdown/kit/ctx';
|
|
2
2
|
import { EditorView } from '@milkdown/kit/prose/view';
|
|
3
|
+
/** ProseMirror `handleKeyDown` for the open `@` mention slash menu (rows and group tabs). */
|
|
3
4
|
export declare function mentionSlashKeydown(ctx: Ctx): (editorView: EditorView, event: KeyboardEvent) => boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Sentinel tab id for the unfiltered mention slash menu. */
|
|
2
|
+
export declare const ALL_MENTION_GROUP = "all";
|
|
3
|
+
/** Rows visible for the active group tab (`All` returns every row). */
|
|
4
|
+
export declare function filterMentionSlashRows<T extends {
|
|
5
|
+
groupLabel: string;
|
|
6
|
+
}>(rows: T[], activeGroup: string): T[];
|
|
7
|
+
/** Keeps `activeGroup` when it still has rows; otherwise falls back to {@link ALL_MENTION_GROUP}. */
|
|
8
|
+
export declare function resolveMentionSlashGroup<T extends {
|
|
9
|
+
groupLabel: string;
|
|
10
|
+
}>(rows: T[], activeGroup: string): string;
|
|
11
|
+
/** Ordered tab ids for keyboard cycling: `All` first, then provider group labels in row order. */
|
|
12
|
+
export declare function mentionSlashTabIds<T extends {
|
|
13
|
+
groupLabel: string;
|
|
14
|
+
}>(rows: T[]): string[];
|
|
15
|
+
/** Moves to the next or previous tab id in `tabIds`, wrapping at the ends. */
|
|
16
|
+
export declare function cycleMentionSlashGroup(tabIds: string[], current: string, direction: 'next' | 'prev'): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MentionProvider } from '../core/types';
|
|
2
|
+
import { MentionSlashMenuAction } from './mentionSlashMenuState';
|
|
3
|
+
/**
|
|
4
|
+
* Loads mention slash menu rows from providers for the current query.
|
|
5
|
+
* Returns a reducer action, or `{ type: 'retry' }` when availability is still loading or the request was aborted.
|
|
6
|
+
*/
|
|
7
|
+
export declare function loadMentionSlashMenu(providers: MentionProvider[], query: string, signal: AbortSignal): Promise<MentionSlashMenuAction | {
|
|
8
|
+
type: 'retry';
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { MentionCandidate, MentionProvider } from '../core/types';
|
|
3
|
+
/** One selectable row in the `@` mention slash menu (candidate plus provider metadata). */
|
|
4
|
+
export type MentionSlashRow = MentionCandidate & {
|
|
5
|
+
groupLabel: string;
|
|
6
|
+
refAttr: string;
|
|
7
|
+
provider: MentionProvider;
|
|
8
|
+
};
|
|
9
|
+
export type MentionSlashStatus = 'loading' | 'ready' | 'empty' | 'error' | 'not-connected';
|
|
10
|
+
/** React state for the floating `@` mention slash menu. */
|
|
11
|
+
export type MentionSlashMenuState = {
|
|
12
|
+
open: boolean;
|
|
13
|
+
query: string;
|
|
14
|
+
status: MentionSlashStatus;
|
|
15
|
+
slashContent: ReactNode | null;
|
|
16
|
+
rows: MentionSlashRow[];
|
|
17
|
+
selectedIndex: number;
|
|
18
|
+
activeGroup: string;
|
|
19
|
+
};
|
|
20
|
+
/** Discriminated union dispatched by {@link mentionSlashMenuReducer}. */
|
|
21
|
+
export type MentionSlashMenuAction = {
|
|
22
|
+
type: 'show';
|
|
23
|
+
query: string;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'hide';
|
|
26
|
+
} | {
|
|
27
|
+
type: 'loading';
|
|
28
|
+
} | {
|
|
29
|
+
type: 'not-connected';
|
|
30
|
+
content: ReactNode;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'error';
|
|
33
|
+
content: ReactNode;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'loaded';
|
|
36
|
+
rows: MentionSlashRow[];
|
|
37
|
+
status: 'ready' | 'empty';
|
|
38
|
+
} | {
|
|
39
|
+
type: 'select';
|
|
40
|
+
index: number;
|
|
41
|
+
} | {
|
|
42
|
+
type: 'setGroup';
|
|
43
|
+
group: string;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'nav';
|
|
46
|
+
direction: 'next' | 'prev';
|
|
47
|
+
} | {
|
|
48
|
+
type: 'navGroup';
|
|
49
|
+
direction: 'next' | 'prev';
|
|
50
|
+
};
|
|
51
|
+
export declare const initialMentionSlashMenuState: MentionSlashMenuState;
|
|
52
|
+
/** Pure reducer for mention slash menu open state, fetch results, selection, and group tabs. */
|
|
53
|
+
export declare function mentionSlashMenuReducer(state: MentionSlashMenuState, action: MentionSlashMenuAction): MentionSlashMenuState;
|
|
54
|
+
/** Rows after applying the resolved active group filter. */
|
|
55
|
+
export declare function visibleMentionSlashRows(state: MentionSlashMenuState): MentionSlashRow[];
|
|
56
|
+
/** Active group tab id after {@link resolveMentionSlashGroup} fallback rules. */
|
|
57
|
+
export declare function resolvedMentionSlashGroup(state: MentionSlashMenuState): string;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { MutableRefObject } from 'react';
|
|
2
2
|
import { MentionProvider } from '../core/types';
|
|
3
|
+
/** Mention plugin React context: provider list and host callbacks for slash UI. */
|
|
3
4
|
export type MentionsRuntime = {
|
|
4
5
|
providersRef: MutableRefObject<MentionProvider[]>;
|
|
5
6
|
providers: MentionProvider[];
|
|
7
|
+
/** Latest host `footerButton.onClick` (kept in a ref for plugin views). */
|
|
8
|
+
onFooterButtonClickRef: MutableRefObject<(() => void) | undefined>;
|
|
9
|
+
/** Host `footerButton.label`. */
|
|
10
|
+
footerButtonLabel?: string;
|
|
6
11
|
};
|
|
7
12
|
export declare const MentionsRuntimeContext: import('react').Context<MentionsRuntime>;
|
|
8
13
|
export declare function useMentionsRuntime(): MentionsRuntime;
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
groupLabel: string;
|
|
5
|
-
refAttr: string;
|
|
6
|
-
provider: MentionProvider;
|
|
7
|
-
};
|
|
8
|
-
type Status = 'loading' | 'ready' | 'empty' | 'error' | 'not-connected';
|
|
1
|
+
import { MentionSlashRow } from './mentionSlashMenuState';
|
|
2
|
+
export type { MentionSlashRow };
|
|
3
|
+
/** Wires the `@` slash provider, fetch loop, keyboard API, and menu reducer for {@link MentionSlashView}. */
|
|
9
4
|
export declare function useMentionSlashMenu(): {
|
|
10
5
|
contentRef: import('react').RefObject<HTMLDivElement>;
|
|
11
6
|
listRef: import('react').RefObject<HTMLDivElement>;
|
|
12
7
|
open: boolean;
|
|
13
8
|
query: string;
|
|
14
|
-
status:
|
|
15
|
-
slashContent: ReactNode;
|
|
9
|
+
status: import('./mentionSlashMenuState').MentionSlashStatus;
|
|
10
|
+
slashContent: import('react').ReactNode;
|
|
16
11
|
rows: MentionSlashRow[];
|
|
12
|
+
visibleRows: MentionSlashRow[];
|
|
17
13
|
selectedIndex: number;
|
|
14
|
+
activeGroup: string;
|
|
15
|
+
setActiveGroup: (group: string) => void;
|
|
18
16
|
};
|
|
19
|
-
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MentionCandidate } from '../plugins/mentions';
|
|
2
|
+
export type MentionBreakMode = 'demo' | 'worst' | 'empty' | 'one';
|
|
3
|
+
export declare function readMentionBreakMode(): MentionBreakMode;
|
|
4
|
+
export declare function mentionBreakModeLabel(mode: MentionBreakMode): string;
|
|
5
|
+
export declare function fixturesForMode(mode: MentionBreakMode): {
|
|
6
|
+
playbooks: MentionCandidate[];
|
|
7
|
+
articles: MentionCandidate[];
|
|
8
|
+
playbookGroupLabel: string;
|
|
9
|
+
articleGroupLabel: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function setMentionBreakMode(mode: MentionBreakMode): void;
|
|
@@ -61,6 +61,10 @@ export declare const sharedMeta: {
|
|
|
61
61
|
}> | undefined;
|
|
62
62
|
selectedChannelId?: string | undefined;
|
|
63
63
|
mentions?: import('..').MentionProvider[] | undefined;
|
|
64
|
+
footerButton?: {
|
|
65
|
+
label?: string;
|
|
66
|
+
onClick?: () => void;
|
|
67
|
+
} | undefined;
|
|
64
68
|
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
65
69
|
};
|
|
66
70
|
export declare const markdown = "# Milkdown Editor Crepe\n\n> This is a demo for using [Milkdown](https://milkdown.dev) editor crepe.\n\nLet's add some content to the editor.\n\n---\n\n# Pink Floyd\n\n\n\n> Rarely will you find Floyd dishing up catchy hooks, tunes short enough for air-play, or predictable three-chord blues progressions; and never will you find them spending much time on the usual pop album of romance, partying, or self-hype. Their sonic universe is expansive, intense, and challenging ... Where most other bands neatly fit the songs to the music, the two forming a sort of autonomous and seamless whole complete with memorable hooks, Pink Floyd tends to set lyrics within a broader soundscape that often seems to have a life of its own ... Pink Floyd employs extended, stand-alone instrumentals which are never mere vehicles for showing off virtuoso but are planned and integral parts of the performance.\n\n**Pink Floyd** are an English [rock](https://en.wikipedia.org/wiki/Rock_music \"Rock music\") band formed in London in 1965. Gaining an early following as one of the first British [psychedelic](https://en.wikipedia.org/wiki/Psychedelic_music \"Psychedelic music\") groups, they were distinguished by their extended compositions, sonic experiments, philosophical lyrics, and elaborate [live shows](https://en.wikipedia.org/wiki/Pink_Floyd_live_performances \"Pink Floyd live performances\"). They became a leading band of the [progressive rock](https://en.wikipedia.org/wiki/Progressive_rock \"Progressive rock\") genre, cited by some as the greatest progressive rock band of all time.\n\nPink Floyd were founded in 1965 by [Syd Barrett](https://en.wikipedia.org/wiki/Syd_Barrett \"Syd Barrett\") (guitar, lead vocals), [Nick Mason](https://en.wikipedia.org/wiki/Nick_Mason \"Nick Mason\") (drums), [Roger Waters](https://en.wikipedia.org/wiki/Roger_Waters \"Roger Waters\") (bass guitar, vocals) and [Richard Wright](https://en.wikipedia.org/wiki/Richard_Wright_\\(musician\\) \"Richard Wright (musician)\") (keyboards, vocals). With Barrett as their main songwriter, they released two hit singles, \"[Arnold Layne](https://en.wikipedia.org/wiki/Arnold_Layne \"Arnold Layne\")\" and \"[See Emily Play](https://en.wikipedia.org/wiki/See_Emily_Play \"See Emily Play\")\", and the successful debut album *[The Piper at the Gates of Dawn](https://en.wikipedia.org/wiki/The_Piper_at_the_Gates_of_Dawn \"The Piper at the Gates of Dawn\")* (all 1967). [David Gilmour](https://en.wikipedia.org/wiki/David_Gilmour \"David Gilmour\") (guitar, vocals) joined in December 1967, while Barrett left in April 1968 due to deteriorating mental health. The four remaining members began contributing to the musical composition, with Waters becoming the primary lyricist and thematic leader, devising the [concepts](https://en.wikipedia.org/wiki/Concept_album \"Concept album\") behind Pink Floyd's most successful albums, *[The Dark Side of the Moon](https://en.wikipedia.org/wiki/The_Dark_Side_of_the_Moon \"The Dark Side of the Moon\")* (1973), *[Wish You Were Here](https://en.wikipedia.org/wiki/Wish_You_Were_Here_\\(Pink_Floyd_album\\) \"Wish You Were Here (Pink Floyd album)\")* (1975), *[Animals](https://en.wikipedia.org/wiki/Animals_\\(Pink_Floyd_album\\))* (1977) and *[The Wall](https://en.wikipedia.org/wiki/The_Wall \"The Wall\")* (1979). The [musical film](https://en.wikipedia.org/wiki/Musical_film \"Musical film\") based on *The Wall*, *[Pink Floyd \u2013 The Wall](https://en.wikipedia.org/wiki/Pink_Floyd_%E2%80%93_The_Wall \"Pink Floyd \u2013 The Wall\")* (1982), won two [BAFTA Awards](https://en.wikipedia.org/wiki/BAFTA_Awards \"BAFTA Awards\"). Pink Floyd also composed several [film scores](https://en.wikipedia.org/wiki/Film_score \"Film score\").\n\n---\n\n## Discography\n\n*Main articles: [Pink Floyd discography](https://en.wikipedia.org/wiki/Pink_Floyd_discography \"Pink Floyd discography\") and [List of songs recorded by Pink Floyd](https://en.wikipedia.org/wiki/List_of_songs_recorded_by_Pink_Floyd \"List of songs recorded by Pink Floyd\")*\n\n**Studio albums**\n\n* *[The Piper at the Gates of Dawn](https://en.wikipedia.org/wiki/The_Piper_at_the_Gates_of_Dawn \"The Piper at the Gates of Dawn\")* (1967)\n* *[A Saucerful of Secrets](https://en.wikipedia.org/wiki/A_Saucerful_of_Secrets \"A Saucerful of Secrets\")* (1968)\n* *[More](https://en.wikipedia.org/wiki/More_\\(soundtrack\\) \"More (soundtrack)\")* (1969)\n* *[Ummagumma](https://en.wikipedia.org/wiki/Ummagumma \"Ummagumma\")* (1969)\n* *[Atom Heart Mother](https://en.wikipedia.org/wiki/Atom_Heart_Mother \"Atom Heart Mother\")* (1970)\n* *[Meddle](https://en.wikipedia.org/wiki/Meddle \"Meddle\")* (1971)\n* *[Obscured by Clouds](https://en.wikipedia.org/wiki/Obscured_by_Clouds \"Obscured by Clouds\")* (1972)\n* *[The Dark Side of the Moon](https://en.wikipedia.org/wiki/The_Dark_Side_of_the_Moon \"The Dark Side of the Moon\")* (1973)\n* *[Wish You Were Here](https://en.wikipedia.org/wiki/Wish_You_Were_Here_\\(Pink_Floyd_album\\) \"Wish You Were Here (Pink Floyd album)\")* (1975)\n* *[Animals](https://en.wikipedia.org/wiki/Animals_\\(Pink_Floyd_album\\) \"Animals (Pink Floyd album)\")* (1977)\n* *[The Wall](https://en.wikipedia.org/wiki/The_Wall \"The Wall\")* (1979)\n* *[The Final Cut](https://en.wikipedia.org/wiki/The_Final_Cut_\\(album\\) \"The Final Cut (album)\")* (1983)\n* *[A Momentary Lapse of Reason](https://en.wikipedia.org/wiki/A_Momentary_Lapse_of_Reason \"A Momentary Lapse of Reason\")* (1987)\n* *[The Division Bell](https://en.wikipedia.org/wiki/The_Division_Bell \"The Division Bell\")* (1994)\n* *[The Endless River](https://en.wikipedia.org/wiki/The_Endless_River \"The Endless River\")* (2014)\n";
|
package/dist/types.d.ts
CHANGED
|
@@ -197,6 +197,14 @@ export interface BrainfishEditorProps {
|
|
|
197
197
|
* Optional @-mention providers. Empty or omitted keeps `@` as a character.
|
|
198
198
|
*/
|
|
199
199
|
mentions?: MentionProvider[];
|
|
200
|
+
/**
|
|
201
|
+
* Mention slash menu footer control.
|
|
202
|
+
* Omitted `label` stays "Create a workflow".
|
|
203
|
+
*/
|
|
204
|
+
footerButton?: {
|
|
205
|
+
label?: string;
|
|
206
|
+
onClick?: () => void;
|
|
207
|
+
};
|
|
200
208
|
}
|
|
201
209
|
export type ReviewSuggestionBulkActions = {
|
|
202
210
|
applyAllReviewSuggestions: () => string[];
|