Conceptos
Comandos
4 min
mientras editan contenido de richtext, sus usuarios estarán haciendo cosas como insertar texto, eliminar texto, dividir párrafos, agregar formato, etc detrás de escena, estas ediciones se expresan utilizando transformaciones y operaciones pero a un nivel alto, hablamos de ellas como "comandos" los comandos son las acciones de alto nivel que representan una intención específica del usuario se representan como funciones auxiliares en la editor interfaz un puñado de auxiliares están incluidos en el núcleo para comportamientos comunes de richtext, pero se le anima a escribir los suyos que modelen su dominio específico por ejemplo, aquí hay algunos de los comandos integrados editor inserttext(editor, 'a new string of text to be inserted ') editor deletebackward(editor, { unit 'word' }) editor insertbreak(editor) pero también puede (¡y lo hará!) definir sus propios comandos personalizados que modelen su dominio por ejemplo, podría querer definir un formatquote comando, o un insertimage comando, o un togglebold comando dependiendo de qué tipos de contenido permita los comandos siempre describen una acción a realizar como si el usuario estuviera realizando la acción por esa razón, nunca necesitan definir una ubicación para realizar el comando, porque siempre actúan sobre la selección actual del usuario 🤖 el concepto de comandos se basa libremente en las apis integradas de execcommand https //developer mozilla org/en us/docs/web/api/document/execcommand del dom sin embargo, slate define su propia versión más simple (¡y extensible!) de la api, porque la versión del dom es demasiado opinativa e inconsistente detrás de escena, slate se encarga de convertir cada comando en un conjunto de "operaciones" de bajo nivel que se aplican para producir un nuevo valor esto es lo que hace posible las implementaciones de edición colaborativa pero no tiene que preocuparse por eso, porque sucede automáticamente comandos personalizados al definir comandos personalizados, puedes crear tu propio espacio de nombres const myeditor = { editor, insertparagraph(editor) { // }, } al escribir tus propios comandos, a menudo harás uso de los transformaciones ayudantes que vienen con slate transformaciones las transformaciones son un conjunto específico de ayudantes que te permiten realizar una amplia variedad de cambios específicos en el documento, por ejemplo // set a "bold" format on all of the text nodes in a range transforms setnodes( editor, { bold true }, { at range, match node => text istext(node), split true, } ) // wrap the lowest block at a point in the document in a quote block transforms wrapnodes( editor, { type 'quote', children \[] }, { at point, match node => editor isblock(editor, node), mode 'lowest', } ) // insert new text to replace the text in a node at a specific path transforms inserttext(editor, 'a new string of text ', { at path }) // there are many more transforms! los ayudantes de transformación están diseñados para ser compuestos juntos así que podrías usar un puñado de ellos para cada comando
