Lexical JSON
Format for integrating with Lexical-based editors
Introduction
Facebook's Lexical editor is a modern, extensible text editor framework designed for building interactive web applications with rich text capabilities. Lexical JSON is a serialization format for documents written using Lexical.
Stencila supports conversion to/from Lexical JSON as a way of integrating with Lexical and editors built on in.
Usage
Use the .lexical file extension, or the --to lexical or --from lexical options, when converting to/from Lexical JSON e.g.
stencila convert doc.smd doc.lexicalImplementation
Stencila supports bi-directional conversion between Stencila documents and Lexical JSON. This is built on top of serde_json with transformer functions to transform between Lexical node types and Stencila nde types.
Support
Stencila supports these operations for Lexical JSON:
- decoding from a file
- decoding from a string
- encoding to a file
- encoding to a string
Support and degree of loss by node type:
| Node type | Encoding | Decoding | Notes |
|---|---|---|---|
| Works | |||
| Article | 🔷 Low loss | 🔷 Low loss | |
| AudioObject | 🔷 Low loss | 🔷 Low loss | |
| AuthorRole | 🔷 Low loss | 🔷 Low loss | |
| Chat | 🔷 Low loss | 🔷 Low loss | |
| ChatMessage | 🔷 Low loss | 🔷 Low loss | |
| ChatMessageGroup | 🔷 Low loss | 🔷 Low loss | |
| Claim | 🔷 Low loss | 🔷 Low loss | |
| Collection | 🔷 Low loss | 🔷 Low loss | |
| Comment | 🔷 Low loss | 🔷 Low loss | |
| CreativeWork | 🔷 Low loss | 🔷 Low loss | |
| Directory | 🔷 Low loss | 🔷 Low loss | |
| Figure | 🔷 Low loss | 🔷 Low loss | |
| File | 🔷 Low loss | 🔷 Low loss | |
| ImageObject | 🔷 Low loss | 🔷 Low loss | |
| MediaObject | 🔷 Low loss | 🔷 Low loss | |
| Periodical | 🔷 Low loss | 🔷 Low loss | |
| Prompt | 🔷 Low loss | 🔷 Low loss | |
| PublicationIssue | 🔷 Low loss | 🔷 Low loss | |
| PublicationVolume | 🔷 Low loss | 🔷 Low loss | |
| Review | 🔷 Low loss | 🔷 Low loss | |
| SoftwareApplication | 🔷 Low loss | 🔷 Low loss | |
| SoftwareSourceCode | 🔷 Low loss | 🔷 Low loss | |
| Table | 🔷 Low loss | 🔷 Low loss | |
| TableCell | 🔷 Low loss | 🔷 Low loss | |
| TableRow | 🔷 Low loss | 🔷 Low loss | |
| VideoObject | 🔷 Low loss | 🔷 Low loss | |
| Prose | |||
| Admonition | 🔷 Low loss | 🔷 Low loss | |
| Annotation | 🔷 Low loss | 🔷 Low loss | |
| Cite | 🔷 Low loss | 🔷 Low loss | |
| CiteGroup | 🔷 Low loss | 🔷 Low loss | |
| DefinedTerm | 🔷 Low loss | 🔷 Low loss | |
| Emphasis | 🔷 Low loss | 🔷 Low loss | |
| Heading | 🔷 Low loss | 🔷 Low loss | |
| Link | 🔷 Low loss | 🔷 Low loss | |
| List | 🔷 Low loss | 🔷 Low loss | |
| ListItem | 🔷 Low loss | 🔷 Low loss | |
| Note | 🔷 Low loss | 🔷 Low loss | |
| Paragraph | 🔷 Low loss | 🔷 Low loss | |
| QuoteBlock | 🔷 Low loss | 🔷 Low loss | |
| QuoteInline | 🔷 Low loss | 🔷 Low loss | |
| Section | 🔷 Low loss | 🔷 Low loss | |
| Strikeout | 🔷 Low loss | 🔷 Low loss | |
| Strong | 🔷 Low loss | 🔷 Low loss | |
| Subscript | 🔷 Low loss | 🔷 Low loss | |
| Superscript | 🔷 Low loss | 🔷 Low loss | |
| Text | 🔷 Low loss | 🔷 Low loss | |
| ThematicBreak | 🔷 Low loss | 🔷 Low loss | |
| Underline | 🔷 Low loss | 🔷 Low loss | |
| Math | |||
| MathBlock | 🔷 Low loss | 🔷 Low loss | |
| MathInline | 🔷 Low loss | 🔷 Low loss | |
| Code | |||
| CodeBlock | 🔷 Low loss | 🔷 Low loss | |
| CodeChunk | 🔷 Low loss | 🔷 Low loss | |
| CodeExpression | 🔷 Low loss | 🔷 Low loss | |
| CodeInline | 🔷 Low loss | 🔷 Low loss | |
| CompilationMessage | 🔷 Low loss | 🔷 Low loss | |
| ExecutionMessage | 🔷 Low loss | 🔷 Low loss | |
| Data | |||
| Array | 🔷 Low loss | 🔷 Low loss | |
| ArrayHint | 🔷 Low loss | 🔷 Low loss | |
| ArrayValidator | 🔷 Low loss | 🔷 Low loss | |
| Boolean | 🔷 Low loss | 🔷 Low loss | |
| BooleanValidator | 🔷 Low loss | 🔷 Low loss | |
| ConstantValidator | 🔷 Low loss | 🔷 Low loss | |
| Cord | 🔷 Low loss | 🔷 Low loss | |
| Datatable | 🔷 Low loss | 🔷 Low loss | |
| DatatableColumn | 🔷 Low loss | 🔷 Low loss | |
| DatatableColumnHint | 🔷 Low loss | 🔷 Low loss | |
| DatatableHint | 🔷 Low loss | 🔷 Low loss | |
| Date | 🔷 Low loss | 🔷 Low loss | |
| DateTime | 🔷 Low loss | 🔷 Low loss | |
| DateTimeValidator | 🔷 Low loss | 🔷 Low loss | |
| DateValidator | 🔷 Low loss | 🔷 Low loss | |
| Duration | 🔷 Low loss | 🔷 Low loss | |
| DurationValidator | 🔷 Low loss | 🔷 Low loss | |
| EnumValidator | 🔷 Low loss | 🔷 Low loss | |
| Integer | 🔷 Low loss | 🔷 Low loss | |
| IntegerValidator | 🔷 Low loss | 🔷 Low loss | |
| Null | 🔷 Low loss | 🔷 Low loss | |
| Number | 🔷 Low loss | 🔷 Low loss | |
| NumberValidator | 🔷 Low loss | 🔷 Low loss | |
| Object | 🔷 Low loss | 🔷 Low loss | |
| ObjectHint | 🔷 Low loss | 🔷 Low loss | |
| String | 🔷 Low loss | 🔷 Low loss | |
| StringHint | 🔷 Low loss | 🔷 Low loss | |
| StringValidator | 🔷 Low loss | 🔷 Low loss | |
| Time | 🔷 Low loss | 🔷 Low loss | |
| TimeValidator | 🔷 Low loss | 🔷 Low loss | |
| Timestamp | 🔷 Low loss | 🔷 Low loss | |
| TimestampValidator | 🔷 Low loss | 🔷 Low loss | |
| TupleValidator | 🔷 Low loss | 🔷 Low loss | |
| Unknown | 🔷 Low loss | 🔷 Low loss | |
| UnsignedInteger | 🔷 Low loss | 🔷 Low loss | |
| Flow | |||
| Button | 🔷 Low loss | 🔷 Low loss | |
| CallArgument | 🔷 Low loss | 🔷 Low loss | |
| CallBlock | 🔷 Low loss | 🔷 Low loss | |
| CodeLocation | 🔷 Low loss | 🔷 Low loss | |
| CompilationDigest | 🔷 Low loss | 🔷 Low loss | |
| ExecutionDependant | 🔷 Low loss | 🔷 Low loss | |
| ExecutionDependency | 🔷 Low loss | 🔷 Low loss | |
| ExecutionTag | 🔷 Low loss | 🔷 Low loss | |
| ForBlock | 🔷 Low loss | 🔷 Low loss | |
| Form | 🔷 Low loss | 🔷 Low loss | |
| Function | 🔷 Low loss | 🔷 Low loss | |
| IfBlock | 🔷 Low loss | 🔷 Low loss | |
| IfBlockClause | 🔷 Low loss | 🔷 Low loss | |
| IncludeBlock | 🔷 Low loss | 🔷 Low loss | |
| Parameter | 🔷 Low loss | 🔷 Low loss | |
| Variable | 🔷 Low loss | 🔷 Low loss | |
| Walkthrough | 🔷 Low loss | 🔷 Low loss | |
| WalkthroughStep | 🔷 Low loss | 🔷 Low loss | |
| Style | |||
| StyledBlock | 🔷 Low loss | 🔷 Low loss | |
| StyledInline | 🔷 Low loss | 🔷 Low loss | |
| Edits | |||
| InstructionBlock | 🔷 Low loss | 🔷 Low loss | |
| InstructionInline | 🔷 Low loss | 🔷 Low loss | |
| InstructionMessage | 🔷 Low loss | 🔷 Low loss | |
| PromptBlock | 🔷 Low loss | 🔷 Low loss | |
| SuggestionBlock | 🔷 Low loss | 🔷 Low loss | |
| SuggestionInline | 🔷 Low loss | 🔷 Low loss | |
| Config | |||
| Config | 🔷 Low loss | 🔷 Low loss | |
| Other | |||
| Brand | 🔷 Low loss | 🔷 Low loss | |
| ContactPoint | 🔷 Low loss | 🔷 Low loss | |
| Enumeration | 🔷 Low loss | 🔷 Low loss | |
| Grant | 🔷 Low loss | 🔷 Low loss | |
| ModelParameters | 🔷 Low loss | 🔷 Low loss | |
| MonetaryGrant | 🔷 Low loss | 🔷 Low loss | |
| Organization | 🔷 Low loss | 🔷 Low loss | |
| Person | 🔷 Low loss | 🔷 Low loss | |
| PostalAddress | 🔷 Low loss | 🔷 Low loss | |
| Product | 🔷 Low loss | 🔷 Low loss | |
| PropertyValue | 🔷 Low loss | 🔷 Low loss | |
| ProvenanceCount | 🔷 Low loss | 🔷 Low loss | |
| RawBlock | 🔷 Low loss | 🔷 Low loss | |
| Thing | 🔷 Low loss | 🔷 Low loss |
See the Rust crate codec-lexical for more details.