MCPcopy
hub / github.com/udecode/plate / createSlatePlugin

Function createSlatePlugin

packages/core/src/lib/plugin/createSlatePlugin.ts:91–342  ·  view source on GitHub ↗
(
  config:
    | ((editor: SlateEditor) => SlatePluginConfig<K, O, A, T, S>)
    | SlatePluginConfig<K, O, A, T, S> = {}
)

Source from the content-addressed store, hash-verified

89 * plugins) or add a new one if not found.
90 */
91export function createSlatePlugin<
92 K extends string = any,
93 O = {},
94 A = {},
95 T = {},
96 S = {},
97>(
98 config:
99 | ((editor: SlateEditor) => SlatePluginConfig<K, O, A, T, S>)
100 | SlatePluginConfig<K, O, A, T, S> = {}
101): SlatePlugin<PluginConfig<K, O, A, T, S>> {
102 let baseConfig: Partial<SlatePlugin<PluginConfig<K, O, A, T, S>>>;
103 let initialExtension: any;
104
105 if (isFunction(config)) {
106 baseConfig = { key: '' as K };
107 initialExtension = (editor: any) => config(editor);
108 } else {
109 baseConfig = config as any;
110 }
111
112 const key = baseConfig.key ?? '';
113
114 const plugin = mergePlugins(
115 {
116 key,
117 __apiExtensions: [],
118 __configuration: null,
119 __extensions: initialExtension ? [initialExtension] : [],
120 __selectorExtensions: [],
121 api: {},
122 dependencies: [],
123 editor: {},
124 handlers: {},
125 inject: {},
126 node: { type: key },
127 options: {},
128 override: {},
129 parser: {},
130 parsers: {},
131 plugins: [],
132 priority: 100,
133 render: {},
134 rules: {},
135 shortcuts: {},
136 inputRules: [],
137 transforms: {},
138 },
139 config
140 ) as unknown as SlatePlugin<PluginConfig<K, O, A, T, S>>;
141
142 if (plugin.node.isLeaf && !isDefined(plugin.node.isDecoration)) {
143 plugin.node.isDecoration = true;
144 }
145
146 plugin.configure = (config) => {
147 const newPlugin = { ...plugin };
148 newPlugin.__configuration = (ctx) =>

Calls 5

isFunctionFunction · 0.90
mergePluginsFunction · 0.90
isDefinedFunction · 0.90
configureNestedPluginFunction · 0.85
extendNestedPluginFunction · 0.85

Tested by 10

createEditorFunction · 0.72
createEditorFunction · 0.72
createElementPluginFunction · 0.72
createElementPluginFunction · 0.72
createElementPluginFunction · 0.72
createElementPluginFunction · 0.72
createTestPluginFunction · 0.72
FallbackTabPluginFunction · 0.68
createVoidElementPluginFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…