]> BookStack Code Mirror - bookstack/blobdiff - resources/js/wysiwyg/ui/defaults/form-definitions.ts
Lexical: Added selection to state for aligned reading
[bookstack] / resources / js / wysiwyg / ui / defaults / form-definitions.ts
index 457efa421e7171155d04771d0457e87004e19acd..13e7a9c9fc68125fc914121fc1f3a535871f55f6 100644 (file)
@@ -2,6 +2,7 @@ import {EditorFormDefinition, EditorSelectFormFieldDefinition} from "../framewor
 import {EditorUiContext} from "../framework/core";
 import {$createLinkNode} from "@lexical/link";
 import {$createTextNode, $getSelection} from "lexical";
+import {$createImageNode} from "../../nodes/image";
 
 
 export const link: EditorFormDefinition = {
@@ -47,4 +48,42 @@ export const link: EditorFormDefinition = {
             }
         } as EditorSelectFormFieldDefinition,
     ],
+};
+
+export const image: EditorFormDefinition = {
+    submitText: 'Apply',
+    action(formData, context: EditorUiContext) {
+        context.editor.update(() => {
+            const selection = $getSelection();
+            const imageNode = $createImageNode(formData.get('src')?.toString() || '', {
+                alt: formData.get('alt')?.toString() || '',
+                height: Number(formData.get('height')?.toString() || '0'),
+                width: Number(formData.get('width')?.toString() || '0'),
+            });
+            selection?.insertNodes([imageNode]);
+        });
+        return true;
+    },
+    fields: [
+        {
+            label: 'Source',
+            name: 'src',
+            type: 'text',
+        },
+        {
+            label: 'Alternative description',
+            name: 'alt',
+            type: 'text',
+        },
+        {
+            label: 'Width',
+            name: 'width',
+            type: 'text',
+        },
+        {
+            label: 'Height',
+            name: 'height',
+            type: 'text',
+        },
+    ],
 };
\ No newline at end of file