Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 29 21:10
    c4lliope commented #1224
  • Nov 29 21:08
    c4lliope commented #1224
  • Nov 29 20:58
    marijnh closed #1224
  • Nov 29 20:58
    marijnh commented #1224
  • Nov 29 19:45
    c4lliope commented #1224
  • Nov 29 19:38
    c4lliope edited #1224
  • Nov 29 19:37
    c4lliope commented #1224
  • Nov 29 17:54
    c4lliope edited #1224
  • Nov 29 17:42
    c4lliope opened #1224
  • Nov 26 14:47
    marijnh commented #1218
  • Nov 26 14:41
    katepol commented #1218
  • Nov 26 14:37
    marijnh commented #1218
  • Nov 26 14:14
    katepol commented #1218
  • Nov 26 09:23
    lmf commented #1223
  • Nov 26 08:38
    marijnh commented #1223
  • Nov 26 08:07
    lmf commented #1223
  • Nov 26 07:49
    marijnh commented #1223
  • Nov 26 07:49
    marijnh closed #1223
  • Nov 26 07:48
    marijnh commented #1223
  • Nov 26 02:48
    lmf opened #1223
Andrew Kirwin
@amk221
@marijnh Interesting thanks
Nicholas Vella
@vella-nicholas
@amk221 Thank you very much. I will re-read well the documentation. Thanks!
Andrew Kirwin
@amk221

If write this into Gmail compose: (don't copy from here)

Line 1

Line 3

And paste it into ProseMirror, you will get two <br> (Where line2 is)

I realised ProseMirror puts in <br> for empty paragraphs to maintain vertical rhythm but this feels like an issue?

Andrew Kirwin
@amk221
If that message wasn't clear, the output is:
Line 1


Line 3
marek-baranowski
@marek-baranowski:matrix.org
[m]

I need to implement opening in editor .docx file so that it's editable, after finishing edit it should be possible to export to .docx. Possibly with minimal losses in consistency between next conversions.

Are there any examples available so I can take a look? Do you think converting .docx to HTML (end from HTML to .docx after editing) will work ok?

marek-baranowski
@marek-baranowski:matrix.org
[m]
there are couple converters so should be doable in theory. Does anyone have an expierience in such use case?
https://pandoc.org
(not sure yet how this excactly works) http://archieml.org/
https://github.com/Novlr/DOCX.js
https://xsweet.org/
Andrew Kirwin
@amk221
Can any body shed light on why handleDOMEvents is separate from handleClick?
Marijn Haverbeke
@marijnh
You can handle clicks through handleDOMEvents, it's just that handleClick provides some additional conveniences that are specific to clicks
Andrew Kirwin
@amk221
ty
Michael Rutter
@m-rutter
Hi, trying to design something that allows users to to author a snippet which gets serialised to a database somewhere, and then allows users to apply that snippet to existing documents. I'm just trying to navigate the data types of prosemirror to identify what I likely need. If I had to guess I would need to either serialise/deserialise a Tranactions, Transform, or EditorState, and then somehow apply that to an existing document via the Editorstate apply/applytractions methods
Marijn Haverbeke
@marijnh
You probably want to serialize a Slice, and use Transaction.replace or Transaction.replaceSelection to insert it.
Michael Rutter
@m-rutter
@marijnh thanks
Michael Rutter
@m-rutter
Say I have a Slice that has nodes tied to a specific schema
and I want to replace all of those nodes with something else, what would I need to do? It doesn't seem like I can perform a transaction on Slice
I can get a flat list of the nodes via descendents callback on the Fragment content on the slice, but I'm not sure how to replace content
for some context, I have a tool that allows authors to create snippets for later insertation into another document that need to be serialized to the database. Some of the custom nodes on the document are essentially variables that I want to identify and replace
effectively, I'm creating a template
Marijn Haverbeke
@marijnh
A recursive function that runs through the slice's fragment, building up a new tree and returning that, seems like the way to do that.
Michael Rutter
@m-rutter
Are you suggesting doing that in its serialized or deserialised form?
I'm guessing deserialised Slice or Fragment I'm guessing you are suggesting I build a second fragment recurively calling appendChild or append, and computing a new fragment on each step?
Or if its serialised JSON mutating a copy the tree in place as I step through the tree?
Michael Rutter
@m-rutter
first time using prosemirror, and quite liking it
Marijn Haverbeke
@marijnh
Both work. I'd just build up the children on a given level as an array, and then call Fragment.from to create the fragment.
Andrew Kirwin
@amk221

I'm trying to write a test that interacts with a prosemirror instance. It is using Ember's test helper e.g. await fillIn('.ProseMirror', '<p><a href="#">test</a></p>');. (this is essentially the same as setting .innerHTML).

With the goal of acceptance testing, a round-trip through parseDOM to make sure the markup generated is as expected.

But this doesn't work - the result is just <p>test</p>. Where did the mark go?

This is reproducible on the demo on the Prosemirror website if you use the dev tools to edit the HTML. Sometimes it works, others it doesn't, I can't seem to find a pattern.

What's going on here and what's the best way to achieve this?

I could of course use ProseMirror commands, but then that is not testing our application as if a user was interacting with it.

ravi7mech
@ravi7mech
Hi
ravi7mech
@ravi7mech
I have successfully integrated the https://github.com/benrbray/prosemirror-math, with https://www.npmjs.com/package/ngx-editor. But when I try to insert the latex using the insertMathCmd(https://github.com/benrbray/prosemirror-math/blob/master/src/commands/insert-math-cmd.ts), The data is not updating in view(or i don't know how to pass the data to that command). Actually, it returns the NodeType instance... But dont how to write the data in view using that? Can anybody help me with this?
Marijn Haverbeke
@marijnh
@amk221 Does this reproduce when you directly call DOMParser methods to parse? What does the fromDOM for your link mark look like? I can't reproduce this on the demos
I'll take a look at the fromDOM 👀
edit wait, do you mean parseDOM :)
Andrew Kirwin
@amk221
thanks yeh I think it was that, I needed to provide a title for it to work
Andrew Kirwin
@amk221
Quick Q - how come the list schema uses order which then maps to the start attribute? Wouldn't it make more sense to call it start?
Is there something else going on here that I'm no aware of?
Marijn Haverbeke
@marijnh
That descend from terminology used in markdown-it, which I later realized is kind of quicky, but it doesn't seem a big enough deal to cause a breaking change for at this point.
Andrew Kirwin
@amk221
Ok thanks 👍🏻
Andrew Kirwin
@amk221

