Comments (1)
#4735 (comment)
Lexical team didn't want to expose data-gutter
on purpose ...
There was a PR to replace data-gutter
but found out not working on Firefox or Safari so PR just got closed (#4743).
Anyway, here is my workaround with HTMLconfig
:
// html-config.ts
import { $isLineBreakNode, type HTMLConfig } from 'lexical';
import { CodeNode } from '@lexical/code';
import { addClassNamesToElement } from '@lexical/utils';
// https://github.com/facebook/lexical/releases/tag/v0.12.3
// referenced an internal function updateCodeGutter in @lexical/code
// to keep 'data-gutter' on exported html.
export const htmlConfig: HTMLConfig = {
export: new Map([
[
CodeNode,
(editor, node) => {
// TODO: remove assertion to CodeNode after lexical fixes the type for parameter
// https://github.com/facebook/lexical/pull/5507
const codeNode = node as CodeNode;
const element = document.createElement('pre');
addClassNamesToElement(element, editor._config.theme.code);
element.setAttribute('spellcheck', 'false');
const language = codeNode.getLanguage();
if (language) {
element.setAttribute('data-highlight-language', language);
}
const children = codeNode.getChildren();
const childrenLength = children.length;
let gutter = '1';
let count = 1;
for (let i = 0; i < childrenLength; i++) {
if ($isLineBreakNode(children[i])) {
gutter += '\n' + ++count;
}
}
element.setAttribute('data-gutter', gutter);
return { element };
},
],
]),
};
// Editor.tsx
import { htmlConfig } from './html-config';
function Editor() {
const initialConfig: InitialConfigType = {
// .. other configs
html: htmlConfig,
};
return (
<>
<LexicalComposer initialConfig={initialConfig}>
// ...
from lexical.
Related Issues (20)
- How to keep formatting between lines? HOT 7
- Bug: Unable to use toolbar on Android. How can I disable the context menu on text selection? HOT 1
- Selection breaks when table is the last node HOT 1
- Bug: Duplication of input text in setting styles that occurs when Japanese IME is inputed and on iOS devices
- Bug: App breaks while writing into table and Convert into after inserting the table
- Bug: Key Combination Breaks Text Editor Within List Items
- Bug: The selection changes unexpectedly when changing font family (or anything using inline style)
- Bug: codesandbox for simple setup on docs landing page is not found
- Feature: 🤖 LLM search (ChatGPT) in Docs
- Bug: UpdateListener with debounce HOT 3
- Bug: Change text alignment in multiple cells
- Bug: Deleting selected text node not working on Android (Chrome) HOT 1
- Bug: Header becomes a numbered list HOT 2
- Bug: TypeError: Class constructor TextNode cannot be invoked without 'new' HOT 11
- Bug: If editable is false, $setSelection doesn't update the visual highlight of selection in page
- Bug: Indenting a DecoratorNode (ie TweetNode) causes exception and makes editor unresponsive.
- Bug: cursor size does not align with font-size
- Bug: Using AOSP-based keyboards on Android is very broken HOT 1
- Bug: Full table selected after cells copy/paste
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
after export to html
from lexical.