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.lexical
Implementation
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.