Hackeando las Flechas Etiquetadas

Rate this content
Bookmark

Las flechas etiquetadas son una de las características más utilizadas cuando se trata de pizarra, ¿verdad? En esta charla, profundizaré en los detalles de las flechas etiquetadas y cómo funcionan internamente en Canvas y SVG. También compartiré mi experiencia construyendo flechas etiquetadas en Excalidraw, un editor colaborativo de código abierto, virtual y encriptado de extremo a extremo basado en lienzo para dibujar diagramas a mano alzada.

This talk has been presented at React Summit 2024, check out the latest edition of this React Conference.

Aakansha Doshi
Aakansha Doshi
32 min
14 Jun, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las flechas etiquetadas se utilizan ampliamente en conversaciones, comunicación, diagramas y más. La charla discute la construcción de flechas etiquetadas, la representación de flechas en Canvas, la optimización de llamadas de API de trazo, el uso de RoughJS para dibujar y renderizar texto, la representación de texto multilinea en Canvas, la limpieza de áreas superpuestas y el recorte, la comparación del rendimiento del recorte y clear rect, el manejo del recorte y la vinculación de etiquetas a flechas, la vinculación de flechas etiquetadas a textos, texto rotado y exportación como SVG, enmascaramiento en SVG y etiquetado de flechas, enmascaramiento SVG y mejoras de rendimiento, y optimización de la representación y el dibujo en Canvas.
Available in English: Hacking into Labeled Arrows

1. Introducción a las Flechas Etiquetadas

Short description:

Las Flechas Etiquetadas son flechas con texto adjunto. Se utilizan ampliamente en conversaciones, comunicación, diagramas y más. En esta parte, exploraremos cómo se construyen las Flechas Etiquetadas y discutiremos los requisitos para construir un prototipo, incluyendo la renderización de flechas, la vinculación de etiquetas y flechas, el soporte de flechas multipunto, el manejo de la rotación de etiquetas y la exportación a SVG.

Antes de comenzar, permítanme dar una breve introducción. Soy Akansha, soy una mantenedora de código abierto, FOSS básicamente significa software libre y de código abierto. Soy una mantenedora principal de Excalidraw, ReactJS y algunas otras bibliotecas de código abierto. También organizo estos encuentros de FOSS en Bangalore, India para promover la comunidad FOSS en India. Y sí, estas son mis redes sociales. Me encantaría conectarme con todos ustedes y hablar sobre cualquier cosa relacionada con el frontend, React, código abierto, Canvas, cualquier cosa.

Entonces, ahora comencemos con la charla. ¿Qué quiero decir exactamente con Flechas Etiquetadas? Las Flechas Etiquetadas son básicamente cuando tienes una flecha y le adjuntas algún texto, eso es básicamente una Flecha Etiquetada. Seguramente lo habrás utilizado en alguna conversación, como puedes ver en la conversación entre dos amigos o alguna comunicación, algún flujo, algún diagrama arquitectónico para mostrar algunas direcciones, alguna información crucial. Puede ser cualquier cosa, pero es una de las características más utilizadas. Entonces, como vamos a implementarlo, veamos cómo se construye internamente esta Flecha Etiquetada. Veamos este ejemplo. Esta es una Flecha Etiquetada. Tiene una línea. Consiste en una línea. Consiste en una cabeza de flecha y un texto. Al menos al construir una Flecha Etiquetada, tienes al menos tres elementos diferentes separados. Y hagamos una nota de esto porque vamos a profundizar en esto.

Ahora, como hacemos los desarrolladores, antes de construir cualquier característica, vamos a establecer algunos requisitos mínimos para construir un prototipo. Veamos la lista de requisitos. Primero, queremos entender cómo podemos renderizar las flechas en Canvas, cómo podemos renderizar la etiqueta que es el texto encima de la flecha, cómo podemos vincular la etiqueta y la flecha. En el código, somos conscientes de que, hey, esta etiqueta en particular está adjunta a esta flecha en particular, y esta flecha tiene esta etiqueta. Así que solo necesitamos una relación entre estos dos elementos. ¿Cómo debemos renderizar la etiqueta para flechas multipunto? También hablaré de esto en un momento. ¿Y cómo debemos renderizar la etiqueta cuando rotamos una flecha? Y por último, queremos admitir la exportación a SVG también. También hablaremos un poco de SVG. Así que tengamos este conjunto de requisitos. Profundizaré en cada uno de ellos. Y los cumpliremos uno por uno y tendremos un prototipo mínimo al final.