Hi all, I'm still battling with the kludge line breaks.

As I understand it, they are added to a node to make that node visible - so the cursor can land in it (otherwise it would collapse).

What I don't understand is why it is added when there is already content there, preventing such a collapse.

It seems (to me at least) to create more problems than it solves in this scenario.

Our prosemirror instance supports quite a broad range of HTML nodes and styles, and no matter how hard I try, whatever I paste into ProseMirror, it never looks like the source it was copied from.

Can anybody help?

Marijn Haverbeke
@marijnh
It only adds the extra nodes to non-empty blocks when they end in an uneditable node, because otherwise the browser (often, depending on the situation and browser) won't let you put your cursor after that.
As for the pasting problem, I don't think that has much to do with the hack nodes.
Andrew Kirwin
@amk221

Thanks for the response, but I still must be missing the point!

Here is a screencast example: https://share.getcloudapp.com/jku4WGzm

In it, I:

Notice how the kludge br means the pasted HTML does not visually match where it was copied from. (It creates a space underneath the icons)

How can I get it to render the same as the serialized HTML?

Andrew Kirwin
@amk221

I've narrowed it down to something to do with:

<img class="ProseMirror-separator" />
<br>

...when inside a table:
Instructions for reproducing here: https://jsfiddle.net/amk221/L2mqevax/

Andrew Kirwin
@amk221
I'm hoping to raise an issue, with your approval Marijn
Marijn Haverbeke
@marijnh
I don't think there is an issue. The HTML in the editor will look different from the plain document HTML, if you don't add a kludge for this to your serializer. And that's okay—it's a semantic editor, not microsoft word.
Andrew Kirwin
@amk221

Ok thank you I undertsand that :thumbsup: Ignoring my screen cast though, did you try the js fiddle?

I'm not sure if it's something that should be fixed in prosemirror-tables or prosemirror-view.

Andrew Kirwin
@amk221
(an img with no src, followed by a br in a td seems to be behaving oddly)
Marijn Haverbeke
@marijnh
The bug tracker might be better for this kind of thing. I still don't understand what the problem is or how you could manage to copy a ProseMirror-separator node (copying from the editor should not include those), nor how the table plugin could be involved in the pasting of <img> and <br> nodes.
Andrew Kirwin
@amk221
Oh no I didn't copy it, it gets created when pasting
Andrew Kirwin
@amk221
I understand whats going on now. addHackNode is used when a node is a block level element and contains only inline content. But, crucially - if one of those inline elements has a style that turns it in into block level element the hack node will apply when it doesn’t need to.
Andrew Kirwin
@amk221
:) So it's not to do with tables, it just happens that that's how discovered it.
Could ProseMirror could use getComputedStyle to check for genuinely inline elements? instead of using the schema?
Marijn Haverbeke
@marijnh
Okay, I think I see what you're doing now, but my suggested solution would be to not do that. If your images are blocks, define them as block nodes in the schema. If they are inline, make sure they are styled to be inline as well. The correspondence between schema block/inline nature and styling is just an assumption the library makes.
Andrew Kirwin
@amk221
Thanks for baring with me on that one!
Would you consider adding a class name to the hack <br> element, in the same way that you do for the hack <img class="ProseMirror-separator"> element. That would help distinguish them.
Marijn Haverbeke
@marijnh
I guess we could do that. Do you intend to hide them with CSS somehow? A PR that adds this should be noncontroversial.
Andrew Kirwin
@amk221
Yes, that would be great. I could do that,
Do you have any idea what such a class name would be acceptable?
Marijn Haverbeke
@marijnh
I'd go with "ProseMirror-trailingBreak"