Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Markdown Code/CodeBlock -> Lexical doesn't work #9138

Open
AnzeKop opened this issue Nov 12, 2024 · 2 comments
Open

Markdown Code/CodeBlock -> Lexical doesn't work #9138

AnzeKop opened this issue Nov 12, 2024 · 2 comments
Labels
status: needs-triage Possible bug which hasn't been reproduced yet v3

Comments

@AnzeKop
Copy link

AnzeKop commented Nov 12, 2024

Describe the Bug

We have some old string MD files where we have a lot of code examples.

Either using single line small Code sections
like so

or CodeBlocks

const like = "so"

Using

  const yourEditorConfig = {
    ...defaultEditorConfig,
    features: [...defaultEditorFeatures],
  }

  const yourSanitizedEditorConfig = await sanitizeServerEditorConfig(
    yourEditorConfig,
    payloadConfig,
  )

  const headlessEditor = createHeadlessEditor({
    nodes: getEnabledNodes({
      editorConfig: yourSanitizedEditorConfig,
    }),
  })

  headlessEditor.update(
    () => {
      $convertFromMarkdownString(ContentPart1, [
        ...yourSanitizedEditorConfig.features.markdownTransformers,
      ])
    },
    { discrete: true },
  )

The code parts of the md file just get converted to strings. If we add in the CODE export from '@lexical/markdown' we get the correct nodes but then payload isn't able to interprete these so it errors out. I'm guessing we'd need to build a custom lexical feature but this should really be covered out of the box.

Link to the code that reproduces this issue

You can reproduce with the above

Reproduction Steps

  1. copy paste whats above.

  2. Thats it

Which area(s) are affected? (Select all that apply)

plugin: richtext-lexical

Environment Info

Beta Payload, Latest next, react 19
@AnzeKop AnzeKop added status: needs-triage Possible bug which hasn't been reproduced yet v3 validate-reproduction labels Nov 12, 2024
Copy link

Please add a reproduction in order for us to be able to investigate.

Depending on the quality of reproduction steps, this issue may be closed if no reproduction is provided.

Why was this issue marked with the invalid-reproduction label?

To be able to investigate, we need access to a reproduction to identify what triggered the issue. We prefer a link to a public GitHub repository created with create-payload-app@beta -t blank or a forked/branched version of this repository with tests added (more info in the reproduction-guide).

To make sure the issue is resolved as quickly as possible, please make sure that the reproduction is as minimal as possible. This means that you should remove unnecessary code, files, and dependencies that do not contribute to the issue. Ensure your reproduction does not depend on secrets, 3rd party registries, private dependencies, or any other data that cannot be made public. Avoid a reproduction including a whole monorepo (unless relevant to the issue). The easier it is to reproduce the issue, the quicker we can help.

Please test your reproduction against the latest version of Payload to make sure your issue has not already been fixed.

I added a link, why was it still marked?

Ensure the link is pointing to a codebase that is accessible (e.g. not a private repository). "example.com", "n/a", "will add later", etc. are not acceptable links -- we need to see a public codebase. See the above section for accepted links.

Useful Resources

@AnzeKop
Copy link
Author

AnzeKop commented Nov 14, 2024

Like i suspected. this fixes it

import { CodeNode } from '@lexical/code'


  const headlessEditor = createHeadlessEditor({
    nodes: [
      ...getEnabledNodes({
        editorConfig: yourSanitizedEditorConfig,
      }),
      CodeNode,
    ],
  })
        if (node.type === 'code') {
          console.log(node)
          return <Code key={index} code={node.children[0].text} language={node.language} />
        }

This should be standard in the payload package

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: needs-triage Possible bug which hasn't been reproduced yet v3
Projects
None yet
Development

No branches or pull requests

1 participant