2. Estructurando Elementos en Canvas

Short description:

Para estructurar elementos en Canvas, utiliza un JSON mínimo con tipo, ID, coordenadas XY, ancho, alto, puntos, cabeza de flecha de inicio y cabeza de flecha de fin. Para comprender a la audiencia, realicé una encuesta y descubrí que el 63% son principiantes y el 37% son intermedios. Ahora, discutamos cómo renderizar flechas en Canvas utilizando la API de dibujo, que consta de rectángulos y rutas. Nos centraremos en las rutas y aprenderemos cómo crear un lienzo y interactuar con él.

Entonces, antes de eso, comprendamos cómo queremos estructurar los elementos en el Canvas. Este es el JSON mínimo, en el que puedes pensar. Tiene un tipo, que básicamente es el tipo de elemento. ¿Es una flecha o es un texto? El ID del elemento, que utilizarás para representar de manera única el elemento en el Canvas. Por lo tanto, cada elemento en el Canvas tendrá un ID único. Las coordenadas XY son básicamente las coordenadas para posicionarlos en el Canvas. El ancho y el alto son las dimensiones. Los puntos son un parámetro importante cuando se trata de flechas porque una flecha puede tener dos puntos, 100 puntos, 1,000 puntos, ¿quién sabe? Es básicamente la matriz de esos puntos. La cabeza de flecha de inicio y la cabeza de flecha de fin son básicamente los dos puntos extremos de la flecha y la forma de la cabeza de flecha, puedes decidirlo. Puedes tener una estrella. Puedes tener un círculo, cualquier forma que desees. Esto es como un JSON mínimo. Consideremos este JSON.

Así que acabo de compartir esto en las redes sociales para comprender a la audiencia y les pedí que completaran un formulario de Google solo para comprender el nivel de comprensión de la audiencia para esta charla. Y esto es lo que obtuve. Obtengo que el 63% de la audiencia serán principiantes y el 37% serán intermedios y lo mismo para SVG. ¿Puedo ver un rápido levantamiento de manos? ¿Quiénes son nuestros principiantes en Canvas aquí? ¡Genial! Gracias. Gracias por participar. Creo que algunos de ustedes participaron en esto, y muchas gracias.

Entonces, sí, vayamos ahora al primer requisito. ¿Cómo puedes renderizar las flechas en Canvas? Vamos a los conceptos básicos primero. La API de dibujo de Canvas se divide en dos categorías principales. Una es rectángulo y otra es rutas. El rectángulo se utiliza para dibujar rectángulos. Las rutas son básicamente una colección de muchos puntos con los que puedes dibujar cualquier forma compleja en Canvas. Y en esta charla, hablaremos mucho sobre rutas. Volviendo a los conceptos básicos, creas un lienzo. Obtienes el contexto para poder interactuar con el lienzo.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Edición de video en el navegador
React Summit 2023React Summit 2023
23 min
Edición de video en el navegador
Top Content
This Talk discusses the challenges of video editing in the browser and the limitations of existing tools. It explores image compression techniques, including Fourier transform and Huffman encoding, to reduce file sizes. The video codec and frame decoding process are explained, highlighting the importance of keyframes and delta frames. The performance bottleneck is identified as the codec, and the need for specialized hardware for efficient video editing is emphasized. The Talk concludes with a call to create a simplified API for video editing in the browser and the potential for AI-powered video editing.
Manejo de datos a gran escala para desarrolladores de React
React Summit 2022React Summit 2022
23 min
Manejo de datos a gran escala para desarrolladores de React
This Talk discusses handling data at scale for React developers, including scaling databases and the need for search. It explores different ways to fetch data in React, such as using useEffect, fetch, and setState. The Talk also introduces Suspense for data fetching and how it improves user experience. It covers controlling React Suspense, handling search, and using render-as-you-fetch. The Talk concludes with a discussion on the RFC status and fetching in event handlers.